|
|
第 1 帖 | |
|
|
标题: 成功将livecd安装在硬盘上 使用的是lfslivecd-x86-6.1.1-4.iso,应该只要是镜像里面含有.root.sqfs这个文件的都可以。
只支持.root.sqfs放在hda1,文件系统必须ntfs,因为我编译的内核里面只增加了ntfs嵌入进内核。 我使用ntldr载入grldr,menu.lst这样编写: title LFS Live CD kernel (hd0,0)/linux initrd (hd0,0)/initramfs_data.cpio.gz 需要linux内核文件和initramfs_data.cpio.gz的请在这里下载: http://sandro.yang.googlepages.com/copyleft.htm 或者直接用gast:guestk登录gmail(http://mail.google.com/a/sandro.3322.org)自取。 .root.sqfs文件可以从下载官方的lfslivecd-x86-6.1.1-(x).iso(x=1, 2, 3, 4)中提取,也可以从我制作的四合一启动光盘中提取: iso文件692M http://www.box.net/public/ucenhngdsq ed2k://|file|MutiBoot.iso|725604352|A8D89BAEEE39F684FA8AB2F11DEEA0AF|/
__________________
http://sandro.go.3322.org 此帖于 06-11-11 09:59 被 Sandr0 编辑. |
|
|
|
|
|
|
|
第 2 帖 | |
|
|
恳请 Sandr0 兄把心得跟大家一起分享,谢谢!
__________________
nO ^^4+73R wH1<h d!5+R0z j00 42E U$1N9 7r% LpHZ 4+ l3457 oN(& |
|
|
|
|
|
|
|
第 3 帖 | |
|
|
所有编译工作都是在LFS LiveCD中完成的,呵呵
其实我也是新手,有很多地方也不清楚,反正就读源代码,边改边试,现在算是成功了吧 ![]() 下面的帖子马上写下我分析的详细步骤。 |
|
|
|
|
|
|
|
第 4 帖 | |
|
|
期待中。。。
|
|
|
|
|
|
|
|
第 5 帖 | |
|
|
在http://wiki.linuxfromscratch.org/liv...ranches/6.1.1/查看所有代码。
1. 分析initramfs/init.c,发现函数mountlfscd()是问题的起因。 2. 大刀阔斧,直接删除init.c里面检查CD核对CD的部分,也就是从/* Try to open CD drive to see if we can use it */到/* Try to mount the cd drive*/之前(169到223行)的部分。 3. 第17行,加上一个"/dev/hda1", 这里我还删去了所有的我自己没有的设备,这样速度会快一些,这也是我说只支持hda1的原因。 4. 看init.h,这里面将32行中的iso9660改成ntfs,这也是我说的只支持ntfs的原因。 5. 看Makefile中的编译方法,用这个命令编译:gcc init.c -o init -static -Os -s -Wall 6. 准备好initramfs_data.cpio.gz的目录,比如tmp,在里面建立dev,bin,.tmpfs,.union四个目录,然后将/dev里面的loop0, null, console和hda1四个设备文件复制到tmp/dev里,将编译好的init复制到tmp里。 7. 看Makefile里面建立initramfs_data.cpio.gz的方法,进入到tmp目录,用这个命令建立:find . | cpio -o -H newc | gzip -9 > ../initramfs_data.cpio.gz 由于livecd里面的内核将除了iso9660之外的所有文件系统都编译成模块,所以要重新编译内核。下面是编译内核的分析(只需要增加ntfs): 8. 首先在运行 uname -a知道livecd内核版本是2.6.11.12 9. 分析packages/linux里面的Makefile,发现需要给内核源代码做三个patch:squashfs2.2-patch,reiser4-for-2.6.11-5.patch和unionfs-1.0.14 10. 其中只有unionfs-1.0.14的复杂一点,要先在packages/unionfs中用它提供的unionfs-1.0.14-fix_builtin-1.patch和unionfs-1.0.14-fixes-1.patch两个patch对unionfs-1.0.14做patch,然后再用unionfs-1.0.14中的patch-kernel.sh脚本对内核源代码做patch 11. 三个patch做好之后基本大功告成,将packages/linux中的config文件复制到内核源代码目录中并改名为.config 12. 看packages/linux中的Makefile知道如何编译内核: make menuconfig (在文件系统里面将ntfs选成嵌入内核) make make modules_install cp arch/i386/boot/bzImage linux 全部完成。 请多多指教。 此帖于 06-10-03 09:21 被 Sandr0 编辑. |
|
|
|
|
|
|
|
第 6 帖 | |
|
|
这下我的A230(没光驱、只支持USB软驱)有福了;感到ing......
谢谢!!! |
|
|
|
|
|
|
|
第 7 帖 | |
|
|
呵呵,我也是深知没有光驱的痛苦啊。我的光驱被我做diablo的镜像,一张烂盘,读了一个通宵,还是没搞定,然后就读不了盘了,后来我擦了一下激光头,又可以勉强读了,可是LiveCD只能读一半,有时可以有时不行,而且进不了x,郁闷啊。上面的东西都是在别人的电脑上编译的。
在硬盘上运行还有一个好处就是速度快很多,呵呵 |
|
|
|
|
|
|
|
第 8 帖 | |
|
|
感谢 Sandr0 的分享,相信有很多人可以受惠了,精华鼓励之!
Sandr0 兄似乎对 C 很精通,上次从那个内核的 init/do_mounts.c 得到不少启动,要向 Sandr0 兄学习学习。 |
|
|
|
|
|
|
|
第 9 帖 | |
|
|
版主过奖了,我只不过是看得懂一点点C代码而已,乱改改也许还行,真要我写,肯定不行啦。还要多向大家学习!
|
|
|
|
|
|
|
|
第 10 帖 | |
|
|
我又研究了一下,现在6.2的CD也可以安装到硬盘上了。
6.2系列的livecd和6.1变动很大,有很多新功能,最新的6.2-3中的xorg是最新发布的7.1,还有中文支持方面,现在locale里面可以选简体中文繁体中文GBK,BIG5,UNICODE,还有scim中文输入法,网络工具也很全,还有gaim聊天呢,可能唯一缺的就是多媒体了,我现在就是在硬盘上的livecd系统下发的帖,呵呵。 6.2的光盘做法也变了,不用6.1的squashfs了,是采用基于iso9660和linux内核的透明压缩来做的。这样安装到硬盘的方式也要相应改变。 6.2光盘里面的root.ext2镜像里面还包含200多M的lfs-sources,如果去掉这个,光盘文件大小可以压缩到272M。 如果不要删除任何东西,做起来相对简单,只需要重新编译一下init,并重新打包initramfs.cpio.gz就可以了。6.2的内核中编译了ext文件系统,所以如果将iso文件放在ext格式的分区中,就也不需要重新编译内核。init.c中还是先删掉检查光盘标签的那部分,然后在加载光盘那段前面加两行(以我安装在/dev/hda8上为例): 代码:
如果要删掉lfs-sources,想压缩空间,就相对复杂一点,除了要做上面的工作,还要解压root.ext2来做相应的删减。可以参照 http://wiki.linuxfromscratch.org/liv...o.txt?rev=1744 上面的步骤。 如果需要的话,我可以把我删除掉lfs-sources的root.iso(272M)做成bt种子发布。 此帖于 06-10-30 06:35 被 Sandr0 编辑. |
|
|
|
|
|
|
|
第 11 帖 | |
|
|
谢谢分享。
Alexander E. Patrakov 的那篇 Howto 已被收纳成为 Hints 了 http://www.linuxfromscratch.org/hint...ring-howto.txt 曾经有段时间想去把它译成中文,可惜。。。太忙了 ![]() |
|
|
|
|
|
|
|
第 12 帖 | |
|
|
原来Hints里面有啊,我一般都是直接看它wiki上的源码的。
可能想要自己重制CD的人也不是很多,而且可能也都看得懂吧,需要翻译成中文么?呵呵 |
|
|
|
|
|
|
|
第 13 帖 | |
|
|
标题: 疑问 不是将livecd安装在硬盘上而是将livecd"安装在硬盘上"吧?
和将linux系统安装到硬盘不同吧?这里说的是通过读取硬盘上的iso镜像文件来运行lfs吧? 不知道能不能保存文件? 真的是安装到硬盘吗? 不解.....要是有真正意义上的安装到硬盘就好了,一个不错的开发环境哦 请指教。。。 |
|
|
|
|
|
|
|
第 14 帖 | |
|
|
对,其实只是将iso文件复制到硬盘上运行,重启的话系统设置将不能保存,但是可以用休眠的方式保存设置(理论上,没有测试)。
真的要像其他发行版一样硬盘安装,可以将iso镜像里的文件系统复制到硬盘上运行,除了占用空间大,其他也不错,不过应该还是没有一般发行版好。 |
|
|
|
|
|
|
|
第 15 帖 | ||
|
|
引用:
|
||
|
|
|
||