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

使用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的文件系统驱动问题。   

转载于:https://my.oschina.net/u/140191/blog/77174

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值