zoukankan      html  css  js  c++  java
  • U盘+GRUB2引导PE或linux镜像

    利用U盘制作启动盘,引导WinPE、Linux安装的文章多如牛毛,与他们相比本文的特点有:


    1.用且仅用grbu2做引导。不使用grub4dos,不是使用msdos mbr转到活动分区,到ntldr,然后再到grldr,到LDRXPE,启动winpe……


    2.使用grub-install命令安装引导。使用windows下的UltraISO、linux下的dd命令、以及其他第三方软件改写mbr,保证U盘容量、数据和完整性。


    3.grub2直接引导各系统。各系统分目录存放,grub2直接引导目录内文件,不使用chailoader,u盘根目录下可无任何文件,不通过任何其他方式间接引导,简洁明快、避免混乱。


    U盘内容如下,包括:

    arch——Archlinux安装镜像

    grub——grub各配置项

    WXPE和Programs——WinPE及其各种Windows实用程序

    ubuntu.iso——Ubuntu liveCD

    一、安装grub2到u盘。

    grub2在各大linux版本中均有采用,它的强大这里就不多说了,基本上任何系统都是有可能通过它引导起来的,而且引导界面可定制,彩色菜单,图片显示都不在话下。这里先把grub2安装到U盘上:


    U盘不分区,任何格式都可以,因为兼顾windows和linux所以建议采用fat32格式,大小1G以上(这包括除了U系统外平时还能当正常U盘使用的空间)。格不格式化随你,因为数据可以安全保留。

    我这里从一个空白的2G kingston U盘开始,先格式化为fat32,查寻一下uuid为:696C-0B1C,卷标为:fairy,备用。

    然后安装grub2到U盘,进入你的linux:


    Archlinux下运行命令:

    ——————————————————————————————————————————————

    $ sudo grub-install --boot-directory=/run/media/lcc/fairy --no-floppy --target=i386-pc --recheck /dev/sdb

    $ sudo cp /usr/share/grub/{unicode.pf2,ascii.pf2} /run/media/lcc/fairy/grub

    $ sudo cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /run/media/lcc/fairy/grub/locale/en.mo

    $ sudo GRUB_PREFIX="/run/media/lcc/fairy/grub" grub-mkconfig -o /run/media/lcc/fairy/grub/grub.cfg

    ——————————————————————————————————————————————

    注:这里/dev/sdb为U盘对应设备,/run/media/lcc/fairy为U盘的挂载点,请参照修改。也可以不运行中间两条命令,只是增加了一些ascii,en支持。


    Ubuntu下运行命令:

    ——————————————————————————————————————————————

    sudo grub-install --root-directory=/media/u /dev/sdb

    sudo update-grub

    ——————————————————————————————————————————————

    注:这里/dev/sdb为U盘对应设备,/media/u为U盘的挂载点,请参照修改。此处未亲自测试,不对指出请指正。


    好了,现在grub2已经安装到U盘mbr上了,而且还按照机子上的系统生成了默认的启动菜单/grub/grub.cfg,这时通过U盘启动,可以看到grub2的引导界面,并且可以完美引导电脑硬盘上的系统了。当然这些硬盘系统的引导项我们不需要,可通过修改U盘上的/grub/grub.cfg来删除。


    二、grub2引导WinPE

    1.U盘上建立WXPE目录,将WinPE文件放置入内:

    目前网络上的WinPE到处都是,各种版本其实都差不多,主要需要如下5个文件:


    LDRXPE  NTCOM  PE  SETUPLDR.BIN  WINPE.IS_


    大致过程是:LDRXPE调用NTCOMSETUPLDR.BIN读取PE找到WINPE.IS_镜像,加载WinPE。


    2.修改grub.cfg,加入winpe引导项:

    —————————————————————

    menuentry 'LDRXPE for WinCE (on /usb/fairy)'{

    insmod part_msdos

    insmod fat

    set root='hd0,msdos1'

    search --no-floppy --fs-uuid --set=root 696C-0B1C

    ntldr /WXPE/LDRXPE

    }

    —————————————————————

    说明:此处的696C-0B1C为U盘分区uuid,其实这一句也可以不要,因为上面已经set root了,主要为了双保险。


    这里的关键是:ntldr /WXPE/LDRXPE,而不是chainloader或者linux,我用后者尝试了一周都不得成功,最后才发现了可以直接用ntldr命令,强大啊!!


    三、grub2引导Archlinux镜像

    1.解压Archlinux最新安装镜像:archlinux-2012.11.01-dual.iso,复制其中的arch目录到U盘。

          EFI  isolinux  loader这三个目录不需要。


    2.精简arch目录:

    因为我要用的是32位的,而不用64位的所以删掉64位的相关目录和文件,包括:

    删除arch/x86_64目录; 

    删除arch/boot目录下的:memtest  memtest.COPYING  syslinux  x86_64

    修改arch/aitab,注释掉x86_64的两行。

    当然你的空间足够大,这些都可以不做。


    3.修改grub.cfg,加入arch引导项:

    ———————————————————————————————

    menuentry 'archlinux-2012.11.01-setup (on /usb/fairy)'{

    insmod part_msdos

    insmod fat

    set root='hd0,msdos1'

    search --no-floppy --fs-uuid --set=root 696C-0B1C

    linux/arch/boot/i686/vmlinuz archisobasedir=arch archisolabel=fairy

    initrd/arch/boot/i686/archiso.img

    }

    ———————————————————————————————

    说明:同上此处的696C-0B1C为U盘分区uuid,其实这一句也可以不要,因为上面已经set root了,主要为了双保险。


    这里的关键是:archisobasedir=arch archisolabel=fairy ,这里的fairy是U盘的卷标,少了这句是不得成功的。


    四、grub2引导Ubuntu liveCD

    1.复制ubuntu-12.04-desktop-i386.iso到U盘根目录,当然为了根目录干净放到iso或者其他目录也可以,以下做对应修改。


    2.修改grub.cfg,加入ubuntu引导项:

    ——————————————————————————————————————————————

    menuentry 'ubuntu-12.04-desktop-i386.iso' {

    insmod fat

    insmod loopback

    insmod iso9660

    loopback loop (hd0,1)/ubuntu-12.04-desktop-i386.iso

    set root=(loop)

    linux /casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-12.04-desktop-i386.iso noprompt noeject locale=zh_CN.UTF-8 --

    initrd /casper/initrd.lz

    }

    ——————————————————————————————————————————————

    说明:

    hd0,1 指得是U盘第一分区,我这里只有一个分区。

    iso-scan/filename=/ubuntu-12.04-desktop-i386.iso这里要注意ubuntu前面的“/”,如果找不到文件会出现can't open /dev/sr0错误。

    locale=zh_CN.UTF-8 是设置中文环境,很多人引导成功却是英文环境的,加上这条就可以了。

    ubuntu的iso镜像顺利引导,进入 ubuntu的live cd桌面,桌面上有 install ubuntu的字样,和光盘启动时的样子一模一样,不过与光盘安装有一点不同,也很重要,就是之前我们挂载了iso设备,现在要卸载它,不然会出现分区表问题。在终端里输入:

    1
    sudo umount -l /isodevice
  • 相关阅读:
    servlet中如何实现通过Spring实现对象的注入
    异步Socket
    JAVA NIO实现
    【Java并发】
    JAVA实现阻塞队列
    lock与synchronized比较
    线程执行顺序
    ConcurrentHashMap 1.8
    LeetCode 416 分割等和子集
    linux常用指令
  • 原文地址:https://www.cnblogs.com/xiongwei/p/9549702.html
Copyright © 2011-2022 走看看