建立自己的U盤系統

需求:平時在維護系統過程中,會碰到系統啓動不起來,引導方面的錯誤,或者臨時性的啓動一個linux系統的時候,我們可以利用現在最爲普遍的U盤來進行引導系統,在系統引導方面出一點力,對於初學者,還可以熟悉系統的引導過程和啓動過程中所涉及到的文件腳本。更爲學好linux打下一個基礎。

系統引導過程:開機自檢->BIOS->init 9->MBR(bootloder)->加載內核->初始化內存盤(initrd.img)->init->inittab->rc.sysinit->rc.local->加載文本模式或者是圖形化模式。那麼下面將進行U盤啓動的製作過程。

製作過程:

1.找一個U盤,大小在1G到2G之間,不過,一般1G也夠了.大一點,主要是防止軟件的安裝中,空間不夠用.下面就以1G內存進行製作,將U盤插入系統中,將其分爲/ 512M  /swap 128M 這樣就可以了,然後將/分區轉換成可引導分區,/swap分區轉換爲交換分區.然後將其/分區格式化,交換分區進行mkswap.這樣第一步搞定.

2.建立文件架構目錄,在我們系統中,/分區裏有很多系統的目錄,就是我們將在這一步進行製作,現在將要一個安裝源,放在你的linux系統中,現在要用,後面的也要用.執行以下命令(我這裏U盤是/dev/sdb1 /dev/sdb2爲交換分區)  

mkdir /mnt/usb

mount /dev/sdb1 /mnt/usb

rpm -ivh --nodeps --force --nopre --nopost --root=/mnt/usb 安裝源目錄/Server/filesystem.*.rpm

這一條命令的主要功能就是將filesystem.rpm包強制性的,不檢查依賴性,且安裝在/mnt/usb的目錄下,及是U盤的第一分區。這時,進入/dev/usb目錄裏,你將看到很多我們很熟悉的目錄,沒錯,這就是我們剛纔執行這條命令的效果。

3.有了目錄結構,那麼這一步我們將要進行軟件的工具的選擇,因爲我們在U盤系統製作好了以後,我們進入系統,將要用到一些基本的命令,比如cp/mv/ifconfig/ps/shutdown/ssh/等,這些常用的命令我們要安裝好,如果不安裝,那麼我們就不能使用.這個時候要決定自己將來U盤裝好後要提供什麼樣的功能,比如,要提供NFS服務,那麼就要安裝nfs-utils,要連接ssh,那麼就要安裝openssh-client,或者是openssh-server.這些命令怎麼找得到呢,現在我用找ssh的過程來說說:首先,我們運行which ssh

[root@jjw ~]# which ssh

/usr/bin/ssh

再用rpm -qf /usr/bin/ssh

[root@jjw ~]# rpm -qf /usr/bin/ssh

openssh-clients-4.3p2-24.el5

這樣,我們就找到了ssh命令的安裝包爲openssh-clients,那麼我們製作的U盤可以用ssh連接別的系統,這時你就要選擇openssh-clients,好了,下面列舉一些常用的命令安裝包,主要涉及到:基本的命令,系統命令,網絡工具,編輯工具。如下:

coreutils/util-linux/openssh-clients/openssh-server/nfs-utils/portmap/vim-minimal/vim-enhanced/net-tools/rpm/yum/which/krb5-workstation/SysVinit/procps/gpm/passwd/shadow-utils等等,這根據自己製作U盤的用而定.

運行的命令是:yum install -y --installroot=/mnt/usb packgename   用yum源安裝,主要是解決依賴性的問題,強烈推薦這種安裝方法.(如果以後發現有的包沒有安裝,而又想擁有,則,將你的/etc/yum.repos.d/*.repo複製到/mnt/usb/etc/yum.repos.d/下面, 然後再進行yuminstall -y --intstallroot=/mnt/usb/ packgename,這樣就可以把忘記的安裝上了.

4.軟件安裝好後,就要進行初始內存盤的安裝了.運行以下命令:

mkinitrd --with=usb_storage /mnt/usb/boot/initrd.img `uname -r`

運行後,我們還要將生成的initrd.img複製到一個臨時目錄進行解壓,更改一些配置,不然在啓動的時候會有重複錯誤(但不影響系統)操作如下命令:

mv /mnt/usb/boot/initrd.img /mnt/usb/boot/initrd.img.bak(先備份一份)

cp /mnt/usb/boot/initrd.img /tmp/test

cd /tmp/test

mv initrd.img initrd.img.gz

gunzip initrd.img.gz

cpio -i -d < initrd.img

vim init

find . | cpio -c -o > initrd.img

gzip -9 initrd.img

cp initrd.img.gz /mnt/usb/boot/initrd.img

5.複製內核映像與驅動模塊

cp /boot/vmlinuz-2.6.18-53.el5 /mnt/usb/boot/

cp -r /lib/modules/ /mnt/usb/lib/modules  若此目錄下有幾個版本的模塊,則複製相應的版本的,否則,將啓動不起來.就是啓動起來了,也會不好用.

6.安裝grub包,這是爲安裝MBR作準備

rpm -ivh --force --nodeps --nopre --nopost --root=/mnt/usb 包路徑/grub.*.rpm

7.安裝MBR

grub-install --root-directory=/mnt/usb --recheck /dev/sdb

8.編輯grub.conf文件,這個文件在當前是一個空的或者是沒有這個文件,需要我們手工建立,因此,我們要將grub.conf的文件建立起來,如果記不住,就在原系統中複製一個過來,然後再進行更改即可.如果啓動你也想要一個背景,可以將/boot/grub/splash.xpm.gz複製到/mnt/usb/boot/grub下就可以了.要注意的是root這行的寫法,這個要根據你的U盤boot下的device.map的實際情況進行書寫,一般是寫成root (hd1,0),寫好後,保存退出.

9.編輯fstab文件,這個是掛載分區的文件,和grub.conf差不多,都不存在要我們手工建立,我們可以照着上一步,複製一個過來,再照着修改即可,把其他的刪除,將usb裏的兩個文件加上去,原文件裏保留tmpfs|sysfs|devpts|proc.這樣後面的系統才能正常的啓動運行.

10.刪除多餘的文件,因爲是在U盤上的系統,我們一般不會在上面查看幫助文件,因此,我們可以將那些幫助文件一一刪除,讓我們的U盤裝更多的東西,刪除的目錄主要有三個:

rm -fr /usr/share/doc/*

rm -fr /usr/share/info/*

rm -fr /usr/share/man/*

10.將系統重啓,在bios裏改引導的順序,用U盤引導,再重啓,你的系統將進行我們自己打造的一個系統,不過在這一步,啓動後,卻發現我們的用戶名root進不去,怎麼辦呢?呵呵!用單用戶模式羅,因爲我在做這個實驗的時候,用不了passwd這個命令,因此,要先進入單用戶模式後,將root的密碼去掉,然後登錄,執行pwconv後,再進行密碼的更改.這樣纔可以生效.

11.這個過程的最後一步,做些什麼呢,主要是設置我們的主機名,IP地址,網關,DNS,涉及到的文件主要有:/etc/sysconfig/network   /etc/sysconfig/network-scripts/ifcfg-eth0   /etc/hosts /etc/resolv.conf(這幾個文件不存在,要自己手工建立並書寫),搞定後,我們就大功告成.是不是感覺linux系統就這麼簡單呢,其實理解了整個過程後,也就不復雜了.

後續:其實我們在選擇軟件的時候,我們還可以選擇iptables將你的U盤設置爲一個路由器,網關之類的.這就要靠後面根據自己的情況進行選擇增添.

2009年11月16日   白雲

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章