可以动态增加系统的U盘启动器(基于grub)

  前言:最近面试无果,就在宿舍看那本《30天自制操作系统》,里面使用的系统文件格式是img,要在真机上运行,就需要使用U盘进行启动,因为现在都没有软盘。而网上很多都是用软件写入U盘的。反正我查过的都是一次写入,下次要覆盖使用最新编译的还是要用软件写入。所以就想用一个一劳永逸的办法,只要把IMG文件复制到U盘即可启动。并且每次新的编译后IMG只要覆盖进U盘即可。比较方便。

一、准备几个软件

  硬件:准备一个2G以上的U盘

  软件:1.grubinst 用来给U盘写入引导记录

2.grub4dos-0.4.4 用来制作多重引导菜单

3.各种操作系统

二、制作grubinst过程

  1.解压grubinst并运行grubinst_gui.exe选择对应的U盘hd1.

可以动态增加系统的U盘启动器(基于grub)

  2.分区列表点击刷新,选择整个磁盘MBR

  3.注意,点击刷新后可能会出现此提示,无需理会,点击确定即可

可以动态增加系统的U盘启动器(基于grub)

  4. 若:如下图: 下拉列表中没有MBR字符,则此U盘没有MBR分区,无法做启动盘.

可以动态增加系统的U盘启动器(基于grub)

    若:如下图:下拉中有MBR字符,则此U盘可以做启动盘.

可以动态增加系统的U盘启动器(基于grub)

  5.点击“安装”,如果成功会出现控制台,上面写着

The MBR/BS has been successfully installed

Press <ENTER> to continue …

意思是说主引导记录写入,按回车继续。这一步只是写入U盘引导记录。

三、把grub4dos-0.4.4解压后找到核心文件grldr和grub.exe和menu.lst,并复制到U盘的根目录中。

四、下载所有需要的操作系统,我这里下载了BT3,CDlinux,Beini还有《30天自制操作系统》里面的haribote.img作为例子。

  1.解压Bt3,CDlinux,Beini到根目录,因为解压后会有一些目录是相同的名字,我们可以进行重命名。具体的重命名可以随意改。而img文件就直接放到根目录就可以了。

  2.处理后的目录如下

可以动态增加系统的U盘启动器(基于grub)

  3.现在最关键的是修改menu.lst文件,下面是我的配置文件

 default=0
timeout 20 default /default title 1 BackTrack3
find --set-root /bootbt3/vmlinuz
kernel /bootbt3/vmlinuz root=/dev/ram0 ramdisk_size=6666 autoexec=kdm vga=791
initrd /bootbt3/initrd.gz title 2 cdlinux
find --set-root /CDlinux/bzImage
kernel /CDlinux/bzImage quiet CDL_LANG=zh_CN.UTF-8
initrd /CDlinux/initrd title 3 beini
find --set-root /bootbeini/bzImage
kernel /bootbeini/bzImage quiet max_loop=255 tce=sdb1 waitusb=6
initrd /bootbeini/tinycore.gz title 4 hello
map --mem /hello.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
map --floppies=1
boot title 5 winpe
find --set-root /ntldr
chainloader /ntldr

上面有些参数和设置我是不懂的,不过那些目录路径还是很容易看懂和修改的。

因各人的硬件设置不尽相同,如果检测时发现 beini不能启动或启动后不正常,请更改“sdb1”参数,即 U盘在 linux系统下的名称。常用的有 sda1,sdb4等,具体可在启动 bt3或 cdlinux系统后,在其中查看具体显示名称,更改即可。

  4.运行结果,在真机上是可以运行的。下面这个图是我在虚拟机中截的。

可以动态增加系统的U盘启动器(基于grub)

五、vm虚拟机使用U盘启动

1.一般创建虚拟机的步骤都懂的,这里就不介绍了。

2.在创建完虚拟机后,选择虚拟机设置

可以动态增加系统的U盘启动器(基于grub)

3.下一步,选择“Use a physical disk(for advanced users)”然后Next。

可以动态增加系统的U盘启动器(基于grub)

注意如果没有出现所需要的U盘选项,那大概是虚拟机没有识别出来,只是重插U盘。或者重新启动虚拟机软件。有时候是因为U盘接口控制没有选上,只要选上就可以了

可以动态增加系统的U盘启动器(基于grub)

4.选择PhysicalDrive1,这里的选项将取决于你计算机所有的物理硬盘。然后下一步就会出现下面这个磁盘信息。

可以动态增加系统的U盘启动器(基于grub)

嗯,3.7G对了,就是这个了。然后就完成了。

5.虚拟机中设置BIOS(加电自检是按下F2进入),修改Boot启动项。

可以动态增加系统的U盘启动器(基于grub)

  我的U盘是SCSI Hard Drive(0:1)的。一开始默认是(0:0)的只是我总是启动不了,就修改成(0:1)了不知道有没有关系,就在这里说明一下。

可以动态增加系统的U盘启动器(基于grub)

让Hard Drive为第一启动项,就可以了。

可以动态增加系统的U盘启动器(基于grub)

  到这里就可以实现动态增加操作系统的U盘系统了。如果有合适的系统就可以复制到该U盘里,然后修改menu.lst文件就可以了,不用每次都用软件写入iso文件。

六、资料下载

  用到的两个grub软件和我参考的一个pdf文件 http://files.cnblogs.com/wunaozai/grub.zip

  本文连接 http://www.cnblogs.com/wunaozai/p/3854875.html

上一篇:mk-js,一个基于react、nodejs的全栈框架


下一篇:LeetCode之“动态规划”:Unique Binary Search Trees && Unique Binary Search Trees II