|
|
发表于 2004-8-26 03:09:30
|
显示全部楼层
不好意思, 把重要的步骤给旯了. 多谢提醒. 
pbcd中的kernel是2.2版的, glibc也不是最新的, 原作者也早已不再更新.
正因为lib下的库文件和LFS下的版本不一致, 简单的把LFS的fdisk和mkfs拷到pbcd/root/sbin下, 然后重新build-root.sh是不行的, 要想添加fdisk和mkfs, 大体上有如下几个步骤:
1. 重新编译busybox, 编译前要改变一些选项, 尤其要加上fdisk. (下载 http://www.busybox.net/)
2. 把编译好的busybox安装(不是拷贝)到pbcd/root/下, 具体见busybox中的INSTALL.
3. 用LFS的库更换pbcd/root/lib下的库, 可以用ldd检查一个程序需要什么库.
4. 拷贝LFS的mkfs到pbcd/root/sbin下.
希望我没有漏掉什么, 要注意的是root不能大于4MB, 否则运行build-root.sh时会出错.
如果嫌以上步骤太繁琐, 还有个简单的方法, 可以借鉴(用:p)楼主hongmingjian老兄做的iso中的initrd, 那里面包含fdisk和mkfs, 很好用. 成功后再在此基础上按自己的需要改进. hong兄只用到initrd, 没用rootfs. 既可以用他的initrd取代pbcd的initrd, 这样的话就用不着rootfs了, 或者也可以保留pbcd的initrd, 而用hong兄的initrd取代pbcd的rootfs.
听上去可能有点乱, 试着做做懂了原理其实很简单. 我一步步做下来学会不少东西, 挺有意思. 下面是如何从iso中取出initrd.
mkdir /mnt/iso
mount -o loop -t iso9660 lfs-20040805.iso /mnt/iso
cp /mnt/iso/isolinux/initrd.gz .
gzip -d initrd.gz
mkdir /mnt/initrd
mount -o loop -t ext2 initrd /mnt/initrd |
|