在LFS书中写到的BOOT引导,时直接将宿主机的BOOT分区挂载当LFS的BOOT分区中,虽然这样也是能够实现BOOT引导的,可是我并不想这样作,因此BOOT引导就变得有些棘手了。总结下来有以下一个难点:python
那么我会逐一解决这些文件。linux
首先咱们须要知道,如今的LFS是挂载在/dev/sdb
或者/dev/hdb
上的,宿主机的磁盘占用着第一个磁盘,若是须要在新的平台环境也能引导使用,咱们能够借助DVD来完成MBR引导记录的部署。首先建立一台新的虚拟机,将虚拟磁盘导入到这台虚拟机而后再使用如CentosDVD光盘中的紧急救援模式完成操做。
选择打开电源时进入固件
而后在Boot中将CD-ROM Drive移动到第一位。保存重启便可。
选择Troubleshooting
而后再选择Rescue a CentOS system
开启紧急救援模式。等待系统加载完成。
跳过,直接进入shell界面。shell
mount /dev/sda2 /mnt/sysimage # 直接将光盘挂载到/mnt/sysimage 下 mount /dev/sda1 /mnt/sysimage/boot # 挂载虚拟文件系统到/mnt/sysimage下 mount -vt proc proc /mnt/sysimage/proc mount -vt sysfs sysfs /mnt/sysimage/sys mount -v -o bind /dev /mnt/sysimage/dev # 切换到LFS文件系统 chroot /mnt/sysimage # 若是配置了profile 可使用以下命令 source /etc/profile
这样咱们就使用CDROM中的系统进入到了LFS而后再执行操做bash
grub-install /dev/sda # 安装MBR引导记录和grub启动所须要的模块
这里我就直接使用dracut
软件生成initramfs文件,固然initramfs也是能够手动生成的。可是这个实在是太麻烦了。因此我就不用了。
首先是下载:下载连接
而后是安装:
一样的是安装3步曲:测试
./configure --prefix=/opt && make && make install # 这里会应为一系列依赖关系报错。因此个人安装步骤并非如此的。
dracut -> asciidoc -> python2
dracut ->libxslt -> libxml2
以上2个就是我在编译的时候碰上的所需软件。而后再编译安装的时候都碰到了问题。可是我发现,再make 报错以后,dracut-install 和skipcpio 这2个软件都已经编辑好了。ascii和libxslt 这2个软件都是用于建立doc帮助文档的,然而我并不须要,因此我就索性手动安装一下。code
mkdir /usr/lib/dracut/ cp -r dracut.conf.d /usr/lib/dracut/ # 复制配置文件 cp -r modules.d /usr/lib/dracut/ # 复制dracut模块 cp install/dracut-install /usr/lib/dracut/ # 复制dracut-install cp skipcpio/skipcpio /usr/lib/dracut/ # 复制skipcpio cp *.sh /usr/lib/dracut/ # 复制全部的脚本到指定路径 chmod +x /usr/lib/dracut/*.sh # 给全部的脚本执行权限
而后开始建立initramfs.imgxml
cd /usr/lib/dracut # 首先切换到dracut的安装目录 ./dracut.sh initramfs.img 4.18.1 # 第一个参数是建立的文件,第二个是指定内核版本,注意必定要对上,否者会出错。 # 而后再将建立号的initramfs.img移动到/boot目录下便可。 # 固然仍是杨测试一下看看文件是否都是全的 /usr/lib/dracut/lsinitrd.sh initramfs.img # 查看initramfs.img cp initramfs.img /boot/ # 将initramfs.img 复制到/boot目录下
lsinitrd.sh 执行命令结果
blog
grub-mkconfig -o /boot/grub/grub.cfg # 导出配置文件 # 那么这样就完成了,grub-mkconfig会自动识别文件系统和内核,后面就但是直接重启了。