LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 574|回复: 3

裁减FC5到U盘,遇到问题,请大虾帮忙

[复制链接]
发表于 2006-6-15 15:56:08 | 显示全部楼层 |阅读模式
裁减FC5到U盘,遇到问题我在一台机器上安装了FC5,然后对其进行裁减,然后移动到U盘,但是用U盘启动时出现问题,我现在把我的制作过程写下来,看看哪位可以帮忙看一下

1。制作根文件系统

首先为根文件系统建一个目录叫做 USB-Linux,然后进入 USB-Linux 目录内
# mkdir USB-Linux
# cd USB-Linux
然后为 root filesystem 建立一些标准的目录
# mkdir dev etc etc/rc.d bin proc mnt tmp var
# chmod 755 dev etc etc/rc.d bin mnt tmp var
# chmod 555 proc
# ln -s sbin bin
然后进入 /dev 目录下建立根文件系统必须的一些设备文件。
建立一般终端机设备
# mknod tty c 5 0
# mkdir console c 5 1
# chmod 666 tty console
建立 VGA Display 虚拟终端机设备
# mknod tty0 c 4 0
# chmod 666 tty0
建立 RAM disk 设备
# mknod ram0 b 1 0
# chmod 600 ram0
建立 floppy 设备
# mknod fd0 b 2
# chmod 600 fd0
建立 null 设备
# mknod null c 1 3
# chmod 666 null
到这里我们就有了一个初步的小型根文件系统,但是还需要配置一些有关的 shell script来完善它。
编辑有关的 shell script
首先进入到 /USB-Linux/etc/ 这个目录下编辑 inittab,rc.d/rc.sysinit,fstab这三个文件 ,内容分别如下:
inittab
::sysinit:/etc/rc.d/rc.sysinit
::askfirst:/bin/sh
rc.sysinit
#!/bin/sh
mount –a
fstab
proc /proc proc defaults 0 0
然后修改inittab,rc.sysinit,fstab这三个文件的权限
# chmod 644 inittab
# chmod 755 rc.sysinit
# chmod 644 fstab
配置完shell script后,我们注意到这些shell script会使用一些 /bin目录下的命令,但是我们的/bin目录下是空的。

然后我就把宿主机上/bin和/sbin目录下的文件都copy到//USB-Linux/bin目录下面

压缩根文件系统
一般我们会采取 RAM Disk 的方式实现。简单的来说就是将准备好的根文件系压缩成为Ramdisk的镜像文件,当用软盘启动时,再把镜像文件解压到内存中,形成一个虚拟盘(RAMDISK),通过RAMDISK控制系统启动。
我们现在制作Ramdisk的镜像文件
# dd if=/dev/zero of=/tmp/tmp_loop bs=1k count=2048
# losetup /dev/loop0 /tmp/tmp_loop
# mke2fs -m 0 /dev/loop0
# mount -t ext2 /dev/loop0 /mnt
# cp -a /floppy-Linux /mnt
# umount /mnt
# losetup -d /dev/loop0
# dd if=/tmp/tmp_loop | gzip -9 > /tmp/Image.gz
# rm -f /tmp/tmp_loop
# sync
这样我们就得到了压缩过的根文件系统也就是Ramdisk的镜像文件Image.gz。
linux内核不变,使用原有的FC内核,即/boot/vmlinuz-2.6.16.9

然后整合核心和根文件系统

用grub引导
依次执行:
# mke2fs /dev/sda1
# mount /dev/sda1 /mnt/usb
# mkdir /mnt/usb/boot
# mkdir /mnt/usb/boot/grub
# cp /boot/grub/stage1 /mnt/usb/boot/grub
# cp /boot/grub/stage2 /mnt/usb/boot/grub
#grub
在 grub> 提示符处,输入:
grub> root (hd1,0) //因为我的U盘就一个分区,所以是0,并且我是在宿主机上执行上述命令,所以是hd1
grub> setup (hd1)
grub> quit
#cp /boot/vmlinuz-2.6.16.9  /mnt/usb/boot
#cp /tmp/Image.gz  /mnt/usb/boot
#cp /boot/grub/grub.conf  /mnt/usb/boot/grub
编辑grub.conf, 内容如下:
timeout 3

default 0
title My little Linux
  root (hd0,0)
  kernel /boot/vmlinuz-2.6.16.9   ro  root=/dev/sda1

  initrd /boot/ Image.gz
然后制作grub.conf的link文件menu.lst
#ln -s /mnt/floppy/boot/grub/grub.conf   /mnt/usb/boot/grub/menu.lst
#umount /mnt/usb
整合完成!

至此,制作完毕,重启计算机,把bios中的启动顺序做一下修改,把First-boot改成USB-HDD

然后再重新启动,此时U盘中的小linux开始,屏幕首先倒计时,然后出现grub.conf中的配置内容,在然后就会载入内核,但是在这个过程中就出现了问题,我把报错信息描述如下:

VFS: Cannot open root device "sda1" or unknow -block(0.0)

Please append a correct "root= " ,boot again

Kernel panic -not syncing:VFS:Unable to mount root fs on unknown -block(0.0)

因为我刚刚接触linux不久,很多东西不明白,出了这个错误束手无策,请各位帮忙

小弟先谢谢了
发表于 2006-7-21 09:41:02 | 显示全部楼层
default 0
title My little Linux
  root (hd0,0)
  kernel /boot/vmlinuz-2.6.16.9 ro root=/dev/sda1
把/dev/sda1改成hda0试试
回复 支持 反对

使用道具 举报

发表于 2006-7-21 09:41:59 | 显示全部楼层
default 0
title My little Linux
  root (hd0,0)
  kernel /boot/vmlinuz-2.6.16.9 ro root=/dev/sda1
把/dev/sda1改成/dev/hda0试试
回复 支持 反对

使用道具 举报

发表于 2006-7-21 12:50:27 | 显示全部楼层
路过,关注一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表