歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux業界

動手制做自己的一張軟盤大小的Linux(2)

3. 選擇內核

  在你完成了制做壓縮的根文件系統後,下一步就是選擇或自己創建一個內核。多數情況下,你可以拷貝現有系統的內核,但是有些情況下,你不得不自己另外創建一個。最可能出現的問題就是容量限制:如果你想做單張的啟動盤,盤中最大的文件往往是內核,所以你必須想方設法壓縮內核的體積。要想壓縮內核體積,創建它時就得把不必要的功能去掉,如去掉對網絡的支持和對不必要設備的支持,但是一定要記住保留內核對R AMDISK和ext2的支持,否則你的啟動盤將不能工作。還有就是要記住把對你備份所用設備的支持加到內核中去,因為啟動盤的最大用處就是檢測和修復損壞的系統,如果你沒有把對備份設備的支持加到內核中去,你將沒有辦法修復損壞的系統,只能再重裝L inux。
  創建新內核的方法我就不在此敘述了,如有問題,請查閱相關資料。重建完內核後記住用“make zImage”壓縮內核。

4. 整合

  有了根文件系統和內核之後,最後的工作就是把它們整合在一起。
  先檢查總文件的大小,如果超出1.44M,就得考慮重新創建所需或用兩張磁盤,即使用兩張磁盤,你的根文件系統也得小於1.44M。
  接著就是確定是用LILO控制啟動還是直接用拷貝到盤上的內核控制啟動。用LILO的好處是你能增加支持初始化硬件的參數到內核中,缺點是較復雜且占用珍貴的磁盤空間,不過我還是建議使用L ILO控制系統啟動。下面我就介紹用LILO的過程,直接用拷貝到盤上的內核控制啟動的方法就不作敘述了。
  用LILO控制啟動首先就得寫一個LILO配置文件,以下是一個最簡單的配置文件,但是已經夠用了。
  boot =/dev/fd0
  install =/boot/boot.b
  map =/boot/map
  read-write
  backup =/dev/null
  compact
  image = KERNEL
  label = Bootdisk
  root =/dev/fd0
  參數說明見相關資料。然後把它命名為bdlilo.conf。 
  接下來就是創建一個內核文件系統。把一張干淨的軟盤插入軟驅,在上面創建ext2文件系統。
  mke2fs -i 8192 -m 0 /dev/fd0 50
  “-i 8192”表示每8192位創建一個信息節點。接著登陸系統:
  mount /dev/fd0 /mnt
  rm -rf /mnt/lost+found
  mkdir /mnt/{boot,dev}
  刪去目錄/ lost+found,創建兩個目錄/boot和/dev。
  再拷貝現有系統中的到目錄/dev中,
  cp -R /dev/{null,fd0} /mnt/dev
  接著拷貝啟動加載器boot.b到目錄/boot中,
  cp /boot/boot.b /mnt/boot
  最後,拷貝你創建的配置文件bdlilo.conf和內核到內核文件系統的根目錄下,
  cp bdlilo.conf KERNEL /mnt
  現在,根文件系統所需所有文件都准備就緒了,你可以運行它了,運行結果應該沒有錯誤,否則就應該仔細檢查一下。最終的文件目錄應該如下所示:
--------------------------------------------------------------------------------
  total 361
  1 -rw-r--r-- 1 root root 176 Jan 10 07:22 bdlilo.conf
  1 drwxr-xr-x 2 root root 1024 Jan 10 07:23 boot/
  1 drwxr-xr-x 2 root root 1024 Jan 10 07:22 dev/
  358 -rw-r--r-- 1 root root 362707 Jan 10 07:23 vmlinuz
  boot:
  total 8
  4 -rw-r--r-- 1 root root 3708 Jan 10 07:22 boot.b
  4 -rw------- 1 root root 3584 Jan 10 07:23 map
  dev:
  total 0
  0 brw-r----- 1 root root 2, 0 Jan 10 07:22 fd0
  0 crw-r--r-- 1 root root 1, 3 Jan 10 07:22 null

  接著設置內核鏡像文件中的ramdisk的偏移量以指出如何確定定位根文件系統。該指示詞可以通過命令rdev來設置,它的內容含義如下所示:
  bits 0-10: ramdisk開始的偏移量, 在1024 byte數據塊中
  bits 11-13: 不用
  bit 14: ramdisk加載的提示標記
  bit 15: 加載根文件系統之前提示標記
  如果位15被設置,當系統盤啟動時將會提示你准備好另一張軟盤,如果你的啟動盤是兩張的話,這個設置很有用。
  對於使用單張和兩張啟動盤的用戶,ramdisk的偏移量是不同的:

如果你的啟動盤只有一張,那麼壓縮的根文件系統會被放置在內核之後,因此偏移量將會是第一個空閒的數據塊,bit 14 應設置為1,bit 15設置為0。例如,如果你的啟動盤根文件系統起始於數據塊253(十進制),你的ramdisk偏移量應該是253 + 214 = 253 + 16384 = 16637。

如果你的啟動盤有兩張,那麼你的根文件系統起始於第二張盤的0數據塊,所以偏移量是0,bit 14 應設置為1,bit 15應設置為1,最終值為
214 + 215 = 49152。
  計算好偏移量後,用命令rdev –r進行設置,記住用十進制:
  rdev -r /mnt/vmlinuz 偏移量
  設置完後,從/mnt卸下軟盤。

  最後一步是傳輸根文件系統,分兩種情況:
·如果你的內核於根文件系統在同一張軟盤上,用加選項seek的命令dd傳輸,dd if=rootfs.gz of=/dev/fd0 bs=1k seek=內核數據塊數。
·如果根文件系統位於第二張軟盤上,移走第一張軟盤,插入第二張盤,然後傳輸根文件系統dd if=rootfs.gz of=/dev/fd0 bs=1k。

  祝賀你,你的系統啟動盤已經做好了,剩下的就是測試你的啟動盤的正確性了,如果有問題,對不起,你還得從頭再來。
  現在許多Linux的發行套件中都有廠家做好的啟動盤,它們的制做原理和以上我介紹的大同小異,但是它們常常用許多不同的技巧,因為它們要面對更多的硬件和各種可能發生的情況。大家可以拿一張來慢慢研究,你會從中學到很多知識。
  最後祝大家都能作出一張稱心如意的啟動盤,讓你的linux永保青春。




Copyright © Linux教程網 All Rights Reserved