想好好折腾linux, 选择Ubuntu入手, 但想到linux下配置啥的挺麻烦, 装个系统最好能长久用下去, 于是就将ubuntu安装到移动硬盘上, 这样到哪都好用了.
如何在ubuntu安装到移动硬盘?
1. 首先制作一个u盘版的livecd. 这个可以用Fedora LiveUSB Creator, 兼容Ubuntu, 网址是https://fedorahosted.org/liveusb-creator/, 几分钟就搞定了
2. 选择从u盘启动, 进入livecd系统, 相当于体验版. 选择安装Ubuntu, 注意分区选择移动硬盘, 挂载点最简单的是根目录和swap, 其他按序挂载; 最后"安装启动引导器的设备"选择移动硬盘, 如sda, 而不是它的某个分区, 如sda1, 这样系统就可以从移动硬盘启动了.
只要简单两步就安装完成了, 同理如果把ubuntu安装到U盘上也是一样的.
------------分割线----------------
装完后在自己电脑上成功启动, 但换个电脑就不行了. 按照对linux启动的了解, 启动的先后顺序是BIOS, MBR, BootLoader, OS. 已经系统的grub(GRand Unified Bootloader)安装到移动硬盘上了, 从移动硬盘启动时, MBR能直接识别Grub以启动系统, 在自己电脑上试验成功说明安装的确是成功的.
tips. 事实上, 这个版本系统是用UCloner克隆到移动硬盘上, 或许问题出在此.
在其他电脑上启动时, 无法启动grub, 而是进入了grub rescue, 显示信息为
error: unknown filesystems
grub rescue>
网上遇到这个问题多数是安装了windows+ubuntu双系统后, 在windows对磁盘重新分区导致的, 与我在移动硬盘上的ubuntu在别的电脑上运行类似, 疑问: 为什么grub启动跟其他磁盘或分区有关系呢?
一. 在grub rescue中通过ls查看磁盘和分区, 如果ls (hd0,6)/boot/grub显示信息, 说明(hd0,6)是安装/boot的分区, 可通过以下命令进入系统
set root=(hd0,6)
set prefix=(hd0,6)/boot/grub
insmod normal
normal
# after getting into ubuntu
sudo update-grub
sudo grub-install /dev/sda但本人ls每个个分区都是出错, set命令显示的boot和prefix都是指向实际的'/'分区.
二. 继续搜索网上解决方法, 多是reinstalling GRUB from the LiveCD, 如下:
sudo mount /dev/sda4 /mnt
sudo grub-install --boot-directory=/mnt/boot /dev/sda
# sda4 is the / partition, so sda is the disk
# Back in Ubuntu
sudo update-grub但本人试过这个方法, 没有成功.
三. 坚持不懈的搜索, 终于发现这句话:Some bioses have a maximum read capability of 137GB and will therefore not find boot files which are on the disc after that limit.
有些bios的读取磁盘能力有限, 只能读前137G大小的内容. 这才发现最初因为移动硬盘前面部分存了几百G的资料, 为省力直接在磁盘后面部分划分出空闲空间作为linux分区. 重新将linux安装到移动硬盘前面部分, 便可以到处启动啦, 真心坑爹啊!!
p.s. 下面是两个启动信息分析工具, 如有其它问题, 可以检测后, 贴到论坛让大牛们帮忙分析:
1. Boot-Repair: https://help.ubuntu.com/community/Boot-Info
2. Boot Info Script: http://bootinfoscript.sourceforge.net/