编译LFS

成功编译并运行linux from scratch 7.7 system,有必要作下总结。
本次用的编译LFS的环境是:

  • 虚拟机是virtalbox
  • 宿主系统为CentOS 7.0 x86_64 (core版本)
  • LFS版本为 7.7 system

我用两块硬盘,一块安装宿主系统,另一个作为LFS的编译安装盘,编译成功后,脱离宿主系统那块硬盘,单独引导启动LFS linux的那块硬盘,登录进入LFS linux。

虚拟机上安装好centos后,在虚拟机上加一块硬盘,大小20G左右,分区如下

sdb1分100多M以后打算给/boot的单独分区,sdb2给swap分区,sdb5 作为系统根目录。
然后根据LFS手册说明创建好文件系统,把sdb5挂载到/mnt/lfs作为工作目录。按手册下载源文件,创建目录,配置环境等,就开始编译工具链,编译工具链有几个地方需要注意
1,手册中所有的软件编译命令都默认在解压出来的软件目录中进行,也就是说必须先用tar解压,再cd进行软件目录。
2,编译完成后用”cd .. “退出软件目录,回到source目录
3,除非特别说明,删除解压出来的目录和所有编译过程中生成的 <package>-build 目录。也就是说编译成功后把解压出来的源文件目录删除,如果有build目录,也要删除,以免影响下下编译。

编译工具链的系统基础软件都很顺利。

由于打算给/boot单独的分区,在编译内核之前,在chroot环境中,先挂载sdb1分区到/boot目录

这样编译出来的kernel就会安装到sdb1分区上。

接下配置grub启动

完成后,一切看上去已经很OK,于是把宿主系统的那块硬盘卸掉,单独启动LFS linux,也成功出现了系统菜单选择,选择后回车后傻眼了,提示找不到分区。

通过grub命令发现,硬盘是hd0,而不是hd1,原因很简单,原来宿主系统还是,宿主系统那块盘是hd0,LFS 系统的那块盘是hd1,而现在已经把宿主系统的硬盘卸掉了,只剩下一块LFS linux,理所当然是hd0。

于是在grub命令下,于是手动设置root和加载linux内核

成功加载内核并启动后,报这个错误,也是没发现sdb硬盘,这让我想到了/etc/fstab 的配置,里面还是sdb,没办在,登录不进系统。

于是关闭虚拟机,重新把宿主系统的那块硬盘加入,引导进入宿主系统,用chroot进入lfs环境,修改/etc/fstab文件如下:

在chroot环境中,把lfa linux的/boot分区挂进来,修改/boot/grub/grub.cfg文件,修改后内容如下

保存退出。

关闭系统,把宿主系统卸掉,只引导LFS linux盘,成功进入系统,用root登录,各功能都正常。

发表评论