use grub2 make dual boot cd(support bios and UEFI)

不问归期 提交于 2019-12-04 21:14:10

使用grub2 制作支持BIOS&UEFI 双启动的ISO镜像

首先就是准备grub2了。最新的Release版本可以从这里获取: ftp://ftp.gnu.org/gnu/grub.

其他信息参考 http://www.gnu.org/software/grub/

    Compiler:

    a. Download the newest released grub2 package

    b. Decompress the package to path $grub2

    c. mkdir ~/grub2-bios ~/grub2-uefi, cd $grub2 mkdir build build-uefi

    d. cd build, ../configure --prefix=${HOME}/grub2-bios, make , make install #compiler bios version

    e: cd ../build-uefi ../configure --with-platform=efi --target=x86_64 --prefix=${HOME}/grub2-uefi,

            make, make install

      Note: 正确的编译grub2, 你需要安装一些工具与lib,请参考grub INSTALL document。

    Make bin:

        Bios:

            cd ~/grub2-bios

            bin/grub-mkimage -p / -d ./lib/grub/i386-pc -O i386-pc core.img biosdisk udf iso9660 reboot halt linux #参数请参考帮助

            cat ./lib/grub/i386-pc/cdboot.img ./core.img > ./grub2cd.bin

        UEFI:

            cd ~/grub2-uefi

            bin/x86_64-grub-mkimage -d ./lib/grub/x86_64-efi -c preconfiguration.conf -p /efi/boot -O x86_64-efi \

                -o bootx64.efi ext2 fat ntfs part_msdos part_gpt search search_fs_file search_fs_uuid linux \

                acpi help reboot halt usb usbms boot chain efi_gop efi_uga gfxterm png tga echo udf ata pata

编译并制作好用于引导系统的loader之后,就开始准备之中image镜像文件了:

        mkdir ~/image

        cd image; mkdir -p efi/boot boot

        # copy linux bzImage initrd.gz to boot directory

        cp ~/grub2-bios/grub2cd.bin ./

        vim grub.cfg          #用于grub2cd.bin 使用的 配置文件,根据image的目录结构配置cfg

        dd if=/dev/zero of=efiboot.img bs=1M count=4

        mkfs.vfat -F 32 efiboot.img

        mount -o loop -t vfat efiboot.img /mnt/loop

        mkdir -p /mnt/loop/efi/boot

        cp ~/grub2-uefi/bootx64.efi /mnt/loop/efi/boot

        umount /mnt/loop

        vim efi/boot/grub.cfg #用于efi firmware使用的配置文件

        genisoimage -A "Sample" -V "volume id" -J -joliet-long -r -v -input-charsetutf8 \

            -T -udf -o image.iso -b grub2cd.bin -no-emul-boot -boot-load-size 4 \

            -boot-info-table -eltorito-alt-boot -e efiboot.img -no-emul-boot . 

到此我们的dual boot cd就制作好了。

这里一定要制作udf格式的文件系统,如果做成iso9660的系统,某些光驱会出现读取扇区错误。估计是grub2使用的iso9660的文件系统驱动问题。   

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!