
我一直在關注從頭開始建立一個最小的 Linux 系統為了建構一個佔用空間較小(10MB 或更小)的 Linux。
我相當確定直到最後一點為止都沒有錯誤,我實際上正在使用命令測試圖像qemu-system-i386 -L . -hda minux.img
#
我並沒有像教程所示那樣實際啟動到提示符,而是看到了 Grub Rescue 提示符。為了嘗試啟動,我使用了kernel /boot/kernel_name
then boot
,它最終失敗並顯示:
我的grub.conf
如下,與教程中的相同:
default 0
timeout 30
title Minux
root (hd0,0)
kernel /boot/vmlinux-2.6.21-1 root=/dev/hda1 rw
到目前為止,我設法找到的唯一區別是在 中fdisk
,我的起始扇區是 2048,因為這是我可以使用 fdisk 設定的最小值,因此偏移量更大。另一個區別是我使用的是 x86_64-pc grub,而我的一些 busybox 庫的命名不同,但這不應該幹擾啟動。
我怎樣才能修復這個程式以使我的Linux工作?或者有沒有更好的方法來製作 10MB 以下的 Linux 發行版?
答案1
讓我嘗試回答關於製作小型系統的第二個問題。因為我們是在 x86 上建造的,所以我想我們的目的是讓系統能夠啟動閃存驅動器,而不是燒錄到嵌入式晶片中,這是一個非常不同的故事。
考慮刪除磁碟映像並使用 cpio initramfs 。然後像這樣啟動。
qemu-system-i386 -kernel vmlinuz -initrd root.cpio.gz
我喜歡這個,因為我們有更多的靈活性,並且不必與磁碟位置混淆。
我也建議grub4dos引導程式。儘管名稱中包含“dos”,但它可以從 linux 安裝並引導 linux 核心。安裝很簡單,只需編寫一個 mbr 並將一個 213k 檔案複製到任意分區。 grub4dos 可以辨識許多檔案系統。
另外,在你的配置中,你似乎沒有正確設定grub,因為有一個救援控制台顯示 .即使您應該kernel /boot/kernel_name
在 之前輸入“root=” boot
。
在我的機器上,qemu 來賓核心將磁碟映像識別為“/dev/sda”而不是“/dev/hda”。