LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
123
返回列表 发新帖
楼主: 独孤不羁

想请教一下如何在U盘上装LFS?

[复制链接]
发表于 2005-11-23 14:03:59 | 显示全部楼层
是可以的,只不过是不同发行版的mkinitrd脚本都不同,部份发行版如Debian会强制找寻usb模组来制作initrd。印像中LFS的那个mkinitrd脚本好像也会强制找寻usb模组,但这是有选择性的

其实内核也可以打一个睡觉补丁,让系统起动时自己睡几秒钟以便系统能辨认及挂载usb设备上的root filesystem的话,那麽连initrd都可以不用了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-23 14:25:41 | 显示全部楼层
Post by d00m3d
是可以的,只不过是不同发行版的mkinitrd脚本都不同,部份发行版如Debian会强制找寻usb模组来制作initrd。印像中LFS的那个mkinitrd脚本好像也会强制找寻usb模组,但这是有选择性的

其实内核也可以打一个睡觉补丁,让系统起动时自己睡几秒钟以便系统能辨认及挂载usb设备上的root filesystem的话,那麽连initrd都可以不用了


如你所讲,如果内核可以自己睡觉几秒钟,可以不要initrd,那么,能不能在initrd的linuxrc中什么也不做,仅仅只是sleep 10,这样不用给内核打补丁,可行吗?
  我想测试一下,分过过linuxrc,但看不懂,我所知道的:
  内核先用RAMDISK做根系统,然后执行initrd中的linuxrc,我分析过initrd中的linuxrc,该文件是一个脚本文件,先加载/proc文件系统,再创建/dev,然后创建root文件系统,其中有几行我不懂,echo 0x0100 > /proc/sys/kernel/real-root-dev这是什么意思啊,好像是创建真实的根文件设备吧,那么根文件设备是如何编号的呢?是不是0x0100中前两位为主设备号后两位为次设备号呢?
  还有,如何从RAMDISK根文件系统切换到USB根文件系统呢?具体一点就是系统内核加载根文件系统的过程是怎样的,系统要内核初始化后,是怎样先加载RAMDISK的,加载RAMDISK后,又是如何切实到真实的根文件系统的,系统从加载RAMDISK后到加载真实根文件系统这段过程是如何进行的呢?
回复 支持 反对

使用道具 举报

发表于 2005-11-23 17:25:03 | 显示全部楼层
如你所讲,如果内核可以自己睡觉几秒钟,可以不要initrd,那么,能不能在initrd的linuxrc中什么也不做,仅仅只是sleep 10,这样不用给内核打补丁,可行吗?
打补丁让内核自己睡觉几秒钟而不用initrd的成功例子是在迷你版的兄弟提出的,叁考http://www.linuxsir.cn/bbs/showthread.php?t=216092

什么也不做,仅仅是sleep 10秒是没意思的,强制系统睡觉目的就是要提供足够时间令它知道什麽是/dev/sda,因为系统在还没有辨认出usb device的时候就企图加载usb device上的根文件系统,随之带来的是系统无法找到kernel而引致kernel panic!
我分析过initrd中的linuxrc,该文件是一个脚本文件,先加载/proc文件系统,再创建/dev,然后创建root文件系统,其中有几行我不懂,echo 0x0100 > /proc/sys/kernel/real-root-dev这是什么意思啊,好像是创建真实的根文件设备吧,那么根文件设备是如何编号的呢?是不是 0x0100中前两位为主设备号后两位为次设备号呢?

还有,如何从RAMDISK根文件系统切换到USB根文件系统呢?具体一点就是系统内核加载根文件系统的过程是怎样的,系统要内核初始化后,是怎样先加载RAMDISK的,加载RAMDISK后,又是如何切实到真实的根文件系统的,系统从加载RAMDISK后到加载真实根文件系统这段过程是如何进行的呢?
你有这个想法说明你对initrd在启动时如何加载根文件系统还未了解,建议先拜读日月教主两篇关於initrd的大作

http://www.linuxsir.cn/bbs/showthread.php?t=184629
http://www.linuxsir.cn/bbs/showthread.php?t=113586
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-24 08:46:09 | 显示全部楼层
echo 0x0100 > /proc/sys/kernel/real-root-dev这是什么意思啊,好像是创建真实的根文件设备吧,

  这一句我可能理解错了,不是创建根设备,而是设置根设备,前面一字节是主设备号,后面一字节是次设备号,0x0100是好像是指内存设备,那么,其他的设备是如何编号的呢?
回复 支持 反对

使用道具 举报

发表于 2005-11-27 14:02:52 | 显示全部楼层
看完d00m3d斑竹提供的两个贴子,弄清了一个长久比较迷惑的问题!谢谢!
回复 支持 反对

使用道具 举报

发表于 2005-12-20 09:20:50 | 显示全部楼层
Up !

感觉作一个Linux启动的U盘真难,有时候同一台电脑,U盘A能启动而U盘B不能启动,
而有时候同一个U盘,电脑A能启动但电脑B又不能启动。

USB Zip HDD CDROM Floppy四种方式的区别是什么?哪位深入讲讲?
回复 支持 反对

使用道具 举报

发表于 2006-1-18 10:57:36 | 显示全部楼层
Post by yhyzh
感觉作一个Linux启动的U盘真难,有时候同一台电脑,U盘A能启动而U盘B不能启动,而有时候同一个U盘,电脑A能启动但电脑B又不能启动。USB Zip HDD CDROM Floppy四种方式的区别是什么?哪位深入讲讲?


这个是不同主板BIOS对不同设备的支持程度不同。USB Zip HDD CDROM Floppy四种方式也没有本质区别,都是BIOS初始化电脑后把引导权交给它支持的设备中的引导器,然后引导器再装入操作系统内核引导内核,内核再调用其他东西,基本上所有的电脑上所有的操作系统都是如此。
回复 支持 反对

使用道具 举报

发表于 2006-1-18 11:26:33 | 显示全部楼层
我的多引导系统U盘制作步骤是
1 用U盘自带的工具制作可引导的 USB-HDD (Win98起动盘)
2 用Linux的fdisk将FAT分区缩小,空出空间分区给linux。(注意各分区ID)
3 因为分区后FAT分区可能不能引导,重新系统化FAT分区。将Grub的分区格式支持文件放到linux分区(就是U盘上Linux系统的 /)的 /boot/grub目录下,编写 menu.lst,把grub安装到U盘的MBR。
4 下载linux内核的U盘引导补丁及相对应的内核源码包。解压,打补丁,配置,编译。把编译好的内核复制到 /boot 。
5 在 / 创建目录系统,将需要的各种文件移植到U盘。(/etc下的文件要认真修改)

这样就OK了!如果U盘足够大,可以把整个LFS移植进去,甚至把图形环境也移植过去。要注意的是 /var 里的日志文件会乐长越大,可以自己编写init脚本,让系统在启动时备份当次引导记录后把临时文件系统挂到日志目录,系统重启或关机时也可以让init脚本再次备份日志。
回复 支持 反对

使用道具 举报

发表于 2006-1-18 21:45:28 | 显示全部楼层
不过移植的系统还有些问题
http://www.linuxsir.cn/bbs/showthread.php?t=16922
运行一些命令出现 error opening terminal: linux ,还有的命令出现 terminal is not fully functional 的错误提示。我是将LFS移植到U盘后,U盘上的系统里出现这个问题,可能是有些文件缺少导致,目前还不清楚到底怎么回事,有知道的劳笔:-)
回复 支持 反对

使用道具 举报

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

本版积分规则

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