距离上次发文也一年多了, 真是时光飞逝. 这一年工作接触了很多也做了很多, 不过其实学得越多越发现自己是小白, 也不好意思写文章误导大众了><, 分享一些小经验吧.
话说最近转战Arch Linux, 不过U盘已经放了个Windows 7, 就想弄个双启动. 双启动就得给U盘重新装个引导呗, 不过折腾了半天syslinux没搞定, 启动时卡在那黑屏, 也没啥报错信息. 还是上GRUB吧. 以下是在U盘上安装GRUB并配置双启动的方法.
U盘的目录结构
由于我的U盘之前做成了Windows 7的安装盘, 所以弄成了如下的文件结构. 直接引导Windows 7的ISO谁有兴趣的话也可以尝试下.
- Windows 7: 直接解压镜像至U盘根目录.
- Arch Linux: 直接把ISO放于U盘/boot/isos/下.
GRUB的安装
在Ubuntu下直接用grub-install即可, 其它系统可查阅相关文档.
grub-install --boot-directory=/mnt/usb/boot /dev/sdb
其中/dev/sdb是U盘设备, 假设U盘被挂载到/mnt/usb目录下.
GRUB的配置
以下是grub.cfg, 在U盘的/boot/grub/下, 注意不要和你硬盘的/boot搞混了!
set timeout=10 set default=0 menuentry "Arch" { set isofile="/boot/isos/archlinux-2013.09.01-dual.iso" loopback loop /$isofile linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201309 img_dev=/dev/disk/by-label/GSP1RMCULXF img_loop=$isofile earlymodules=loop initrd (loop)/arch/boot/x86_64/archiso.img } menuentry "Windows 7" { insmod part_msdos insmod ntfs insmod ntldr ntldr /bootmgr }
其中Arch的引导需要指定下镜像文件所在设备的路径img_dev, 我这边是根据U盘的Label(img_dev=/dev/disk/by-label/GSP1RMCULXF)找的, 不知道有没有更好的办法.
至此从U盘启动的时候就会出现启动菜单, 当然也可以类似地加入Ubuntu等, 不过要注意的是其它发行版和Arch的ISO目录结构可能不太一样, 需要查阅下相关文档看怎么配置引导.
完结撒花><!
2014.04.16 Update
贴一个Ubuntu的配置:
menuentry "Ubuntu 13.10 Desktop amd64" { set isofile="/boot/isos/ubuntu-13.10-desktop-amd64.iso" loopback loop /$isofile linux (loop)/casper/vmlinuz.efi boot=casper img_dev=/dev/disk/by-label/GSP1RMCULXF iso-scan/filename=$isofile noprompt noeject initrd (loop)/casper/initrd.lz }