一
為什麼需要Linux啟動盤
有很多理由來說明這個問題
首先它可用於啟動Linux系統
其次
當系統發生錯誤
需要進行系統恢復時 我們需要用到它
還有
如果你喜歡經常更新系統內核的話
那麼一張啟動盤則是必不可少的
希望了解Linux系統組成及啟動過程的朋友
如果按照本文提供的方法做下去
相信你做完啟動盤之後
你 對Linux又會有新的認識
二
啟動盤的類型
啟動盤一般可分為如下兩種
一種是只含內核(kernel)的啟動盤
這種盤只含有系統內核
並不包括根文 件系統(root file system)
它在其內核中指明了根文件系統所在的位置
在啟動過程中根據該參數去安裝根 文件系統
也就是說
這種類型的啟動盤必須和硬盤上的根文件系統配合才能使用
我們平常意義上的啟動盤一 般指的就是這種類型
有些資料上也把這種盤稱之為boot盤
另外還有一種類型的啟動盤除了包含內核以外
還包含了文件系統
這種類型的啟動盤從某種意義上來說已 經是一個完整的操作系統
由於有自己的根文件系統
這種類型的啟動盤可以在沒有硬盤的機器上啟動一個小的 Linux系統
這種類型的盤有時也稱作boot/root盤
三
啟動盤的制作
boot盤的制作
很多Linux發行套件已經提供了boot盤
一般情況是在DOS下使用RAWRITE制作一張boot盤
當然這種方法是 在安裝Linux之前進行制作
如果在安裝了Linux之後希望再制作系統盤
請按以下步驟進行
(
)以root的身份進行登錄
(
)確定內核的位置
一般情況下內核位於/vmlinuz中
當然不同的發行套件中該位置可能會有區別
可以 查看相關的文檔
(
)用rdev命令設置根設備為Linux系統的根文件系統
首先查看內核中對根文件系統的配置
執行如下命令
#rdev /vmlinuz
如果你的Linux根文件系統位於/dev/hda
那麼應該有如下的信息
Root Device /dev/hda
注意
該信息隨你在安裝時的配置不同而結果可能不同
另外還有一點值得注意的是
該設置值可能並不正 確
例如我的系統(RedHat
kernel
-
)上的配置值就顯示如下
#rdev /boot/vmlinuz
Root Device /dev/sdc
(顯示為sdc
即第三SCSI硬盤
而我的機器上根本沒有!)
但是這並不表明該配置有問題
因為nf中的相關配置項會覆蓋該值
詳見boot/root盤中的分析
(
)如果上一步的顯示信息和你的實際配置有偏差
可以執行如下命令進行修正
rdev /dev/vmlinuz /dev/hda
(假設根文件系統位於/dev/hda
上)
再次執行rdev /vmliuz確保正確
否則做出來的盤是不會啟動的!
(
)拿一張已格式化的軟盤(Linux下用fdformat格式化)
執行下述命令
#dd if=/vmlinuz of=/def/fd
bs=
至此
一張專用於引導Linux系統的boot盤就做好了
去測試一下吧!
.boot/root盤的制作
boot/root盤由兩部分組成
即核心和根文件系統
要把這兩部分都放到一個
MB的軟盤上去
通常要對內 核和根文件系統進行壓縮
壓縮核心的最好方法是進行重新編譯內核
將一些不必要的支持去掉
如對網絡和其 它周邊設備的支持
重要的一點是記住內核必須支持RAMDISK及ext
否則系統不能正常引導
關於內核的編譯本 文不再闡述
下面重點介紹如何生成根文件系統的壓縮包
對於根文件系統的壓縮包括兩方面的問題
第一是只 保留必要的根文件系統組件
第二是將根文件系統做成一個壓縮包
類似於內核工作的原理
(
)根文件系統概述
一個根文件系統必須包括支持完整Linux系統的全部東西
它至少應包括以下幾項
·基本文件系統結構
·至少含有以下目錄
/dev
/proc
/bin
/etc
/lib
/usr
/tmp
·最基本的應用程序
如sh
ls
cp
mv等
·最低限度的配置文件
如rc
inittab
fstab等
·設備
/dev/hd*
/dev/tty*
/dev/fd
·基本程序運行所需的庫函數
以上所需文件一般情況下會超過
M
因此我們通常的做法是先准備好內容後再壓縮到軟盤中
當用軟盤 啟動時
再把文件解壓到內存中
形成一個虛擬盤(RAMDISK)
通過RAMDISK控制系統啟動
為了能創建以上的根文件系統
你必須有一個空閒的能夠放下大約
MB文件的RAMDISK
系統缺省情況下已替 我們建好了一個大小為
KB的RAMDISK
其設備名一般為/dev/ram
我們就使用它來保存我們預先准備好的根 文件系統
創建根文件系統
Linux內核識別兩種可以直接拷貝到RAMDISK的文件系統
它們是minix 和ext
ext
性能更好
mke
fs缺省 情況下在
M的軟盤上產生
個信息節點
使用壓縮格式的根文件系統需要更多的信息節點
所以使用如下命 令創建文件系統可以創建
個信息節點
而且一般不會用完
mke
fs -m
-i
/dev/ram
mke
fs將會自動判斷設備容量的大小並相應地配置自身
-m
參數防止它給root保留空間
這樣會騰出更 多的有用空間
接著把虛擬盤掛在節點/mnt上
mount -t ext
/dev/ram
/mnt/floppy
接著是創建目錄
根文件系統最少應該有如下
個目錄
/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
tty
等文件
·/etc
這個目錄中含有一些必不可少的系統配置文件
這下面的文件比較多
那麼到底哪些文件是必需 的
哪些可有可無呢?由於這下面的文件一般是一些文本文件
都不是很大
干脆全部保留算了
我的啟動盤中含有不到
個配置文件
大致可分為
部分
·rc
d/* — 系統啟動腳本
·fstab — 列出要登錄的文件系統
·inittab — 包含啟動過程參數
而且這些文件都是最簡單的
rc應該包括
#!/bin/sh
/bin/mount -av
/bin/hostname yjy
fstab應包括
/dev/ram
/ ext
defaults
/dev/fd
/ ext
defaults
/proc /proc proc defaults
inittab包括
id:
:initdefault:
si::sysinit:/etc/rc
:
:respawn:/sbin/getty
tty
:
:respawn:/sbin/getty
tty
·/bin和/sbin
該目錄中包含有必不可少的應用程序
如ls
mv
cat
你可以根據自己的需要選擇
不過 一定要記住包括以下程序
init
getty
login
mount
運行你的rc的外殼shell
·/lib: 該目錄中包含有你的啟動盤啟動過程中所需要的共享函數庫
如果缺少必須的函數庫
系統會停止 啟動或出現一大堆錯誤信息
所以一定要注意
幾乎所有的程序都需要libc庫
列一下目錄/lib中的libc
% ls -l /lib/libc*
-rwxr-xr-x
root root
Apr
:
libc-
so*
lrwxrwxrwx
root root
Apr
:
libc
so
-> libc-
so*
libc
so
的
表示版本號
它指向的文件才是你真正需要的
查看每一個程序使用的函數庫
用命令ldd
如
% ldd /sbin/mke
fs
libext
fs
so
=> /lib/libext
fs
so
(
x
)
libcom_err
so
=> /lib/libcom_err
so
(
x
)
libuuid
so
=> /lib/libuuid
so
(
x
)
libc
so
=> /lib/libc
so
(
x
c
)
/lib/ld-linux
so
=> /lib/ld-linux
so
(
x
)
輸出右邊的庫都是必須的
有的可能是鏈接文件
在/lib目錄下你還必須有函數庫裝載器
這個裝載器或是ld
so (對 a
out 庫) 或是 ld-linux
so (對 ELF 庫)
新版本的ldd一般會告訴你所需庫的裝載器
把裝載器和庫拷貝到/lib後
再仔細檢查一遍
一定保證沒有遺漏
模塊
如果你有一個模塊化的內核
你還得考慮需要加載的模塊
它們都位於/lib/modules
你可以把不是很重要 的模塊放到別的盤上
當系統啟動後再加載
這樣會節省啟動盤的空間
打包
一旦你完成了上述工作
卸下虛擬盤
拷貝到一個文件中
然後壓縮
umount /mnt
dd if=/dev/ram
bs=
k | gzip -v
>rfs
gz
壓縮結束後
你就擁有了一個壓縮的根文件系統
不過你得檢查它的大小
如果大了
你還得刪除一些東 西
.組織引導盤
有了根文件系統和內核之後
最後的工作就是把它們組織在一起
先檢查總文件的大小
如果超出
MB
就得考慮重新創建所需或用兩張磁盤
即使用兩張磁盤
你的根文 件系統也得小於
MB
接著就是確定是用LILO控制啟動還是直接用拷貝
From:http://tw.wingwit.com/Article/program/Oracle/201311/16681.html