天天看點

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

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

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

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

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

1,添加硬碟:

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

2,分區

按照主控端的模式分區,共分根,boot,swap三個分區

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

分區儲存後會有如下提示

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

‘新盤将在重新開機後才能使用’,除了重新開機還有另一種方法,使用指令

 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

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

編寫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參數選項意思為如果有目錄的話建立相應的目錄)

展開後如圖

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

打開init檔案并修改

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

在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/

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

最後編輯grub.conf

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

并修改權限使其可執行

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

此時已經做到了第四步加載核心,下面移植INIT程序

5,建立跟分區所需要的目錄

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

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

一個一個複制太麻煩,是以就制作一個腳本,針對某個指令會複制所有的庫檔案

腳本檔案如圖

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

在/mnt/sysroot/etc/下編輯inittab配置檔案

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

并修改為可執行檔案

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

查詢bash指令的庫檔案,并複制,使用剛才編寫的複制腳本複制

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

做完後基本已經完成了

同步配置,準備移植新系統

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

6,下面開始準備啟動盤

打開一個新的linux系統,把原有的硬碟删除,挂載新的硬碟(剛才所制作的硬碟)

添加硬碟

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

添加剛才建立的磁盤檔案

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

然後打開此虛拟機

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

顯示如圖說明一個簡易的linux已經打造成功

優化:添加開機背景圖檔(由于新的系統不支援一些指令,是以首先在主控端上做好圖檔,然後再複制到新的linux系統中使用)

 添加圖檔,使用xshell上傳

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

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

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

效果圖如圖

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

繼續閱讀