首先要了解Linux的開機過程,如圖

開機自檢(BIOS)這個跟硬體相關,不需要我們做,我們要做的有“MBR引導——GRUB菜單——加載核心(kernel)——運作INIT程序——inittab配置檔案——rc.sysinit腳本”,做完後一個非常簡單的裸系統linux就成型了,但此時的系統什麼功能都沒有,如果要使用某些功能,比如ftp服務,vim指令等,需要添加配置檔案
制作方法:在原有linux系統(主控端)下添加一塊硬碟,把添加的硬碟做成linux系統,做好後移植到其他地方當做新的linux系統,就可以使用了
1,添加硬碟:
2,分區
按照主控端的模式分區,共分根,boot,swap三個分區
分區儲存後會有如下提示
‘新盤将在重新開機後才能使用’,除了重新開機還有另一種方法,使用指令
partprobe /deb/sdb指令完成後就可以直接使用了
3,建立CD光牒挂載點
[root@localhost ~]# mkdir /mnt/boot(相當于boot)
[root@localhost ~]# mkdir /mnt/sysroot(相當于/)
[root@localhost ~]# mount /dev/sdb1 /mnt/boot/
[root@localhost ~]# mount /dev/sdb2 /mnt/sysroot/
4,建構grub
[root@localhost ~]# grub-install --root-directory=/mnt/ /dev/sdb
編寫grub.conf前要把核心和驅動鏡像拷入/mnt/boot/下
[root@localhost boot]# cp /boot/vmlinuz-2.6.18-164.el5 ./
[root@localhost boot]# cp /boot/initrd-2.6.18-164.el5.img ./
但是驅動鏡像需要更改一下,不然很有可能系統啟動不起來
首先建立臨時目錄
把驅動鏡像移動過去,并展開在目前目錄下
[root@localhost boot]# mkdir /mnt/boot/tmp
[root@localhost boot]# mv initrd-2.6.18-164.el5.imgtmp/
[root@localhost boot]# zcat tmp/initrd-2.6.18-164.el5.img | cpio -id(不加管道後面的指令會出現亂碼,cpio程式可以使其正常顯示,-id參數選項意思為如果有目錄的話建立相應的目錄)
展開後如圖
打開init檔案并修改
在87行首加個#禁掉此行就OK了
修改完後,删掉原檔案initrd-2.6.18-164.el5.img,重新打包
[root@localhost tmp]# find . |cpio -o(表示輸入) -H(格式) newc --quiet (靜默模式)|gzip -9 >initrd.gz
打包後複制到/mnt/boot/目錄下
[root@localhost tmp]# cp initrd.gz /mnt/boot/
最後編輯grub.conf
并修改權限使其可執行
此時已經做到了第四步加載核心,下面移植INIT程序
5,建立跟分區所需要的目錄
[root@localhost sysroot]# ldd /sbin/init(檢視init依賴于哪些庫,并拷貝到硬碟2上)
linux-gate.so.1 => (0x005aa000)
libsepol.so.1 => /lib/libsepol.so.1 (0x006fc000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00854000)
libc.so.6 => /lib/libc.so.6 (0x001c0000)
libdl.so.2 => /lib/libdl.so.2 (0x0065c000)
/lib/ld-linux.so.2 (0x004f0000)
一個一個複制太麻煩,是以就制作一個腳本,針對某個指令會複制所有的庫檔案
腳本檔案如圖
在/mnt/sysroot/etc/下編輯inittab配置檔案
并修改為可執行檔案
查詢bash指令的庫檔案,并複制,使用剛才編寫的複制腳本複制
做完後基本已經完成了
同步配置,準備移植新系統
6,下面開始準備啟動盤
打開一個新的linux系統,把原有的硬碟删除,挂載新的硬碟(剛才所制作的硬碟)
添加硬碟
添加剛才建立的磁盤檔案
然後打開此虛拟機
顯示如圖說明一個簡易的linux已經打造成功
優化:添加開機背景圖檔(由于新的系統不支援一些指令,是以首先在主控端上做好圖檔,然後再複制到新的linux系統中使用)
添加圖檔,使用xshell上傳
[root@localhost ~]# convert -resize 640x480! 1.jpg 1.jpg(忽略圖檔的原有比例,不然有可能鋪滿全屏)
[root@localhost ~]# convert 1.jpg -colors 14 -geometry 640x480 splash.xpm(轉換圖檔的像素大小,格式)
[root@localhost ~]# gzip splash.xpm (壓縮檔案)
[root@localhost ~]# cp splash.xpm.gz /mnt/boot/grub/(複制到新的linux系統中)
應用到配置檔案/boot/grub/grub.conf中
效果圖如圖