本人是个小菜鸟,初次通过学习搭建linux for search(LFS)进行Linux的学习,下面是我综合了不少网上资料之后进行的总结
本人的搭建的宿主系统是centos7
x86_64
lfs的版本为7.7 system
本人是用了一块新虚拟机磁盘作为lfs的编译安装盘的,编译成功后可以脱离系统盘,单独引导那块盘
安装好centos后,在虚拟机上加了一块合适大小的盘(本人设置了40G,其实不用这么多)分区表如下
![](https://i-blog.csdnimg.cn/blog_migrate/84fbeb6155f2909a63ee08b601498592.png)
首先是官方手册的中文连接网页 https://linux.cn/lfs/LFS-BOOK-7.7-systemd/index.html
1、3.1的时候注意首先下载 wget 到本地目录
wget http://www.linuxfromscratch.org/lfs/downloads/stable-systemd/wget-list
不过这里建议是用 中科大的提供镜像 这个地方原文中也有说明
wget --input-file=wget-list --continue --directory-prefix=$LFS/sources (绿字部分建议修改成中科大的wget-list的镜像名字)
2、在5.4编译软件包时候binutil-2.25时候,执行make时候会出现问题,在另外一个大神的博客中有做说明解决方法
https://blog.csdn.net/rudy_axle/article/details/48008403
主要问题是缺少了texinfo
yum -y install texinfo.x86_64
3、这一点非常重要,在6.17、6.59、6.63、6.69时都出现了一个符号链接不对的问题,注意仔细检查
我们都知道Linux 中的 ../ 代表上层目录,这里如果按照手册上面操作的话,所在目录应该是对应需要安装包的文件目录下面
所以
6.17中的
为/lib建立符号链接时: ln -sv ../usr/bin/cpp /lib 改为: ln -sv ../../usr/bin/cpp /lib
增加兼容符号链接启用编译程序时进行链接时间优化时:
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/4.9.2/liblto_plugin.so /usr/lib/bfd-plugins/ 改为:
ln -sfv ../../usr/libexec/gcc/$(gcc -dumpmachine)/4.9.2/liblto_plugin.so /usr/lib/bfd-plugins/
6.59中的 创建符号链接
ln -sv ../bin/kmod /sbin/$target 应该改为 ln -sv /bin/kmod /sbin/$target
6.63中的 安装systemd的时候
ln -sfv ../bin/systemctl sbin/${tool} 改为 ln -sfv /bin/systemctl sbin/${tool}
ln -sfv ../lib/systemd/systemd /sbin/init 改为 ln -sfv /lib/systemd/systemd /sbin/init (重要,本人就因为一次写错了导致需要重新开始)
6.69节安装vim
ln -sv ../vim/vim74/doc /usr/share/doc/vim-7.4 应改为 ln -sv /usr/share/vim/vim74/doc /usr/share/doc/vim-7.4
以上的解决方法都是由
https://blog.csdn.net/rudy_axle/article/details/48008403 提供,万分感谢
4、因为打算给/boot单独分区,因此在编译内核前,在chroot环境中记得需要挂载sdb1分区到 /boot
mount -t ext2 /dev/sdb1 /boot
5、在配置grub引导的时候,其实可以修改宿主机的系统grub进行双系统选择启动,方便在宿主系统存在的情况下进行选择进入我们的lfs系统
首先安装完了grub之后利用自动配置引导 grub-mkconfig -o /boot/grub/grub.cfg
然后在新的终端中打开刚刚生成的grub.cfg
找到LFS的menuentry复制到宿主系统的grub.cfg
(在centos7中的grub.cfg 应该在/boot/grub2下面)
参考网页教程:https://www.cnblogs.com/nrobot/archive/2012/03/25/2416614.html