1. 程式人生 > 其它 >使用linux核心打造屬於自己的linux

使用linux核心打造屬於自己的linux

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

 

 

開機自檢(BIOS)這個跟硬體相關,不需要我們做,我們要做的有“MBR引導——GRUB選單——載入核心(kernel)——執行INIT程序——inittab配置檔案——rc.sysinit指令碼”,做完後一個非常簡單的裸系統linux就成型了,但此時的系統什麼功能都沒有,如果要使用某些功能,比如ftp服務,vim命令等,需要新增配置檔案

 

製作方法:在原有linux系統(宿主機)下新增一塊硬碟,把新增的硬碟做成linux系統,做好後移植到其他地方當做新的linux系統,就可以使用了

 

1,新增硬碟:

 

 

2,分割槽

按照宿主機的模式分割槽,共分根,boot,swap三個分割槽

 

 

分割槽儲存後會有如下提示

‘新盤將在重啟後才能使用’,除了重啟還有另一種方法,使用命令

 partprobe  /deb/sdb命令完成後就可以直接使用了

 

3,建立光碟掛載點

[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中

 

效果圖如圖