最近听朋友说误删除了Linux系统里的文件,于是系统进不了,里面保存着很多重要的数据,这该怎么办?虽然可以把硬盘取出挂载其他Linux系统运行,也可跳过控制台进入系统,但都是很麻烦的,其实只要制作一个用U盘启动的Linux系统就可以轻松地把这一切搞定。

制作用U盘启动的Linux系统的简单步骤:

一、对U盘进行处理

1.分区:(插上U盘)

# fdisk /dev/sdb
d Enter 删除原有分区
n Enter 新建一个主分区
w Enter 保存设置
# partprobe /dev/sdb 刷新U盘
2.设定U盘分区为活动分区
# fdisk /dev/sdb
a Enter 设定为活动分区
1 Enter 选择分区

3.对硬盘分区进行格式化,格式化成ext3格式

# mkfs.ext3 /dev/sdb1

二、装filesystem包 (目的:生成根下的root,usr,var 。。.等目录)

1.配置好yum

2.加载U盘到/net下

# mount /dev/sdb1 /net
3.安装
# yum -y install --installrot=/net filesystem

安装完成后,可查看/net下生成了多个目录

三、加载系统启动项

1.# cp /boot/vmlinuz-2.6.18-128.el5 /net/boot/
2.生成initrd.img `uname -r`为取系统版本号
# mkinitrd --with=usb-storage /net/boot/initrd-usb.img `uname -r`

3.查看/net/boot/下是否有vmlinuz和initrd

四、制作boot loader(grub)

1.# yum -y install --installroot=/net grub
2.grub.conf不成自动生成,要手工创建
# cp /boot/grub/grub.conf /net/boot/grub/grub.conf 并作修改
# cat /net/boot/grub.conf
default = 0
timeout = 5
title redhat-usb-linux
root(hd0,0)
kernel /boot/vmlinuz-2.6.18-128.el5 ro root=/dev/sdb1 init=/dev/bash
initrd /boot/initrd-usb.img

此处填写的内容要与/net/boot/grub/下的文件名一致

五、安装命令库文件

# yum -y install --installroot=/net bash coreutils pam setup vim-enhanced vim-minimal util-
linux net-tools SysVinit passwd shadow-utils authconfig

可通过rpm -qf /bin/mount 查看包名

此时chroot /net下可使用刚才安装的命令了

六、创建磁盘分区

# mknod /net/dev/sdb b 8 16
# mknod /net/dev/sdb1 b 8 17

b表示块设备,8为主设备号,16、17为次设备号

--------------------------

| 有关设备号的解释:

| 1.对于一块SCSI/SATA硬盘(格式为sd*),主设备号为8,

| 第一块硬盘的次设备号为0-15,第二块硬盘的次设备号为16-31,依次类推。因为对于硬盘来说,主分区最多为4个,可以3个主分区1个扩展分区,扩展分

| 区仍然可以再分区,但是分区的总数最多为16个,所以每一块硬盘的次设备号为16个(0-15,16-31)。

| 2.对于一块IDE硬盘(格式为hd*),主设备号为3,次设 备号第一块为0-63,第二块为64-127。

| 3.# ls -l /dev/sd*
| brw-r----- 1 root disk 8, 0 10-16 14:53 /dev/sda
| brw-r----- 1 root disk 8, 1 10-16 14:54 /dev/sda1
| brw-r----- 1 root disk 8, 2 10-16 14:53 /dev/sda2
| brw-r----- 1 root disk 8, 3 10-16 14:54 /dev/sda3
| brw-r----- 1 root disk 8, 16 10-16 15:50 /dev/sdb
| brw-r----- 1 root disk 8, 17 10-16 15:50 /dev/sdb1
| brw-r----- 1 root disk 8, 32 10-16 15:50 /dev/sdc
| brw-r----- 1 root disk 8, 36 10-16 15:50 /dev/sdc4

| 以上是我一台主机上插了1个硬盘,两个U盘的显示情况,我们可以看到设备号的显示情况。

| 4.在linux中一切皆文件,硬件也是通过文件体现出来的,所有硬件设备都在/dev/有所显示。

|5.更具体的设备号研究可以查看下面的文件。

| # yum install kernel-doc
| # /usr/share/doc/kernel-doc-2.6.18/Documentation/devices.txt

---------------------------

七、创建挂载

1.创建mtab

# cat /net/etc/mtab
/dev/sdb1 / ext3 rw 0 0

2.创建fstab

#

cat /net/etc/fstab
/dev/sdb1 / ext3 default 1 1

八、安装grub

# chroot /net
# grub-install /dev/sdb1

注:

1.如果创建硬盘分区的时候没有配置正确,在第八步会报错:
the file /boot/grub/stage1 not read correctly
2.在用U盘启动后,进入到U盘中的系统,此时我们可以用已经
安装过的命令集,但是此时的文件系统是只读的,我们不能vim,
mount等的操作,此时必须用下面这个命令,进行重新读写挂载:
# mount -o remount,rw /

重挂载后,就可以了。

至此,U盘Linux系统启动盘的制作就完成了,通过以上方法,用户就可以用U盘来启动Linux系统,再也不用担心误删文件进不来系统,也不用这么麻烦拆下硬盘进行拷贝。