
th.jpeg
虽然我很早就听说过elementary这个linux发行版,但是直到最近我才发现,与最美发行版之间差的是一台很好的屏幕。另一个机缘巧合是,我多了一个80G的机械移动硬盘。废话不多说了,我们开始:)
我们的目标是让移动硬盘可以同时兼容UEFI+GPT与BIOS+MBR
首先到官网下载iso的镜像。
在download下选择torrent,这样会快一点,如果你用迅雷的话。
制作u盘启动盘
随便找个工具做个u盘启动盘,或者如果跟我一样本身用Ubuntu并且是用grub的话,可以改下grub.cfg让grub加载iso镜像。
先给移动硬盘分下区
这一步可是重点,关乎成败。
我是直接用的parted命令。
首先分一个15G 的ext4的分区,用来装系统。
然后分一个512兆的fat32的分区,用来做esp,记得添加boot与esp标志。这是为了UEFI而服务的。
然后分一个只有1M的分区,不用管类型,只记得添加bios_grub标志。这个是为了让gpt的分区表可以兼容mbr,否则后面grub-install会出错。
最后留60G用来发挥移动硬盘的身作用……
将elementary os的live启动起来,然后选择安装
将系统安装在刚刚的第一个15G的分区里就好。
使用grub来进行引导。
首先是bios+mbr的
方法是grub-install --boot-directory=DIR /dev/sdb 注意后面是整个sdb设备就好。
接着是UEFI 的
方法一样是grub-install命令:
grub2-install--efi-directory=DIR --boot-directory=DIR --bootloader-id=GRUB2 --removable /dev/sdb2
上面的DIR都是放grub文件夹的,他会在DIR下自动生成grub需要的文件,我们要做的就是再在grub下写个grub.cfg文件用来显示启动项。
写grub.cfg文件
这个很简单,关键是启动项:
menuentry 'elementary' --class elementary --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-afc0f1d3-dc37-41cd-b407-f608c77888c5' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd1,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt1 --hint-efi=hd1,gpt1 --hint-baremetal=ahci1,gpt1 afc0f1d3-dc37-41cd-b407-f608c77888c5
else
search --no-floppy --fs-uuid --set=root afc0f1d3-dc37-41cd-b407-f608c77888c5
fi
linux /boot/vmlinuz-4.13.0-41-generic root=UUID=afc0f1d3-dc37-41cd-b407-f608c77888c5 ro quiet splash $vt_handoff
initrd /boot/initrd.img-4.13.0-41-generic
}
submenu 'elementary 高级选项' $menuentry_id_option 'gnulinux-advanced-afc0f1d3-dc37-41cd-b407-f608c77888c5' {
menuentry 'elementary,Linux 4.13.0-41-generic' --class elementary --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.13.0-41-generic-advanced-afc0f1d3-dc37-41cd-b407-f608c77888c5' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd1,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt1 --hint-efi=hd1,gpt1 --hint-baremetal=ahci1,gpt1 afc0f1d3-dc37-41cd-b407-f608c77888c5
else
search --no-floppy --fs-uuid --set=root afc0f1d3-dc37-41cd-b407-f608c77888c5
fi
echo '载入 Linux 4.13.0-41-generic ...'
linux /boot/vmlinuz-4.13.0-41-generic root=UUID=afc0f1d3-dc37-41cd-b407-f608c77888c5 ro quiet splash $vt_handoff
echo '载入初始化内存盘...'
initrd /boot/initrd.img-4.13.0-41-generic
}
完成,可以都换几个电脑试试

屏幕截图 2018-05-21 21.38.32.png