LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: good02xaut

LFS6.1硬盘安装完全征服

[复制链接]
 楼主| 发表于 2006-2-21 16:35:40 | 显示全部楼层
迫不及待了都。。。
回复 支持 反对

使用道具 举报

发表于 2006-2-21 16:48:34 | 显示全部楼层
精华鼓励一下。:)。加油。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-21 16:50:34 | 显示全部楼层

有几个关键性的问题,咨询一下

Post by lvjinhua
注:我使用的版本为:LFS-LiveCD6.2-pre2
首先,内核得支持squashfs文件系统格式,如果不支持得重新编译,否则不能挂载 LFS-LiveCD中的光盘镜像文件(。root。sqfs)(前边已经有人提到了),当然其Live-CD中的内核本身是带上的。

然后,[color="Red"]1。将CD中的 .root.sqfs 挂载到一个目录下,将其里面边的内容完全拷贝到另一个单独的分区中(我的是/mnt/hda7),使用 cp -a 就行,还可以保留文件的各种属性。
这样拷贝过去的文件系统默认缺少 /tmp ,/proc ,/boot ,将其补充完整。并修改 /tmp的权限: chmod a+w /tmp

接着,得[color="red"]2。重新编译内核以便让其起动时支持你的文件系统类型。因为LiveCD将Ext2,Ext3等均编译为模块的形式。因此,将其愿有不完整的内核源码树删除,并重新解压内核到其/usr/src目录下:
rm -rf /mnt/hda7/usr/src/*
tar xpf lfs-sources/linux-2.6.12.5.tar.bz2

配置内核(make menuconfig),将Ext2,Ext3选择为编译到内核中,再增加选择 -> Pseudo filesystems->/dev file system support (OBSOLETE)和 Automatically mount at boot (这两项好像不选也行)
(注意,我编译内核的时候使用 chroot /mnt/hda7 切换了环境)

将编译得到的内核复制到 /mnt/hda7/boot 下,在以前系统的GRUB启动项中加入相关语句:
title lfs-livecd6.1
    root (hd0,6)
    kernel /boot/linux root=/dev/hda7 rw vga=791

注意:kernel项一定得选择rw,不然后最后得到的文件系统“只读”,好像在LFS的启动脚本中没有将根文件系统重新挂载为“读写”状态。

接着,修改 /mnt/hda7/etc/fstab 文件以达到我们的要求。

大概就这样,我就是在这个环境中写的这些内容。不过还是有点小问题,好像有些启动脚本没有启动,并且重启有错误,还得再研究研究。


1。这个过程,你的主机系统是什么?kernel是多少?rootfilesystem从哪里来的?
2。为什么要重新编译内核呢?内核没有把对ext2的支持编译进去,可是提供了模块啊。

在这个过程中,你仅仅把root.sqfs拷贝出来了,/boot/isolinux/下面的linuxz和initrramfs_data_cpio怎么没有看到使用呢?
回复 支持 反对

使用道具 举报

发表于 2006-2-21 16:57:55 | 显示全部楼层
1。用原来的系统就可以了。

2。这个,也许用的不是 ext2 这些已经存在的模块,如 xfs 什么的。我不知道是否已经包括。 /boot/isolinux 下的 linuxz 被2中的内核代替了,所以也就省去了 initrd 这一步了。当然,这些只是猜测。看 lvjinhua 兄怎么说了。:)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-21 17:09:29 | 显示全部楼层
看来我的表达能力有问题
看过我前面的过程,和错误提示,是内核不支持ext2文件系统,在寻找模块时死机到:unifrom ...

1。用原来的系统就可以了。
这个不行,因为我的系统是RH9,不支持squashfs文件系统。
方案一:升级内核的同时打上squashfs的补丁,不推荐。
方案二:用liveCD/boot/isolinux/linuxz,我就是这个意思。这个内核支持squashfs,但是不支持ext2.这个内核需要initramfs_data_cpio。
我现在的意思就是在RH9下面,可以更改initramfs里面的东东,但是不改变当前内核2.4.20-8。完全依靠RH9和liveCD.iso硬盘安装。

2。光盘里面的那个/linuxz如果支持ext2的模块,使用initrd,然后chroot不是更方便嘛?不知道如何查看initramfs_data_cpio的内容,有没有办法看看呢?
回复 支持 反对

使用道具 举报

发表于 2006-2-21 17:37:49 | 显示全部楼层
1。方案一简单快捷,不过你不喜欢用的话,或者条件限制,那就不说了。
方案二,我不太明白你的意思,你是打算在在硬盘启动 liveCD 里边的东西,还是要干嘛?

2。那直接启动不是更方便,如果支持的话。
至于查看 initramfs 这个,你file一下看看这个文件的类型,如果是gzip的,就先gunzip解压,然后再看是什么类型。最后 mount -t XXX -o loop x.x /mnt/loop
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-21 17:45:58 | 显示全部楼层
1。没错,应该是条件限制,没有那个补丁。
方案二的意思,虽然我的RH9没有能力挂载squashfs,可是liveCD/boot/isolinux/linuxz有能力。现在就是要用这个linuxz作为内核启动,让他把squashfs里面的文件系统提取出来。
linuxz启动不是需要文件系统吗,可以用RH9的文件系统,或者重新做个文件系统。实验证明那个linuxz没有能力使用RH9的文件系统,因为实在ext2分区的。现在就是想办法让他能用RH9的ext2的文件系统。
这次应该表达清楚了吧

2。我是无法查看了,因为2。4的内核不支持ramfs。就和不支持squashfs一样。唉!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-21 17:48:29 | 显示全部楼层
如果在HOST只是RH9的前提下,linuxz正常启动到了bash,那就清净了。

squashfs被挂载
initramfs被查看
LFS可以安装了

嘿嘿
回复 支持 反对

使用道具 举报

发表于 2006-2-21 17:53:03 | 显示全部楼层
这样的,其实你是借助 linuxz/initrd 这个组合,把 squashfs 里边的内容读取出来。要的是这个效果,是不是?

我觉得最快捷的,还是装一个新内核,暂时把你的RH9内核换成能用squashfs 的,把里边内容拷贝出来。 至于你的这个设想,如果你想继续研究,那就要努力了。

我研究完 toolchain 就看看这个东西,不过我建议你还是从基础开始,你自己先写一个 initrd 的东西,你彻底明白原理后,你的这个设想就应该差不多可以实现了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-21 18:08:59 | 显示全部楼层
这次理解到位
不知道lvjinhua是不是这样搞定的。
initrd我另开新贴了,呵呵
原理应该明白,就是不知道initramfs_data_cpio东西好不好用,如果里面没有ext模块。那我还是白忙活。
我要自己做个initramfs_data_cpio,内核必然要升级到2.6,再次背离初衷。
肯定可以实现的,这个我确信

过两天就可以刻录liveCD了,那时我所有的的问题都会迎刃而解了
这几天在猜测中,怀着对LFS的热情,真是麻烦各位了:)
谁让我一接触LFS,就深深陷进去了呢。呵呵
回复 支持 反对

使用道具 举报

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

本版积分规则

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