我希望在我的 iMac 上通过外部 USB 存储(外部磁盘或闪存驱动器)运行 Ubuntu。
我可以轻松创建可启动的 USB 棒,并用它在正确分区的 USB 设备上安装 Ubuntu 14.04。但是,与这里和其他地方的一些断言相反,重新启动后,Mac 并未检测到结果为可启动。
我在 Google 上搜索了很多次,确信可以让 Mac 启动它,但我发现的说明要么太模糊(在外部硬盘上安装 Ubuntu 并在 Mac 中启动)或者在某种情况下,过于复杂(http://www.rodsbooks.com/ubuntu-efi/) 似乎很有意义。然而,共同点似乎是使用 rEFInd 来重新调整启动选项。
因此,我设法将 rEFInd 安装在外部驱动器的一个分区上,但它没有检测到 Ubuntu 安装。我在同一磁盘上有一个 ext2 /boot 分区,并将 ext2_x64.efi 复制到 /EFI 目录中,但没有成功。
我现在有点卡住了,下一步必须详细研究引导加载程序和 EFI。不过,我想我一定快要解决这个问题了,希望有人能指出一步一步的指南。
回顾一下:
- USB 磁盘有 ext2 /boot 分区(上面有 vmlinuz 映像),以及安装了 Ubuntu 14.04 其余部分的 ext4 / 分区
- 安装后无法启动
- 将 rEFInd 放在另一个包含 /EFI 目录的 FAT32 分区上
- 将 ext2_x64 复制到 /EFI/boot 和 /EFI/refind
- 可以启动,rEFInd 加载,有一个启动 ext2_x64.EFI(?) 的选项,但没有 Ubuntu/vmlinuz。
如果我能解决这个问题,我会在网上的某个地方放一个清晰的指南!
答案1
好吧,我花了整整一天的时间才解决这个问题。
我真诚地希望其他可怜的灵魂也能从中得到一些价值。
这是一个可行的方法(至少在我的装有 Ubuntu 14.04 的 iMac 上):
- 使用可启动 USB 启动,安装 Ubuntu
- 按如下方式对 USB 进行分区:
- 200MB EFI 启动分区
- 200MB ext2,挂载至
/boot
- 如果需要,可以交换空间
- 一个或多个其他分区以正确保存 Ubuntu(例如 ext4
/
)
- 完成安装,重新启动至 OS X
- 获取 gdisk(OS X 的 pkg 安装程序)和 rEFInd 二进制文件
- 从控制台执行“diskutil list”并记下设备名称和 EFI 分区(例如
/dev/disk3
,/dev/disk3s1
) - 按照 gdisk 的说明进行操作http://www.rodsbooks.com/ubuntu-efi/在“修复安装”下第 6 点
在 USB 的 EFI 分区上安装 rEFInd。从 refind 目录:
./refind-install -–usedefault /dev/disk3s1
(您可以将文件拖入命令提示符以获取完整路径)
然后当您重新启动时,您可以通过“EFI Boot”进入 rEFInd,并且应该有一个启动 GRUB/linux 的选项。
我在这里更详细地记录了这一点:http://coljac.net/2014/stuff/installing-ubuntu-onto-a-bootable-usb-stick-or-other-device-on-a-mac/
答案2
如果您不想更改 Mac 的默认引导加载程序并希望 USB 密钥可从任何 Mac 引导,那么我找到了以下解决方案:
- 选择“无需安装即可试用 Ubuntu”来启动 Ubuntu Live 版本
ubiquity --no-bootloader
通过终端命令启动安装程序来阻止任何引导加载程序的安装- 在目标 USB 驱动器上擦除并安装 Ubuntu
- 重启 Mac,使用 Ubuntu Live USB 启动 grub 命令行,当 GRUB 引导加载程序出现时按“c”
- 手动启动已安装的 Ubuntu 系统
修复 EFI 分区:
安装所需的软件包:
$ sudo apt-get update $ sudo apt-get install mactel-boot hfsprogs gdisk grub-efi-amd64
使用
gdisk
并将mkfs.hfsplus
现有分区替换为 Apple HFS/HFS+ 分区- 用以下代码替换文件
UUID=... /boot/efi vfat defaults 0 1
中现有的条目/etc/fstab
UUID=<your usb EFI partition uuid> /boot/efi auto defaults 0 0
- 跑步
sudo mount /boot/efi
创建所需的目录和文件:
$ sudo mkdir -p "/boot/efi/EFI/$(lsb_release -ds)/" $ sudo bash -c 'echo "This file is required for booting" > "/boot/efi/EFI/$(lsb_release -ds)/mach_kernel"' $ sudo bash -c 'echo "This file is required for booting" > /boot/efi/mach_kernel'
安装 GRUB:
$ sudo grub-install --target x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi --bootloader-id="$(lsb_release -ds)"
祝福引导加载程序代码:
$ sudo hfs-bless "/boot/efi/EFI/$(lsb_release -ds)/System/Library/CoreServices/boot.efi"
创建 GRUB 配置:
$ sudo sed -i 's/GRUB_HIDDEN/#GRUB_HIDDEN/g' /etc/default/grub $ sudo sed -i 's/GRUB_TIMEOUT=10/GRUB_TIMEOUT=0.1/' /etc/default/grub $ sudo grub-mkconfig -o /boot/grub/grub.cfg
现在,只需在启动时按住“Option”键即可从任何 Mac 启动系统。
我在这里详细说明了说明:使用纯 EFI 启动在 USB 上安装 Ubuntu(兼容 Mac)
答案3
我跳过了解决方案中提到的整个 gdisk 操作。仅此一项就对我有用
./refind-install -–usedefault /dev/<EFI-disk-of-external-storage-where-ubuntu-is-installed>
答案4
在外部驱动器上安装 OSX 的全新副本,然后像双启动系统一样在同一个外部驱动器上安装 Ubuntu。安装完成后,如果插入了 USB 驱动器,Ubuntu 将从该驱动器启动。如果移除了 USB 驱动器,您将看到 Grub 命令行。只需输入“exit”即可启动内部 OSX 安装。插入 USB 驱动器即可加载 Ubuntu。
这不会改变原始的 OSX 安装。
我能够在 64GB USB 闪存驱动器上安装 Ubuntu,然后安装 Kubuntu,运行效果非常好。我刚刚安装了 Kodi,它在闪存驱动器上运行效果出奇地好。我只有 USB 2.0,所以速度有点慢。我最终安装了 Kubuntu,因为 Plasma 5.0 桌面环境比 Ubuntu 使用的桌面环境更精致一些。
我希望这能帮助简化一些事情。这不是最优雅或技术性的方法,所以它并不完美,但它是有效的。