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

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

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

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

    Compiler:工具

    a. Download the newest released grub2 packageoop

    b. Decompress the package to path $grub2ui

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

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

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

            make, make installinput

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

相关文章
相关标签/搜索