• 支持UEFI和LEGACY的多系统安装U盘


    base

    # https://www.v2ex.com/t/466839
    Hybrid MBR(MBR 混合分区表)
    MBR 分区方案中,磁盘的第一个扇区( 512 字节),存放磁盘引导代码和 4 个分区表项。这 512 个字节被称为 MBR
    GPT 分区方案中,分区表放在第 2~33 扇区,共 33 个扇区( 512 * 33 字节),另外在磁盘最末尾 33 个扇区,备份一个分区表。
    因为第一个扇区已被 MBR 分区方案使用,GPT 分区方案保留第一扇区,被称为 protective MBR。 protective MBR 上只有一个分区项,并标记为特殊的"EE"类型,尽可能大的覆盖整个磁盘。防止只识别 MBR 的系统操作磁盘。
    Hybrid MBR 就是利用这个 protective MBR,重新开辟出分区表,并和 GPT 分区表的分区区块位置保持一致。从而激活 MBR 系统识别分区。
    

    bootloader

    # https://www.slant.co/topics/4820/~linux-bootloaders
    1. GNU GRUB
    2. Syslinux
    3. rEFInd
    4. Clover Bootloader
    5. BURG
    6. systemd-boot (Gummiboot)
    7. LILO
    

    1. x86_64

    disk partion

    1. gparted
    设置分区表GPT,新建主分区FAT32,格式化分区FAT32,设置分区flag为boot
    
    2. gdisk
    剩余1M空间创建分区, GUID设置为ef02(BIOS boot partition),不需要格式化
    
    3. 分区信息
    sudo parted /dev/sdd print
    Number  Start   End     Size    File system  Name                 Flags
     1      1049kB  61.5GB  61.5GB  fat32                             boot, esp
     2      61.5GB  61.5GB  1032kB               BIOS boot partition  bios_grub
    

    install grub

    # 挂载分区
    sudo mount /dev/sdd1 /mnt -o uid=$USER,gid=$USER
    
    # x86_64: grub-efi-amd64-bin
    sudo grub-install --target=i386-pc --boot-directory=/mnt/boot /dev/sdd --recheck
    sudo grub-install --target=x86_64-efi --efi-directory=/mnt --boot-directory=/mnt/boot /dev/sdd --removable
    

    /boot/grub/grub.cfg

    # https://github.com/Jimmy-Z/grub-iso-boot/blob/master/grub.cfg
    # http://www.jinbuguo.com/linux/grub.cfg.html
    
    insmod part_gpt
    insmod part_msdos
    insmod fat
    insmod ntfs
    insmod iso9660
    insmod udf
    
    search --no-floppy --label --set isopart DATA
    
    menuentry "Ubuntu Desktop 64bit ISO" {
     set isofile=/boot/iso/ubuntu-14.04.3-desktop-amd64+mac.iso
     loopback loop ($isopart)$isofile
     linux (loop)/casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=$isofile noeject noprompt splash locale=zh_CN.UTF-8 --
     initrd (loop)/casper/initrd.lz
    }
    
    menuentry "Ubuntu Server 64bit ISO" {
     set isofile=/boot/iso/ubuntu-14.04.3-server-amd64+mac.iso
     loopback loop ($isopart)$isofile
     set gfxpayload=keep
     linux (loop)/install/vmlinuz file=/cdrom/preseed/ubuntu-server.seed iso-scan/filename=$isofile quiet --
     initrd (loop)/install/initrd.gz
    }
    

    2. arm64

    分区

    分区表msdos,一个fat32分区,标签DATA,标志boot

    install grub

    # 挂载分区
    sudo mount /dev/sdd1 /mnt -o uid=$USER,gid=$USER
    
    # arm64: grub-efi-arm64-bin
    sudo grub-install --target=arm64-efi --efi-directory=/mnt --boot-directory=/mnt/boot /dev/sdd  --recheck --removable
    

    /boot/grub/grub.cfg

    insmod part_gpt
    insmod part_msdos
    insmod fat
    insmod ntfs
    insmod iso9660
    insmod udf
    
    search --no-floppy --label --set isopart DATA
    
    set timeout=3
    
    if loadfont /boot/grub/fonts/unicode.pf2 ; then
        set gfxmode=auto
        insmod efi_gop
        insmod efi_uga
        insmod gfxterm
        terminal_output gfxterm
    fi
    
    menuentry 'kylin 4.0.2-sp2 desktop arm64 install' {
        set default=liveinstall
        set gfxpayload=keep
        set isofile=/iso/Kylin-4.0.2-desktop-sp2-181112.J1-arm64.iso
        loopback loop ($isopart)$isofile
        linux (loop)/casper/Image boot=casper iso-scan/filename=$isofile splash
        initrd (loop)/casper/initrd.img
    }
    
    menuentry 'kylin 4.0.2-sp2 server arm64 install' {
        set default=install
        set gfxpayload=keep
        set isofile=/iso/Kylin-4.0.2-server-sp2-18071110.J1-arm64.iso
        loopback loop ($isopart)$isofile
        linux (loop)/casper/Image boot=casper iso-scan/filename=$isofile splash
        initrd (loop)/casper/initrd.img
    }
    
  • 相关阅读:
    C++数据类型与C#对应关系 c#调用WINDWOS API时,非常有用(转)
    Web应用系统中关闭Excel进程
    jquery下一个空格带来的血案
    导出Excel时发生COM组件失败的解决方案
    水晶报表的交叉表中增加超级链接
    JavaScript和ExtJS的继承 Ext.extend Ext.applyIf (转)
    SQL SERVER 2000数据库置疑处理
    PHP中对淘宝URL中ID提取
    树莓派+蓝牙适配器连接蓝牙设备
    树莓派摄像头模块转成H264编码通过RTMP实现Html输出
  • 原文地址:https://www.cnblogs.com/liujitao79/p/12617544.html
Copyright © 2020-2023  润新知