zoukankan      html  css  js  c++  java
  • LFS8.3BOOT引导疑点解决

    LFS系统 的BOOT引导

    本文首发:https://www.somata.net/2019/lfs83_bootloader_doubtful_solution.html

    在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光盘中的紧急救援模式完成操作。

    选择打开电源时进入固件

    然后在Boot中将CD-ROM Drive移动到第一位。保存重启即可。

    选择Troubleshooting

    然后再选择Rescue a CentOS system 开启紧急救援模式。等待系统加载完成。

    跳过,直接进入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 执行命令结果

    3. grub.cfg 文件配置

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

    本文经「原本」原创认证,作者乾坤盘,访问yuanben.io查询【10X0DOZU】获取授权信息。

  • 相关阅读:
    TwoStep Cluster
    什么是星型模型和雪花型模型【转载】
    【转】光盘镜像网址
    ISQL文件夹,目前唯一解决办法就是sa密码设置为复杂点的,开机密码设置成复杂点的。
    【转】c#最小化到托盘
    【技术贴】右键菜单的注册表位置。很有用
    【转】网页底部“回到顶部”功能代码
    vs2005智能提示快捷键,智能完成消失了怎么调出来。
    【转】(原创整理)酷我音乐盒2011最新版去广告方法
    【转】ASP.NET页面传值汇总
  • 原文地址:https://www.cnblogs.com/somata/p/LFS83BootLoaderDoubtfulSolution.html
Copyright © 2011-2022 走看看