私が見たことがあるPC164LX/PC164SXを搭載したシステムは、電源スイッチ付きのATX電源ユニットを搭載しています。
しかし、通常のATX電源ユニットを使用することも可能です。この場合、Soft power connectorにATX電源スイッチを接続します。
なお、PC164(無印)には、Soft power connectorがないため、電源スイッチ付きのATX電源ユニットが必要です。ちなみに、電源コネクターの14番ピンもNCになっています。
Alphaの古い機種には、リアルタイムクロックICを搭載したものがあります。DEC/Compaq/HP/HPEでは、「Dallas Chip」と呼んでいるようです。
このICは、NVRAM同様、電池を内蔵しているため、内蔵している電池が切れると、機器に問題が発生することがあります。内蔵電池が切れた場合、代替の後継製品が販売されているので、これを入手して交換することが可能です。また、こちらもNVRAM同様、電池を外付けする改造をして対応することも可能です。
私の確認した機種では、IC交換前は電源は入るが起動しないという機器が、IC交換後は起動するようになりました。
なお、一部機種では、ICが基板に直接はんだづけされており、交換が簡単にはできません。私ははんだづけ業者に依頼して、ICソケット化(既存ICの取り外しとICソケットの取り付け)を実施してもらい、自前で用意したICを取り付けました。
私が確認した機種は下記の通りです。
機種 | チップ型番 | チップ取付基板 | ICソケット有無 | 交換後のチップ型番 |
---|---|---|---|---|
DEC3000 model 700 | DS1287(実機。ドキュメント上はDS1287A) | I/Oボード | あり | DS12887+ |
Alpha XL 266 | DS12887A | システムボード | あり | DS12887A外付け電池化改造品 |
PC164UX | DS12887 | 本体(システムボード) | なし | DS12887A外付け電池化改造品 |
DEC3000 model 600/700の注意点として、ICが真ん中のTURBOchannelスロットの下に実装されているためにチップの上のすき間がほとんどないので、外付け電池化したチップに交換する場合、チップの上に電池(ケース)を取り付けるのは不可能です。真ん中のTURBOchannelスロットを使用しないのであれば、問題はありません。
ICの購入先ですが、私は、DS12887+をMouser、DS12887A+をDigiKey、DS12887A外付け電池化改造品はeBayで購入しました。
Alpha XLやPC164UX(Ruffian)は、ARC/AlphaBIOS/ARCSBIOS専用機なので、MILOが必要です。しかし、オリジナルのMILOは、古い(おおむね2000年代前半以前の)Linuxディストリビューションのkernelは起動できますが、最近のディストリビューションのkernelは起動できません。
このため、最近のディストリビューションのkernelに対応するMILOを作成する必要があります。
具体的には、下記2点が主な変更点です。
私の環境では、この変更を適用して作成したMILOで、Gentoo LinuxおよびDebian GNU/Linuxが起動できました。
以下に、この変更を施したMILOの作成方法を記載します。なお、情報のご利用にあたっては、内容をご自身でご確認の上、使用の可否を判断してください。
パッチを作成するにあたり、Gentoo Linuxの成果物および abootを参考にさせていただきました。 Gentoo Linuxの開発者の皆さん、abootの開発者の皆さんに感謝いたします。
古いツールチェーン、すなわち、古いLinuxディストリビューションが必要です。また、uudecode(1)が必要なため、sharutilsパッケージをインストールしてください。
MILOに含まれるtools/scripts/buildスクリプト使用して、すべての機種のMILOを作成します。
下記のソースコードおよびパッチを使用します。
種別 | ファイル名 | 入手先 |
---|---|---|
Linux kernel v2.2 | linux-2.2.25.tar.bz2 | kernel.orgのミラーサイト |
kernelパッチ | linux-2.2.25-gcc3-milo.diff | gentoo-portageのミラーサイトのsys-boot/milo/files/ |
linux-2.2.20-reiserfs-3.5.35.diff.bz | Gentoo Linuxのミラーサイトのdistfiles/47/ | |
objstrip.c | gentoo-portageのミラーサイトのsys-boot/milo/files/ | |
MILO | milo-2.2-18.tar.bz2 | Gentoo Linuxのミラーサイトのdistfiles/d1/ |
MILOパッチ | milo-2.2-18-gcc3.diff | このサイト |
milo-2.2-18-gcc3-2.diff | このサイト | |
milo-2.2-18-ELF.diff | このサイト | |
milo-2.2-18-memory.diff | このサイト |
gentoo-portageのミラーのトップディレクトリーは、Gentoo Linuxのミラーのトップディレクトリーと同じ階層にあることがほとんどです。ただし、Gentoo Linuxのミラーサイトのすべてに、gentoo-portageのミラーがされているわけではないため、ミラーされていなかった場合、他のミラーサイトから入手してください。
パッチによる変更内容は、下記の通りです。(MILOのみ記載)
ファイル名 | 変更内容 | 備考 |
---|---|---|
devices.c | gcc3対応 | Gentoo由来 |
Documentation/defconfig.milo | フォント対応。デバッグ有効化 | フォント対応はGentoo由来 |
tools/scripts/build | バージョン修正 | |
boot.c | ELFのプログラムヘッダー対応 | aboot由来 |
Makefile | サイズの大きなkernel対応 | |
milo.h | サイズの大きなkernel対応 |
私は、Personal Workstation 600aおよびPC164UXで作成しました。環境は、下記の通りです。
MILOのソースとパッチを/rootに、Linux kernelソースとパッチを/usr/srcにおくとして、以下の手順で作成します。全機種のMILOがbinaries/に作成されます。なお、/usr/src/linuxがすでに存在する場合、退避しておいてください。
# cd /root
# tar jxf milo-2.2-18.tar.bz2
# cd milo-2.2-18
# patch -p1 < ../milo-2.2-18-gcc3.diff
# patch -p1 < ../milo-2.2-18-gcc3-2.diff
# patch -p1 < ../milo-2.2-18-ELF.diff
# patch -p1 < ../milo-2.2-18-memory.diff
# cd /usr/src
# tar jxf linux-2.2.25.tar.bz2
# mv linux linux-2.2.25
# ln -s linux-2.2.25 linux
# cd linux
# patch -p1 < ../linux-2.2.25-gcc3-milo.diff
# bzip2 -d < ../linux-2.2.20-reiserfs-3.5.35.diff.bz2 | patch -p1
# cd /root
# cd milo-2.2-18
# cp Documentation/config/linux-2.2.19-SuSE.config /usr/src/linux/.config
# cd /usr/src/linux
# yes n | make oldconfig
# make dep
# make vmlinux
# cd ..
# cp objstrip.c /usr/src/linux/arch/alpha/boot/tools/
# gcc /usr/src/linux/arch/alpha/boot/tools/objstrip.c -o /usr/src/linux/arch/alpha/boot/tools/objstrip
# cd /root
# cd milo-2.2-18
# cd tools/common
# make
# cd ../..
# tools/scripts/build
tools/scripts/buildの実行には、Personal Workstation 600a、PC164UXとも、24分程度かかりました。
作成したMILOは、以下の機種でLinux kernelが起動することを確認しました。
機種 | ファームウェアバージョン |
---|---|
Personal Workstation 600a(MX5。MiataGLではない) | AlphaBIOS v5.70 |
PC164UX | ARCSBIOS v1.3.062 |
Alpha XL 266 | ARC v4.59 |
以下のインストールメディアの起動を確認しました。
インストールメディア名 | 備考 |
---|---|
Gentoo Linux install-alpha-minimal-20230907T160230Z.iso | lsa/nolsa kernelとも。PC164UXはPATA使用不可。Alpha XL 266は、kernelの起動することまで確認(起動後、panicで落ちる) |
Debian GNU/Linux debian-12.0.0-alpha-NETINST-1.iso 2024-02-25 snapshot | インストーラーの起動まで確認。Alpha XL 266は、kernelの起動することまで確認(起動後、ハングアップする) |
また、Gentoo Linuxでは、HDDにインストールしたシステムからの起動も確認しています。
Gentoo Linuxの場合、ハンドブックに記載があります。
MILOを想定していないディストリビューションの場合、/etc/aboot.confを見て、起動方法の参考にします。
たとえば、Debian GNU/Linuxであれば、
0:boot/vmlinuz ramdisk_size=37757 initrd=/boot/initrd.gz root=/dev/ram devfs=mount,dall
1:boot/vmlinuz ramdisk_size=37757 initrd=/boot/initrd.gz root=/dev/ram devfs=mount,dall console=ttyS0
2:boot/vmlinuz ramdisk_size=37757 initrd=/boot/initrd.gz root=/dev/ram devfs=mount,dall console=ttyS1
なので、シリアルコンソールありで起動するには、2番目(インデックス1)を使って、下記のようになります。
MILO> boot hda:/boot/vmlinuz ramdisk_size=37757 initrd=/boot/initrd.gz root=/dev/ram devfs=mount,dall console=ttyS0
kernelやinitrd/initramfsをExt2ファイルシステムのパーティションにおく場合、このパーティションは、古いディストリビューションのmkfs.ext2でブロックサイズ1024Byteでフォーマットしてください。私は、SuSE 8.1でフォーマットしました。
# mkfs.ext2 -b 1024 -i 1024 -O none デバイスファイル名
最近のディストリビューションでmkfs.ext2したパーティションは、ブロックサイズを1024Byteにしても中身が見えません。問題を解決するには、abootのfs/ext2.c同様な変更が必要そうです。
nolsa kernelのKERNEL_STARTは、(かつては0xfffffc0000081000でしたが、現在は)0xfffffc0000101000なので、lsa kernelの0xfffffc0000031000より13MB分後ろにずれます。
MILOは、initrd/initramfsをLOADER_ATの直前のアドレスに読み込むので、0xfffffc0000101000からLOADER_ATの間、LOADER_AT-0xfffffc0000101000バイト以内に、kernelとinitrd/initramfsが収まらないとなりません。
最近のDebianはnolsa kernelのみで、kernelサイズ/initrdサイズは、それぞれ約24MB/16MBなので、LOADER_ATに0xfffffc0000380000(46MB分)程度必要となります。
私の試した限り、MILOをディスプレイに表示するには、ビデオカードを(PCI-PCIブリッジをかまさない)64bit PCIスロットに装着する必要があります。
DEBUG_SETTINGS=y
の行からの16行を、下記1行に変更してビルドしてください
# DEBUG_SETTINGS is not set
自前でインストールCDを作成するには、Gentoo Linuxが提供するcatalystを使用します。catalystはインストールCDだけでなく、stage tarballも作成可能です。
クロスコンパイルが可能なので、amd64アーキテクチャーなど、高速なマシンで作成することが可能です。なお、alphaアーキテクチャーはクロスコンパイルが標準です。
catalystの使用方法は、こちらに記載があります。
また、インストールCDの作成方法については、こちらに記載があります。stage1とstage2を実施する必要があります。
私はamd64上でインストールCDの作成を行いました。以下に、主な変更点および注意点を記載します。
emergeに渡すcatalyst.confのjobsやload-averageを環境に応じて設定します。
クロスコンパイル環境の構築は、こちらの内容にしたがいます。chroot環境はcatalystが提供するので、3.Usage以降は行う必要はありません。
installcd-stage1.specの変更点は、以下の通りです。なお、git clone -o upstream https://github.com/gentoo/releng.gitは、/var/tmp/catalystで実行しています。
version_stamp: YYYY-MM-DD
snapshot_treeish: 「catalyst --snapshot stableのcommit reference name」
source_subpath: default/stage3-alpha-openrc-latest
portage_confdir: /var/tmp/catalyst/releng/releases/portage/isos-qemu
alphaアーキテクチャーでは、すべてのパッケージにstableがつかないため、emergeでは通常、最新バージョンのパッケージがインストールされます。インストールCDの作成時も内部的にemergeが呼び出されているため、同様に最新パッケージになるので、特定のバージョンが必要なパッケージにはmaskの設定など行います。
パッケージ毎のUSEフラグやmaskの設定は、specファイルのportage_confdirで指定したディレクトリーで行います。
ビルド対象パッケージのsys-fs/lvm2は、dev-build/autoconfのバージョン2.72でビルドできない問題があります。2.03.22-r3で対策が施されていますが、2024/4/18現在、2.03.22-r3はalphaアーキテクチャーではビルドできません。
sys-fs/lvm2は、ユーザーパッチを受け入れない、かつ、autoconfは autoconf-wrapperにより最新版が使用されてしまうため、私は、autoconf-2.71をインストールした上で、sys-fs/lvm2のemerge時に、環境変数WANT_AUTOCONFに2.71を設定しました。
releng/releases/portage/isos-qemu/package.mask/releng/autoconf
>dev-build/autoconf-2.71-r7
releng/releases/portage/isos-qemu/env/releng/lvm2
WANT_AUTOCONF="2.71"
releng/releases/portage/isos-qemu/package.env/releng/lvm2
sys-fs/lvm2 releng/lvm2
catalyst -f installcd-stage1.specを実行すると、/var/tmp/catalyst/builds/defaultにlivecd-stage1-alpha-YYYY-MM-DD.tar.xzが作成されます。
installcd-stage2-minimal.specの変更点は、以下の通りです。配布されているインストールCD同様、kernelはlsaとnolsaの2つが作成されます。
version_stamp: YYYY-MM-DD
snapshot_treeish: 「catalyst --snapshot stableのcommit reference name」
source_subpath: default/livecd-stage1-alpha-YYYY-MM-DD
portage_confdir: /var/tmp/catalyst/releng/releases/portage/isos-qemu
livecd/fsscript: /var/tmp/catalyst/releng/releases/scripts/livecd.sh
livecd/iso: /var/tmp/catalyst/builds/default/install-alpha-minimal-YYYY-MM-DD.iso
livecd/volid: Gentoo alpha YYYY-MM-DD
boot/kernel/gentoo/config: releng/releases/kconfig/alpha/installcd-4.14.83.config
boot/kernel/gentoo_nolsa/config: releng/releases/kconfig/alpha/installcd-4.14.83.nolsa.config
kernelコンフィグファイルは、boot/kernel/ラベル/configで指定したものが使用されるので、ここに指定したファイルの内容を変更するか、別途用意したファイルを使用する場合、boot/kernel/ラベル/configを変更します。
kernelソースパッケージ(上記の設定なら、デフォルトのsys-kernel/gentoo-sources)のバージョンは、maskで制御可能です。
catalyst -f installcd-stage2-minimal.specを実行すると、/var/tmp/catalyst/builds/defaultにinstall-alpha-minimal-YYYY-MM-DD.isoが作成されます。
Gentoo Linuxの公式で配布されているinstall-alpha-minimalでは、 PC164UXのIDEデバイスIntel 82371SB(PIIX)がサポートされていません。このため、ATAPI光学ドライブを使用するために、Intel 82371SB(PIIX)をサポートしたインストールメディアを作成するか、SCSI接続の光学ドライブを使用するか、など、対応する必要があります。
私は、先に記載したcatalystを用いて、Intel 82371SB(PIIX)をサポートしたkernelを含むインストールメディアを作成して、これを使用してインストールしました。インストールメディア作成時には、stage2でのkernelコンフィグファイル(installcd-4.14.83{,.nolsa}.config)で、下記のように1行変更しました。
CONFIG_ATA_PIIX=y
以下、概要です。
ARCSBIOSの設定で、Gentoo Linuxをシリアルコンソールありで起動させるには、私の環境でのOsLoadOptionsは下記になります。(kernel起動後にGentoo Linux用HDDを接続したSCSI HBAを認識するので、MILOでのHDDのデバイス名とkernelでのデバイス名は異なります。)
OsLoadOptions = boot sda3:/vmlinuz-6.6.13-gentoo-alpha initrd=/initramfs-6.6.13-gentoo-alpha.img root=/dev/sda3 console=ttyS0
しかし、この設定で起動させようとすると、OsLoadOptionsの内容が小文字に変換されてしまうため、起動に失敗します。私は、PC164UXでは基本的にシリアルコンソールを使用しているため、OsLoadOptionsの使用はあきらめ、毎回MILOのプロンプトでbootコマンドを入力するようにしました。
また、ldmilo.exeでは、MILOのファイル名がmilo固定となっているようです。これは、OS起動時にというよりも、MILOのテスト時に不便でした。
私の所有するAlpha XL 266は電源が不調で、単純に電源スイッチを押しただけでは電源が入りません。
試行錯誤したところ、電源オン後、いったん電源オフした際に、パワーインジケーターといちばん下のインジケーターが点灯するタイミングで再度電源オンすると、電源が入りました。
上記の方法で起動はできましたが、電源ユニットや他の部分への悪影響がある場合も考えられますので、この方法で電源を入れるかどうかは、ご自身でご判断ください。
当初、ARCのバージョンは4.41でした。
4.57へのバージョンアップは、Alpha Systems Firmware Update CD V5.7を使用しました。 なお、バージョンアップ後、DEC ZLXp-L1が使用できなくなりました。なお、この際、ARCがシリアルコンソールに表示されました。このため、Matrox Millennium IIに交換しました。
4.59へのバージョンアップは、FDDが不調なため、Alpha Systems Firmware Update CD V5.7のディレクトリー階層にあわせたCDを作成して、それを使用しました。具体的には、/CDROM/ALPHAXL/にfwxl2v459.zipを展開した中身をコピーしました。
公式に配布されているinstall-alpha-minimalは、MILOから起動は可能ですが、kernelがpanicで落ちます。
私は、kernelコンフィグを変更したカスタムインストールCDを作成し、これを使用してインストールしました。
stage2で使用するkernelコンフィグには、下記の2つを使用しました。公式配布のinstall-alpha-minimalのpanicの主な要因はSMPが有効になっているためのようですが、SMP以外にも無効にした項目があるため、環境によっては必要なデバイスが認識されないかもしれません。
なお、kernelソースは、sys-kernel/gentoo-sources-6.6.21を使用しています。
また、以前対応が必要だったsys-fs/lvm2は、alphaアーキテクチャーでも、バージョン2.03.22-r3以降がビルド可能になったため、対応不要です。
ただし、このインストールCDを使用しても、読み込みが不安定で、(巨大な)image.squashfsの読み込みに失敗しました。起動時パラメーターcdrootを使用したとき、CD-ROMドライブ以外のデバイスからもimage.squashfsを探す動作を利用して、SuSE 8.1の/ファイルシステムに/image.squashfsを置くことで対処しました。なお、該当ファイルシステムには、/livecdというファイルを作成(touch)しておく必要があります。
ARCの設定で、Gentoo Linuxをシリアルコンソールありで起動させるには、私の環境でのOsLoadOptionsは下記になります。(kernel起動後に2つのSCSI HBAの認識順が逆転するので、MILOでのHDDのデバイス名とkernelでのデバイス名は異なります。)
OsLoadOptions = boot sdc3:/vmlinuz-6.6.21-gentoo-alpha initrd=/initramfs-6.6.21-gentoo-alpha.img root=/dev/sda3 console=ttyS0