grub安装过程

Tags

  • 前提说明

    • OS: Ubuntu 20.04 amd64
    • 启动方式: BIOS
    • 版本: grub2-2.02
    • 磁盘分区表类型:MBR分区表
    • 磁盘文件系统: EXT4
    • 安装命令形式: grub-install dev
  • 安装过程

    1. 复制文件

      注:如果安装时指定了参数--compress,会在目的地保存压缩后的文件,同时文件名不变

      1. 将/usr/lib/grub/i386-pc/*.mod文件复制到/boot/grub/i386-pc/
      2. 将下列文件从/usr/lib/grub/i386-pc/复制到/boot/grub/i386-pc/

        efiemu32.o, efiemu64.o, moddep.lst, command.lst, fs.lst, partmap.lst, parttool.lst, video.lst, crypto.lst, terminal.lst, modinfo.sh

      3. 将/usr/share/locale/*/LC_MESSAGES/grub.mo复制到/boot/grub/locale/*.mo
      4. 将/usr/share/locale-langpack/*/LC_MESSAGES/grub.mo复制到/boot/grub/locale/*.mo
      5. 将/usr/share/grub/themes/starfield/下的常规文件(即S_ISREG文件)全部复制到/boot/grub/themes/startfield/
      6. 将/usr/share/grub/unicode.pf2复制到/boot/grub/fonts/unicode.pf2
      7. 向文件/boot/grub/grubenv中写入1024字符,其中首行写入“# GRUB Environment Block”,剩余部分用“#”填充
    2. 生成core.img

      将下列内容按顺序组装成/boot/grub/i386-pc/core.img:
       
      diskboot.img, lzma_decompress.img,kernel.img,相关模块,"/boot/grub"所在路径信息
       
      其中文件源自/usr/lib/grub/i386-pc/。组装过程中,会进行相关修改。组装形式如下图所示:
       
      core.img
    3. 将/usr/lib/grub/i386-pc/boot.img文件复制到/boot/grub/i386-pc/

    4. 将/boot/grub/i386-pc/core.img写入到磁盘从第2个扇区起始的空间,尾部按扇区对齐部分会填充0。

    5. 将/boot/grub/i386-pc/boot.img写入到磁盘的第1个扇区,写入时,会做如下修改

      注:修改时,文件/boot/grub/i386-pc/boot.img不会改变

      1. 将磁盘上第1个扇区内的相关数据写入到boot.img中
      2. 修改boot.img内特定位置处的数据

        修改内容如图所示:

        boot.img

 

如果觉得本文不错,欢迎打赏