Linux啟動盤boot/root盤的製作(轉)
boot/root盤由兩部分組成,即核心和根檔案系統。要把這兩部分都放到一個1.44MB的軟盤上去,通常要對核心和根檔案系統進行壓縮,壓縮核心的最好方法是進行重新編譯核心,將一些不必要的支援去掉,如對網路和其它周邊裝置的支援,重要的一點是記住核心必須支援RAMDISK及ext2,否則系統不能正常引導。關於核心的編譯本文不再闡述,下面重點介紹如何生成根檔案系統的壓縮包。對於根檔案系統的壓縮包括兩方面的問題,第一是隻保留必要的根檔案系統元件,第二是將根檔案系統做成一個壓縮包,類似於核心工作的原理。
(1)根檔案系統概述
一個根檔案系統必須包括支援完整Linux系統的全部東西,它至少應包括以下幾項:
·基本檔案系統結構
·至少含有以下目錄:/dev、 /proc、 /bin、 /etc、 /lib、 /usr、 /tmp
·最基本的應用程式,如sh、 ls、 cp、 mv等
·最低限度的配置檔案,如rc、 inittab、 fstab等
·裝置:/dev/hd*、 /dev/tty*、 /dev/fd0
·基本程式執行所需的庫函式
以上所需檔案一般情況下會超過1.44M,因此我們通常的做法是先準備好內容後再壓縮到軟盤中,當用軟盤啟動時,再把檔案解壓到記憶體中,形成一個虛擬盤(RAMDISK),透過RAMDISK控制系統啟動。
為了能建立以上的根檔案系統,你必須有一個空閒的能夠放下大約4MB檔案的RAMDISK。系統預設情況下已替我們建好了一個大小為4096KB的RAMDISK,其裝置名一般為/dev/ram0,我們就使用它來儲存我們預先準備好的根檔案系統。
2.2 建立根檔案系統
Linux核心識別兩種可以直接複製到RAMDISK的檔案系統,它們是minix 和ext2,ext2效能更好。mke2fs預設情況下在1.44M的軟盤上產生360個資訊節點,使用壓縮格式的根檔案系統需要更多的資訊節點,所以使用如下命令建立檔案系統可以建立2000個資訊節點,而且一般不會用完。
mke2fs -m 0 -i 2000 /dev/ram0
mke2fs將會自動判斷裝置容量的大小並相應地配置自身,-m 0引數防止它給root保留空間,這樣會騰出更多的有用空間。接著把虛擬盤掛在節點/mnt上:
mount -t ext2 /dev/ram0 /mnt/floppy
接著是建立目錄。根檔案系統最少應該有如下8個目錄:
/dev — 裝置
/proc — proc 檔案系統所需目錄
/etc — 系統配置檔案
/sbin — 重要的系統程式
/bin — 基本應用程式
/lib — 共享函式庫
/mnt — 裝載其他磁碟節點
/usr — 附加應用程式
執行如下命令建立這些目錄:
#cd /mnt/floppy
#mkdir dev proc etc sbin bin lib mnt usr
接下來的工作就是確定各個目錄下的內容了:
·/dev:/dev中含有系統不可缺少的裝置檔案。可以把現有系統中/dev的檔案複製過來,然後刪除不必要的檔案。命令cp -dpR /dev /mnt會複製/dev整個目錄但不複製檔案內容,dp開關保證連結檔案仍然不變,不會複製連結所指原檔案,而且屬性不變。如果你沒有SCSI裝置,刪除所有的以sd開頭的檔案。如果你不想使用串列埠裝置,刪除所有以cua開頭的檔案。不過記住一定要保留console、kmem、mem、null、ram、tty1等檔案。
·/etc:這個目錄中含有一些必不可少的系統配置檔案。這下面的檔案比較多,那麼到底哪些檔案是必需的,哪些可有可無呢?由於這下面的檔案一般是一些文字檔案,都不是很大,乾脆全部保留算了。
我的啟動盤中含有不到15個配置檔案,大致可分為3部分:
·rc.d/* — 系統啟動指令碼
·fstab — 列出要登入的檔案系統
·inittab — 包含啟動過程引數
而且這些檔案都是最簡單的。rc應該包括:
#!/bin/sh
/bin/mount -av
/bin/hostname yjy
fstab應包括:
/dev/ram0 / ext2 defaults
/dev/fd0 / ext2 defaults
/proc /proc proc defaults
inittab包括:
id:2:initdefault:
si::sysinit:/etc/rc
1:2345:respawn:/sbin/getty 9600 tty1
2:23:respawn:/sbin/getty 9600 tty2
·/bin和/sbin:該目錄中包含有必不可少的應用程式,如ls, mv, cat,你可以根據自己的需要選擇,不過一定要記住包括以下程式:init, getty,login, mount,執行你的rc的外殼shell。
·/lib: 該目錄中包含有你的啟動盤啟動過程中所需要的共享函式庫,如果缺少必須的函式庫,系統會停止啟動或出現一大堆錯誤資訊,所以一定要注意。
幾乎所有的程式都需要libc庫,列一下目錄/lib中的libc:
% ls -l /lib/libc*
-rwxr-xr-x 1 root root 4016683 Apr 16 18:48 libc-2.1.1.so*
lrwxrwxrwx 1 root root 13 Apr 10 12:25 libc.so.6 -> libc-2.1.1.so*
libc.so.6的6表示版本號,它指向的檔案才是你真正需要的。
檢視每一個程式使用的函式庫,用命令ldd,如:
% ldd /sbin/mke2fs
libext2fs.so.2 => /lib/libext2fs.so.2 (0x40014000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x40026000)
libuuid.so.1 => /lib/libuuid.so.1 (0x40028000)
libc.so.6 => /lib/libc.so.6 (0x4002c000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
輸出右邊的庫都是必須的,有的可能是連結檔案。
在/lib目錄下你還必須有函式庫裝載器,這個裝載器或是ld.so (對 a.out 庫) 或是 ld-linux.so (對 ELF 庫)。新版本的ldd一般會告訴你所需庫的裝載器。
把裝載器和庫複製到/lib後,再仔細檢查一遍,一定保證沒有遺漏。
2.3 模組
如果你有一個模組化的核心,你還得考慮需要載入的模組,它們都位於/lib/modules,你可以把不是很重要的模組放到別的盤上,當系統啟動後再載入,這樣會節省啟動盤的空間。
2.4 打包
一旦你完成了上述工作,卸下虛擬盤,複製到一個檔案中,然後壓縮。
umount /mnt
dd if=/dev/ram0 bs=1k | gzip -v9>rfs.gz
壓縮結束後,你就擁有了一個壓縮的根檔案系統,不過你得檢查它的大小,如果大了,你還得刪除一些東西。
3.組織引導盤
有了根檔案系統和核心之後,最後的工作就是把它們組織在一起。
先檢查總檔案的大小,如果超出1.44MB,就得考慮重新建立所需或用兩張磁碟,即使用兩張磁碟,你的根檔案系統也得小於1.44MB。
接著就是確定是用LILO控制啟動還是直接用複製到盤上的核心控制啟動。用LILO的好處是你能增加支援初始化硬體的引數到核心中,缺點是較複雜且佔用珍貴的磁碟空間,不過我還是建議使用LILO控制系統啟動。下面我就介紹用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/floppy
rm -rf /mnt/floppy/lost+found
mkdir /mnt/floppy{boot,dev}
刪去目錄/ lost+found,建立兩個目錄/boot和/dev,再執行:
cp -R /dev/{null,fd0} /mnt/floppy/dev
接著複製啟動載入器boot.b到目錄/boot中,
cp /boot/boot.b /mnt/floppy/boot
最後,複製你建立的配置檔案bdlilo.conf和核心到核心檔案系統的根目錄下,
cp bdlilo.conf KERNEL /mnt/floppy
現在,根檔案系統所需的所有檔案都準備就緒了。再執行下面的命令可以幫助安裝LILO引導器到軟盤的根檔案系統上面:
lilo -v -C bdlilo.conf -r /mnt
OK,可以執行它了,如果執行結果沒有錯誤就表明成功,否則就應該仔細檢查一下上面的設定。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-940132/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何製作windows啟動盤 u盤製作win10啟動盤WindowsWin10
- 在Linux系統下製作U盤啟動盤Linux
- 在Linux下製作Linux&windows啟動盤LinuxWindows
- Linux U盤啟動盤製作工具Linux
- 製作基於debian的linux live啟動u盤(UEFI)Linux
- 如何製作win10系統u盤啟動盤_win10系統U盤啟動盤製作步驟Win10
- win10製作u盤啟動的方法_win10製作啟動u盤步驟Win10
- Ubuntu18.04啟動盤製作Ubuntu
- Linux製作系統啟動盤以及掛載和解除安裝U盤Linux
- 怎麼用poweriso製作u盤啟動盤win10_poweriso製作u盤啟動盤win10詳細步驟Win10
- Linux 上製作多啟動 U 盤Linux
- 重灌Win10作業系統、製作U盤啟動盤Win10作業系統
- 怎樣把u盤製作成uefi啟動盤_最新uefi啟動u盤製作步驟詳解
- wim檔案製作U盤啟動盤教程【圖文】
- centos7製作U盤啟動盤-九五小龐CentOS
- macOS製作系統啟動盤教程Mac
- Ventoy製作啟動盤和使用VMware測試啟動盤(論文版)
- 如何製作win10系統u盤啟動盤_win10系統隨身碟啟動盤製作步驟Win10
- 如何製作uefi win10安裝盤啟動U盤Win10
- UEFI和Legacy相容啟動U盤製作
- win10系統u盤啟動盤怎麼製作【圖文】Win10
- 【系統】打造自己最喜愛的 Windows10 —— U 盤啟動盤製作篇Windows
- [系統] 打造自己最喜愛的 Windows10 —— U 盤啟動盤製作篇Windows
- u盤製作系統盤
- 怎麼用軟碟通製作win10 u盤啟動盤_軟碟通製作win10啟動隨身碟的步驟Win10
- 蘋果mac電腦如何製作win10系統啟動盤_蘋果電腦使用bootcamp製作windows10啟動盤的方法蘋果MacWin10bootWindows
- macOS Big Sur系統製作安裝啟動盤教程Mac
- u盤製作系統盤工具
- 製作一個移動Ubuntu系統,可以做到即插即用(U盤系統,非啟動盤)Ubuntu
- 手機寫作業系統之 製作第1個啟動盤作業系統
- oracle linux使用安裝盤製作本地yumOracleLinux
- 如何在Mac OS下用ISO包製作啟動U盤Mac
- wim檔案製作隨身碟啟動盤教程【圖文】
- 如何製作win10啟動u盤安裝系統Win10
- 母盤製作-母盤基本設定
- 如何製作uefi win10安裝盤啟動隨身碟Win10
- U盤如何製作win10安裝盤|win10安裝U盤製作方法Win10
- 製作的Fedora啟動U盤無法引導系統的解決方法
- win10系統製作U盤啟動時U盤變為只讀怎麼解決Win10