LFS 6.3安装好后如何制作成启动盘
发布网友
发布时间:2022-04-24 08:41
我来回答
共3个回答
懂视网
时间:2022-04-15 02:36
弄了3天总算是把LFS弄好了,都是按照LFS一步步来的,这里就只说一下有问题的地方。 第一个错误是 在第五章第一次安装linux-libc-headers-2.6.12.0时出错 文档中的命令: cp-Rvinclude/asm-i386/tools/include/asm cp-Rvinclude/linux/tools/include 错误忘了
弄了3天总算是把LFS弄好了,都是按照LFS一步步来的,这里就只说一下有问题的地方。
第一个错误是在第五章第一次安装linux-libc-headers-2.6.12.0时出错
文档中的命令:
cp -Rv include/asm-i386 /tools/include/asm
cp -Rv include/linux /tools/include
错误忘了好像是提示没有include/asm-i386这个文件或目录(事实上是有的,有点想不通),我嫌麻烦就直接使用宿主lfs-livecd的/usr/include中的文件,即cd到/usr/include中,再使用:
cp -Rv asm /tools/include/asm
cp -Rv linux /tools/include.
(这里我是先进/usr/include看看然后再操作,可以直接cp -Rv /usr/include/asm/tools/include/asm)
但是在第六章中再次安装是没有这个问题,但是命令有点不一样
文档中的命令:
install -dv /usr/include/asm (
cp -Rv include/asm-i386/* /tools/include/asm
cp -Rv include/linux /tools/include
我想大概是命令的问题(还是想不通,只是猜想),用类似第六章的命令(cp -Rv include/asm-i386/* /tools/include/asm)大概在第五章就不会出错了,没有验证,有人做的话建议可以试一下看看。不过我之前的办法在后面也没有出项问题,当然还是建议根据文档来。
第二个错误是做引导的时候编译完内核,做完引导,重启后遇到Kernel panic ——内核打出类似下面的一段话,然后死机:
VFS: Cannot open root device "sda8" or unknown-block(0,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
因为我virtualbox里的虚拟机的硬盘是SICI的,所以和文档中grub时使用的hdax不一样,而是使用sdax,所以我开始以为可能是grub中menu.list和fstab中的设置问题。但是试了很多次都没用,后面想了一下内核其实已经引导起来了,应该是内核的编译设置的错误。网上查了一下,得到两个比较有用信息如下,这两个都是说在内核增加SICI的支持,为了不需要在grub设置中再增加init的设置要把它编译进内核不能以模块启动。
1.http://hi.baidu.com/zkheartboy/item/4e3a5af2b0d94d0fc6dc452b
这个是要设置Device Driver
|---->DriverATA/ATAPI/MFM/RLL
|---->Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
|----->generic/default IDE chipset support
|----->PCI IDE chipset support
|---->Generic PCI IDE Chipset Support
2.http://www.linuxsir.org/bbs/thread244052.html
这个是说要在Device Drivers->SCSI device support->SCSI low-level drivers下加入BusLogic SCSI support的支持
但是这两个我都增加了,重新编译后新内核还是出现同样错误。因为浪费了很多时间,我想暂时先就这样,先把LFS运行起来,错误以后再搞清楚。所以后面我直接使用了livecd的.config。于是问题解决!
热心网友
时间:2022-04-14 23:44
制作LFS liveCD 跟在硬盘上安装LFS有想相当大的不同 简要介绍如下
以6.2为例 6.3制作方法一样
一个Linux系统,它支持loop device, CD-ROM 和 ISO9660 文件系统。
一个有3GB以上空闲空间的硬盘分区
使用环境变量$WORK指向这个分区的文件夹,例如:
export WORK=/mnt/lfslivecd
这个LiveCD使用ISO9660文件系统,它采用了Linux特有的透明压缩方法。在这个文件系统中,包含以下文件:
boot/*
root.ext2
这个boot文件夹包含了Linux内核文件,initramfs镜像以及boot引导器。实际的根文件系统(ext2)是在root.ext2这个文件。
如果要制作这个CD,你需要安装以下包:
cdrtools-2.01: 作用:读取、创建、刻录CD的工具包。下载地址:
http://gd.tuwien.ac.at/utils/schilling/cdrtools/cdrtools-2.01.tar.bz2
ftp://ftp.berlios.de/pub/cdrecord/cdrtools-2.01.tar.bz2
MD5校验值: d44a81460e97ae02931c31188fe8d3fd
文件大小: 1.4 MB
所需磁盘空间: 21 MB
补丁:
http://www.linuxfromscratch.org/patches/blfs/svn/cdrtools-2.01-mkisofs_iconv-1.patch
http://www.linuxfromscratch.org/patches/blfs/svn/cdrtools-2.01-ascii-2.patch
安装方法:
1、安装补丁
patch -Np1 -i ../cdrtools-2.01-mkisofs_iconv-1.patch
patch -Np1 -i ../cdrtools-2.01-ascii-2.patch
2、编译
make INS_BASE=/usr DEFINSUSR=root DEFINSGRP=root
3、安装
make INS_BASE=/usr DEFINSUSR=root DEFINSGRP=root install &&
install -v -m755 -d /usr/share/doc/cdrtools-2.01 &&
install -v -m644 README* ABOUT doc/*.ps \
/usr/share/doc/cdrtools-2.01
zisofs-tools-1.0.6:
在http://www.kernel.org/pub/linux/utils/fs/zisofs/zisofs-tools-1.0.6.tar.gz 下载
使用以下命令安装
./configure --prefix=/usr && make && make install
加载这个CD
mount /media/cdrom
察看root.ext2文件的大小:
ls -l /media/cdrom/root.ext2
如果大致为1.5GB,那么就可以直接解压缩这个CD。你可以使用下面的命令拷贝文件到你的硬盘。
cp /media/cdrom/root.ext2 $WORK/root.ext2
如果它只有大约500MB,那么你需要重新构建你的Linux内核使它支持ZISOFS,或者使用下面的命令拷贝:
mkzftree -u -F /media/cdrom/root.ext2 $WORK/root.ext2
不管哪一种方法,确保$WORK/root.ext2这个文件在1.5GB大小左右。
This may or may not be sufficient for your remastered CD (or DVD) filesystem.
如果你需要,你可以使用e2fsprogs(版本不小于1.39)重新改变这个文件大小。1.39版本之前的e2fsprogs不能直接更改文件系统的镜像大小。
使用loop方式挂载这个镜像
mkdir $WORK/root
mount -o loop $WORK/root.ext2 $WORK/root
创建并绑定一个文件夹是一个非常好的主意,这样能保留许多有可能是空的扇区。
mkdir $WORK/build $WORK/root/build
mount --bind $WORK/build $WORK/root/build
挂载其它一些必要的文件夹:
mount -t proc proc $WORK/root/proc
mount -t sysfs sysfs $WORK/root/sys
mount -t devpts devpts $WORK/root/dev/pts
mount -t tmpfs tmpfs $WORK/root/dev/shm
注意:在LFS手册中这些指令是不推荐的。tmpfs不是加载到$WORK/root/dev。这是因为所有必要的设备都已经以静态节点的方式创建了。
Chroot:
chroot $WORK/root
通过chroot,更改当前目录到/build,安装需要的其它一些包。修改一些必要的文件。
在http://wiki.linuxfromscratch.org/livecd/browser/tags/6.2-5/packages/initramfs 下载initramfs文件。
解压缩这个文件。在Makefile文件中删除"include $(ROOT)/scripts/functions"这一行。创建initramfs镜像。
make compile-stage2 VERSION="x86-6.2-custom"
(你可以使用自己的字符创替换"x86-6.2-custom") 文件initramfs_data.cpio.gz就产生在当前文件夹中。如果当前文件夹不是"/build",复制它到 /build:
cp initramfs_data.cpio.gz /build
退出chroot环境,卸载挂载点:
exit
umount $WORK/root/dev/shm
umount $WORK/root/dev/pts
umount $WORK/root/sys
umount $WORK/root/proc
umount $WORK/root/build
rmdir $WORK/root/build
清理bash输入记录:
rm $WORK/root/root/.bash_history
你也可以移出其它的记录文件。
如果你错误的创建或删除了一些文件,可能导致之前的扇区被包含有非空数据的文件占据。对于这种扇区将不能很好的进行压缩。清空它们。
dd if=/dev/zero of=$WORK/root/zeroes
这个命令将打印一个消息:这个磁盘是满的。这不是一个错误。将这个文件从文件系统中移除。
rm $WORK/root/zeroes
现在,卸载root.ext2这个文件:
umount $WORK/root
sync
The "sync" command is needed e to a bug in the loop driver in some kernels that leads to a filesystem with errors otherwise.
现在创建文件夹用来构建你的LiveCD:
mkdir $WORK/iso
从原始的LiveCD中复制boot文件夹
cp -r /media/cdrom/boot $WORK/iso
使用自己的initramfs镜像替换原来的:
cp $WORK/build/initramfs_data.cpio.gz \
$WORK/iso/boot/isolinux/iniramfs_data_cpio.gz
(the underscore before "cpio" in the previous command is not a typo).
重新压缩root.ext2这个文件:
mkzftree -F $WORK/root.ext2 $WORK/iso/root.ext2
创建CD镜像:
cd $WORK/iso ; mkisofs -z -R -l --allow-leading-dots -D -o \
../lfslivecd-x86-6.2-custom.iso -b boot/isolinux/isolinux.bin \
-c boot/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table \
-V "lfslivecd-x86-6.2-custom" ./
完毕
热心网友
时间:2022-04-15 01:02
我只知道LFS 0.5Z