| Linux Loadlin 啟動法 來源:石頭閒語 |
Loadlin 是一個 DOS 工具,可以從 DOS 環境下,啟動 Linux。
大部份的 Linux 套件應該都有提供這個工具,不需要另外安裝。
用法如下:
C:> loadlin <kernel_image> [options of loadlin] [options of kernel...]
kernel_image 是要 Loadlin 載入的 Linux 核心檔,後面可接傳給 Loadlin 本身的選項,
以及傳給 kernel 的選項。
由於 Loadlin 是運作在 DOS 環境下的,所以必須先將 kernel 放在 DOS 分割區中,
Loadlin 才有辦法載入。例如我有兩個 kernel ,我將其複製到 DOS 分割區中,
路徑分別為 C:\Linux\vmlinuz0 和 C:\Linux\vmlinuz1,我要以 vmlinuz0 為 kernel
來啟動 Linux 時,可以這樣下指令:
C:> loadlin C:\Linux\vmlinuz0
此時,會載入 vmlinuz0 ,並依其預設內容載入 root filesystem ,如果想指定 root filesystem
的分割區,可以用傳給 kernel 的選項 'root=xxx' 去指定,如:
C:> loadlin C:\Linux\vmlinuz0 root=/dev/hdb1
ps. 啟動 kernel 的選項請看 'The Linux BootPrompt-HowTo' 或是 CLDP 上的中譯版。
看到這裡,就可以用 loadin 從 DOS 下啟動其他分割區 的 Linux 系統了,不需要重新開機。
如果是 Win95/98 的話,則必須將系統重新啟動在 MS-DOS 模式下才可。
接著,我要說明,我如何利用 Loadlin 啟動 Embedix Linux ,並讓其在 RAM disk 上運作。
要做到這點,必須使用三個 kernel 的啟動選項:root, ramdisk_size, initrd,
在 initrd 的文件中,有這一方面的詳細說明,這裡就簡單說了。
root 是指定 root filesystem 所在的分割區,但若指定為 /dev/ram ,並配合 initrd 的設定,
就可將 root filesystem 放入 RAM disk 中。
當 root 設定為 'root=/dev/ram' 時,initrd 可指定要載入的 root filesystem image ,
並將其載入 RAM disk 中。
ramdisk_size 就是用來指定 RAM disk 大小的選項了,用 10 進位值表示,基本單位為 1 K,
一般的預設值是 4096KB 。
至於 root filesystem image 的建立方式只作簡單說明。
我先將 Embedix Linux 安裝在一個空的分割區上(假設為 /dev/hdb3 ),再用一般的方式啟動
Embedix Linux ,修改裡面的設定,確定它的內容後,就可以開始製作 root filesystem image。
由於 Embedix Linux 不支援任何 FAT 的檔案系統,我是以另一套安裝在硬碟上的 Slackware Linux
啟動電腦,接著,我以下列動作製作 Embedix Linux 的 root filesystem image :
$ dd if=/dev/zero of=/dev/ram0 bs=1k count=12288
$ mkfs /dev/ram0
$ mount /dev/hdb3 /mnt/embedix
$ mount /dev/ram0 /mnt/rfs
$ cp -dpR /mnt/embedix/* /mnt/rfs
$ dd if=/dev/ram0 bs=1k count=12288 | gzip -9 > /tmp/embedix.gz
為了減少 root filesystem image 的大小,我是先將 Embedix Linux 裝在 /dev/hdb3
上的所有檔案,複製到 RAM disk 上,讓資料內容連續放置,再用 dd + gzip 將
RAM disk 上的內容 dump 及壓縮起來,存成檔案 embedix.gz ,這就是 Embedix Linux
的 root filesystem image。
接著將 Embedix Linux 的 kernel 及 root filesystem image 都複製到 DOS 分割區上,
假設放在:
- kernel: C:\Linux\Embedix\vmlinuz
- root filesystem image: C:\Linux\Embedix\embedix.gz
接下來,只要用下列的 Loadlin 指令,就可以將 Embedix Linux 載入 RAM disk 上運作了。
C:> loadlin C:\Linux\Embedix\vmlinuz root=/dev/ram rw ramdisk_size=16384
initrd=C:\Linux\Embedix\embedix.gz
由於 Embedix Linux 全部也就 10MB 的容量而已, RAM disk 的大小設為 16MB 也就綽綽有餘了。