2019年8月に私はSing-Along Weekコンテストを開催して、MIDIファイルを歌を歌うスピーチシンセサイザーと同期させました。私の倉庫で、MQX-32M MIDIカード(Roland MPU-401クローン)を見つけました。これを使用して、MIDI信号をEcho IIスピーチシンセサイザーを備えたApple II +インターフェイスに変換しましたが、USB MIDIインターフェイスを備えたラップトップを使用することになりました。別のピザウィークコンテストで、ピザの箱に収まる486コンピューターを見つけることに興味を持ち、今ではチャンスが訪れました。
eBayでの検索は、本当に良い検索語句を思い付かなかったため、簡単ではありませんでした。このプロジェクトは優先事項ではないので、検索を保存する必要はありませんでした。その代わり、時々、何かが私にeBayに行って新しい検索を試すように促しました。数週間前、私はこの486コンピュータを見つけ、5.25インチベイの高さから判断して、ケースのサイズを推測しました。それは非常に薄く、他のカードを横に挿入するための専用カードがあり、シャーシはISAカードより短いです。ピザの箱よりも厚みがありますが、間近に迫っています!
マザーボードTMC PAT48PG4には、32MBのRAM(技術的には36MB、4つの30ピンSIM)と4つのカード(VGA、SoundBlaster、モデム、多機能I / O)が付属しています。すべてのカードは機能しましたが、POSTに合格しなかったため、売り手はコンピューターをチェックし、機能しないものとして販売しました。主にケースが必要だったので、あまり気になりませんでした。もちろん、コンピュータを入手したとき、マザーボードが本当に死んでいるかどうかを確認する必要がありました。それも私にとってはうまくいきませんでしたが、リセットボタンを押すと、いくつかのエラービープ音が鳴ることに気付きました。別の電源を試しましたが、リセットボタンを押した後にシステムが動作しました。それでも、電源ボタンを押してもコールドシャットダウンから起動しません。カバーが不良であるか、バッテリーにわずかな損傷がある(バッテリーは以前に交換された)ため、電源を入れた後にリセットラインが切断されない。しかし、彼は自分の可能性を探るのに十分な努力をしました。
私の最終的な目標は、最新の LinuxおよびPython 3ディストリビューションを「大容量」ハードドライブにインストールすることです。私たちは486コンピュータを持っているので、現在のLinuxディストリビューションのインストールは簡単な作業ではありません。フロッピーのインストールをまだサポートしている唯一のLinuxディストリビューションはかなり古くなっています。私は通常、フロッピーのインストールを完全にバイパスして、PXEを介して古いコンピューターを起動し、ネットワーク経由でシステムをインストールしました。iPXEをフロッピーに書き込んで ISA NICに挿入できると思っていましたが、フロッピーから起動した直後にiPXEがハングし、エラーメッセージは表示されません。
BIOSは古く、私が差し込んだ「大きな」ハードドライブのサポートに苦労しています。ディスクサイズは8.45 GBですが、BIOSは8.0 GBしか認識しません。 BIOSでLBAを有効にすると、ディスク検出後のPOST中にコンピューターがフリーズします。 Win98 fdiskは、ディスクが504 MBしかないと主張しています。 FreeDOSはそれを全く見ません。 NICをXTIDE ROMからソケットに接続してみましたが、XTIDEもドライブが接続されていないと主張しています。
Linuxがドライブをどのように検出するかを確認したかったので、Linuxを起動する方法を見つける必要がありました。少しグーグルで調べたところ、make tinyconfigオプションが見つかりましたこれにより、非常に小さい(しかし役に立たない)カーネルがフロッピーディスクに収まるほど小さくなります。他のいくつかのオプションをオンにしたところ、十分に小さいinitramfsが見つかり、486にロードできました。予想通り、Linuxはディスクとその全容量を問題なく認識します。
次のステップは、実際にLinuxをハードドライブにインストールすることです。自分のディストリビューションをリリースしたくないのですが、リリースする必要があるかもしれません。もう1つの可能性は、フロッピーディスクからLinuxをブートしてから、現在のディストリビューションからカーネルとinitrdをブートし、それにkexecを実行することです。しかし、それはiPXEを再発明するようなものだと感じています。
ソースからのLinuxカーネルのコンパイル
フロッピーイメージを作成する手順の概要:
- git clone git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
- v5.8-rc2-1-g625d3449788f
- make ARCH=x86 tinyconfig
- make ARCH=x86 menuconfig
- 486: CONFIG_M486=y
- Processor type and features > Processor family > 486
- tty: CONFIG_TTY=y
- Device Drivers > Character devices > Enable TTY
- printk: CONFIG_PRINTK=y
- General Setup > Configure standard kernel features (expert users) > Enable support for printk
- initramfs: CONFIG_INITRAMFS_COMPRESSION_GZIP=y
- General Setup > Initial RAM filesystem and RAM disk (initramfs/initrd) support > Support initial ramdisk/ramfs compressed using gzip
- ELF: CONFIG_BINFMT_ELF=y
- Executable file formats > Kernel support for ELF binaries
- 486: CONFIG_M486=y
- make ARCH=x86 bzImage
rootfsが必要です。AboriginalLinux イメージからsystem-image-486を取得し、rootfs.cpio.gzを抽出します。
qemuからのテストブート:
qemu-system-i386 -kernel arch/x86/boot/bzImage -initrd ../system-image-486/rootfs.cpio.gz
空のフロッピーイメージの作成:
dd if=/dev/zero of=linux-boot.img bs=1k count=1440
mkdosfs linux-boot.img
syslinux --install linux-boot.img
mount -o loop linux-boot.img /mnt
cp arch/x86/boot/bzImage /mnt
cp rootfs.cpio.gz /mnt
/mnt/syslinux.cfgの作成:
DEFAULT linux
LABEL linux
SAY Now booting the kernel from SYSLINUX...
KERNEL bzImage
APPEND initrd=rootfs.cpio.gz
フロッピーディスクにイメージを書き込む:
umount /mnt
fdformat /dev/fd0
ddrescue -f -D linux-boot.img /dev/fd0