最近兩天在給 AOSC/Retro 研究怎麼把現代 Linux Kernel (5.4.114 LTS) 塞進軟碟開機,原因是許多 486 等級的機器並沒有辦法直接從 CD-ROM 啟動,於是然後我做到了把 PATA (IDE) 硬碟/光碟機驅動,甚至是 Network Stack(盡量把大多數非必要 Driver 弄成 Module,放進搭配的 CD image)塞進 1108KiB 的 bzImage。還有個 150KiB 的 Initramfs,裡面是 busybox 和配套 init script,用來自動掛載 CD-ROM。

有趣的事情來了,SYSLINUX 這個 Bootloader 尺寸太大 (175KiB),讓我很難塞東西,於是我拿 FreeDOS 的 KERNEL.SYS (46KiB) 加上 loadlin.exe (原始 42KiB,用 upx 壓縮後 11KiB) 取代它,成功省下 100KiB 以上。

最終成果是可以直接從軟碟啟動,並且只須要 8MiB 記憶體就能成功啟動。

Follow

然後在搞懂 LILO 如何裝在 loopback 上(需要手動指定 Disk Geometry,以及裝置類型)之後,用 LILO 替換了 KERNEL.SYS + loadlin.exe 這個組合,又省出 50KiB 左右的空間。

結論:果然 SYSLINUX 太大了,不過 LILO 也真的很厲害。

· · Web · 0 · 0 · 0
Sign in to participate in the conversation
Mastodon

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!