欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

LFS8.3BOOT引导疑点解决

程序员文章站 2022-06-22 08:48:03
主要就是再LFS编译完成后发现的一些有关于bootloader的问题解决。 ......

lfs系统 的boot引导

在lfs书中写到的boot引导,时直接将宿主机的boot分区挂载当lfs的boot分区中,虽然这样也是可以实现boot引导的,但是我并不想这样做,所以boot引导就变得有些棘手了。总结下来有如下一个难点:

  1. mbr引导写入。
  2. initramfs的rootfs文件制作。
  3. grub.cfg文件配置。
    注意
    这里我只是提及了这几个问题,但是我并没有说到操作顺序需要注意。

那么我会逐一解决这些文件。

1. mbr引导写入

首先我们需要知道,现在的lfs是挂载在/dev/sdb或者/dev/hdb上的,宿主机的磁盘占用着第一个磁盘,如果需要在新的平台环境也能引导使用,我们可以借助dvd来完成mbr引导记录的部署。首先创建一台新的虚拟机,将虚拟磁盘导入到这台虚拟机然后再使用如centosdvd光盘中的紧急救援模式完成操作。
LFS8.3BOOT引导疑点解决
选择打开电源时进入固件
LFS8.3BOOT引导疑点解决
然后在boot中将cd-rom drive移动到第一位。保存重启即可。
LFS8.3BOOT引导疑点解决
选择troubleshooting
LFS8.3BOOT引导疑点解决
然后再选择rescue a centos system 开启紧急救援模式。等待系统加载完成。
LFS8.3BOOT引导疑点解决
跳过,直接进入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然后再执行操作

grub-install /dev/sda       # 安装mbr引导记录和grub启动所需要的模块

2. initramfs文件的制作

这里我就直接使用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帮助文档的,然而我并不需要,所以我就索性手动安装一下。

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.img

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 执行命令结果
LFS8.3BOOT引导疑点解决

3. grub.cfg 文件配置

grub-mkconfig -o /boot/grub/grub.cfg        # 导出配置文件
# 那么这样就完成了,grub-mkconfig会自动识别文件系统和内核,后面就可是直接重启了。