|
|
发表于 2006-7-1 08:37:39
|
显示全部楼层
Post by Sandr0
但我觉得,如果按我的思路去做,工作量非常小,就只需要编译内核加入一个ext文件系统支持(甚至可以用ntfs文件系统,反正只要能只读就可以了),然后将init.c里面的mountlfscd()稍微改一下就可以了。
严格来讲,其实这种方式并非真正硬盘安装,套用 Knoppix 的术语,这是 PMI (Poor Man's Installation) 方式安装
昨天我尝试将LiveCD 里的 SquashFS 文件及 boot 目录下的文件拷到一个分区,然後改由 GRUB 来启动,原理是可以了,但 init 拒绝加载根目录,原因就是这个 mountlfscd() 搞鬼!它要检查 LiveCD 的 volume name (如 lfslivecd-x86-6.2pre4 之类) 以确认 LiveCD 是否正常加载,否则 return 0 退出。这里告诉我们两件事:
1. 不要指望 LFS 团队回覆幻想老大的请求了,他们是有目的地加入这个检查项目的,这亦反影他们造这 LiveCD 的意图并非为"安装"而设
2. 如果不打算自己重新写个 linuxrc 另做一个 initrd 的话,理论上应该可以将 init.c 里面的mountlfscd() 检查项目屏蔽或者打最後面的 return 0 改成 return 1 来欺编系统,不管有没有找到 LiveCD 的 volume name 也继续去加载根目录
可是我改了以後不知道怎样进行下一步去制作它专用的 initramfs_data_cpio.gz,单纯在 initramfs 目录下 make 是不行的,希望各位可以给点指引 |
|