


Linux啟動盤boot/root盤的制作
boot/root盤由兩部分
盤上去,通常要對內核和根
一些不必要的支持去掉,如
RAMDISK及ext2,否則系統不
成根文件系統的壓縮包。對
件系統組件,第二是將根文
組成,即核心和根文件系統。要
文件系統進行壓縮,壓縮核心的
對網絡和其它周邊設備的支持,
能正常引導。關于內核的編譯本
于根文件系統的壓縮包括兩方面
件系統做成一個壓縮包,類似于
把這兩部分都放到一個1.44MB的軟
最好方法是進行重新編譯內核,將
重要的一點是記住內核必須支持
文不再闡述,下面重點介紹如何生
的問題,第一是只保留必要的根文
內核工作的原理。
(1)根文件系統概述
一個根文件系統必
須包括支持完整Linux系統的全
部東西,它至少應包括以下幾項:
基本文件系統結構
至少含有以下目錄
:/dev、 /proc、 /bin、 /etc
、 /lib、 /usr、 /tmp
最基本的應用程序,如sh、 ls、 cp、 mv等
最低限度的配置文件,如rc、 inittab、 fstab等
設備:/dev/hd*、 /dev/tty*、 /dev/fd0
基本程序運行所需的庫函數
以上所需文件一般情況下會超過
縮到軟盤中,當用軟盤啟動時,再把文件
RAMDISK控制系統啟動。
1.44M,因此我們通常的做法是先準備好內容后再壓
解壓到內存中,形成一個虛擬盤(RAMDISK),通過
為了能創建以上的根文件系統,
。系統缺省情況下已替我們建好了一個大
我們就使用它來保存我們預先準備好的根
你必須有一個空閑的能夠放下大約4MB文件的RAMDISK
小為4096KB的RAMDISK,其設備名一般為/dev/ram0,
文件系統。
(2) 創建根文件系統
Linux內核識別兩
ext2性能更好。mke2fs缺省
件系統需要更多的信息節點
一般不會用完。
種可以直接拷貝到RAMDISK的文
情況下在1.44M的軟盤上產生360
,所以使用如下命令創建文件系
件系統,它們是minix 和ext2,
個信息節點,使用壓縮格式的根文
統可以創建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中含有
,然后刪除不必要的文件。
dp開關保證鏈接文件仍然不
備,刪除所有的以sd開頭的
過記住一定要保留console
系統不可缺少的設備文件。可以
命令cp -dpR /dev /mnt會拷貝
變,不會拷貝鏈接所指原文件,
文件。如果你不想使用串口設備
、kmem、mem、null、ram、tty1
把現有系統中/dev的文件拷貝過來
/dev整個目錄但不拷貝文件內容,
而且屬性不變。如果你沒有SCSI設
,刪除所有以cua開頭的文件。不
等文件。
/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:該目錄
的需要選擇,不過一定要記
殼shell。
中包含有必不可少的應用程序,
住包括以下程序:init, getty
如ls, mv, cat,你可以根據自己
,login, mount,運行你的rc的外
/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-linux.so (對 ELF 庫)。新版本的l
裝載器,這個裝載器或是ld.so (對 a.out 庫) 或是
dd一般會告訴你所需庫的裝載器。
把裝載器和庫拷貝到/lib后,再仔細檢查一遍,一定保證沒有遺漏。
模塊
如果你有一個模塊化的內核,你
/lib/modules,你可以把不是很重要的模
啟動盤的空間。
還得考慮需要加載的模塊,它們都位于
塊放到別的盤上,當系統啟動后再加載,這樣會節省
打包
一旦你完成了上述工作,卸下虛擬盤,拷貝到一個文件中,然后壓縮。
umount /mnt
dd if=/dev/ram0 bs=1k | gzip -v9>rfs.gz
壓縮結束后,你就
,你還得刪除一些東西。
擁有了一個壓縮的根文件系統,
不過你得檢查它的大小,如果大了
(3) 組織引導盤
有了根文件系統和內核之后,最后的工作就是把它們組織在一起。
先檢查總文件的大小,如果超出
用兩張磁盤,你的根文件系統也得小于1.
1.44MB,就得考慮重新創建所需或用兩張磁盤,即使
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.con
插入軟驅,在上面創建ext2文件
f。 接下來就是創建一個內核文
系統。
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
最后,拷貝你創建的配置文件bd
lilo.conf和內核到內核文件系統的根目錄下,
cp bdlilo.conf KERNEL /mnt/floppy
現在,根文件系統
LILO引導器到軟盤的根文件
所需的所有文件都準備就緒了。
系統上面:
再執行下面的命令可以幫助安裝
lilo -v -C bdlilo.conf -r /mnt
OK,可以運行它了,如果運行結果沒有錯誤就表明成功,否則就應該仔細檢查一下上
面的設置。
關鍵字:Linux、boot、root
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解