建立自己的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日   白云

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