【转载】如何在MacBookPro上把Ubuntu安装到移动硬盘里过程记录

以下主要目的是记录安装过程中的问题,安装步骤等信息怕忘记

环境信息:

Mac :macOS High Sierra 10.13.6 内存8G(Swap时用到)

Ubuntu: ubuntu-22.04.4-desktop-amd64.ios

金士顿U盘:Kingston-64G

烧录软件:balenaEtcher-1.18.11

固态移动硬盘:西部数据512G

注意项:

1.装机有风险,请先备份电脑里的资料。具体不在赘述,可看原著温馨提示。

2.U盘大于2G以上的,质量好的(博主说的),否则在烧录过程中会失败(烧录失败2个U盘)。

转载原文如下:

如何在Macbook上把Ubuntu安装到移动硬盘里 - 知乎

如何在Macbook上把Ubuntu安装到移动硬盘里-CSDN

具体步骤

1.格式化移动硬盘并分区

2.烧录Ubuntu镜像到U盘

3.U盘安装Ubuntu到移动硬盘

4.设置开机启动

格式化移动硬盘并分区

  • 插入移动硬盘,打开磁盘工具

  • 选择新插入的移动硬盘(千万不要选错了你Macbook的硬盘
  • 未分区硬盘路径是如下(借用原著的图)

  • 如果不一样,点左上角显示所有设备。如下是制作完毕的盘

  • 选中外置硬盘->抹掉(格式化) EmptyDisk

  • 再次选中你的移动硬盘,制作Ubuntu的boot loader。点击分区UbuntuBootLoader这里多分配一些,根据实际情况分配。原著分配了256MB,点击应用
  • 完成后如下,可推出硬盘。有两个分区,分别是EmptyDisk和UbuntuBootLoader。
  • 系统装在EmptyDisk
  • 安装开机启动项UbuntuBootLoader

烧录Ubuntu镜像到U盘

  • 下载Ubuntu镜像  ubuntu-22.04.4-desktop-amd64.ios    ubuntu其他版本
  • 下载balenaEtcher烧录镜像App   balenaEtcher-1.18.11

  • 打开balenaEtcher,烧录Ubuntu镜像到U盘。选择Ubantu镜像和U盘。注意不要选择错存储盘。点击现在!等待完成。

  • 会提示成功烧录,此时可能弹出USB不可读的提示信息,先忽略。

  • 打开Terminal 查看你的USB,并推出U盘,制作完成。
//查看
diskutil list
//推出U盘,把diskN换成和USB对应的盘
diskutil eject /dev/diskN

U盘安装Ubuntu到移动硬盘(会引用大量原著图)

  • 关机,插入烧录U盘、移动硬盘(之后插入硬盘GParted识别不到,原著可以)。
  • 开机,长按Option键,直到出现如下画面,选择EFI Boot选项:

  • 进入后ubuntu-22.04.4版本会与原著不一样,没有拍照选择第一个选项(大概是Ubuntu...Installing)
  • 进入Ubuntu后选择Try Ubuntu

  • 打开GParted

  • 在GParted中,点击右上角的方框选择你的移动硬盘(再次注意不要选错了你的Mac硬盘)。

  • 把移动硬盘中,除了UbuntuBootLoader以外的所有分区都删掉。
  • 例原著中,要删掉的分区就有一个标记着EFI的fat32格式分区,还有一个标记着EmptyDrive的hfs+格式分区。要删除一个分区,鼠标点击该分区,然后点左上方的红色圆圈斜杠图标,该分区就会出现在等待删除的序列中。

  • 如下原著注意情况未遇到,保留一下。
  • 原著注:如果你的分区中出现了一把小钥匙的图标,说明该分区被锁住了。这是因为这个文件系统已经挂载(mounted),要把它卸载下来(Unmount)。可以右键点击(在Mac接触板上两只手指同时点),然后选择Unmount。如果Unmount的选项变成了灰色不给选的话,就Ctrl+Alt+T打开Terminal,然后在上面输入sudo umount /dev/sdNk (把sdNk换成你要卸载的文件系统对应的位置,例如此处可以是sudo umount /dev/sdd2。如果你不知道它的位置的话,可以在GParted最左边一列Partition中看到,或者输入指令lsblk查看)。
  • 另原著注:如果你要复制粘贴到Terminal的话,用Ctrl+c复制,然后在Terminal用Ctrl+Shift+v粘贴。
  • 选择好所有要删除的分区后,点击上方绿色的钩,实施操作 。

  • 分区删除后,你的移动硬盘就只剩下UbuntuBootLoaderunallocated的区域。
  • 选中unallocated区,新增两个分区(点击Partition -> new,填好设置后点Add
  • Swap 分区
    • New Size: 8192 MiB(跟你电脑的RAM一样大或者稍大一点)
    • Created as: Primary Partition(有别的教程显示要用Logical,但是我在这里没法选所以就没改它,也安装成功了,使用正常)
    • File system: linux-swap

  • Root分区
    • New Size: 剩下的全部空间(除非你想多分几个区)
    • Created as: Primary Partition
    • File system: ext4
    • Label: 爱写啥写啥

  • 点击上方绿色的钩,应用更改

  • 分区完成,关掉GParted。

  • 安装Ubuntu
  1. (可选)链接Wifi,作用见第4步
  2. 双击主屏幕左上角的"Install Ubuntu"
  3. 选择语言
  4. 选择安装项(注:如果你没有开Wifi的话,第一项下载更新会变得不可选。但也没有关系,可以安装完再下载更新,只是说时间可能会长一些。),点Continue

  • 因为要安装在移动硬盘上,所以要选择Something else

  • 找到你刚才设置的ext4格式的分区(检查一下分区名和空间大小是对的),点它。

  • 选择Change,然后按下图设置:
    • Size:不用改
    • Use as: Ext4 journaling file system
    • 选Format the partition
    • Mount point: / (主分区root)

  • 在下方"Device for boot loader installation",选这一个ext4格式的分区(注意不要选了整个/dev/sdd,因为我们还要留下一个UbuntuBootLoader的区域在下一步安装启动项)。例如此处选择的是/dev/sdd2

  • 点击Install now开始安装,等个大概10~20分钟。

  • 安装结束后,选择Continue testing,我们要继续设置开机启动项。

设置开机启动项

  • 1.Ubuntu中设置
  • Ubuntu已经在硬盘中,但开机不会显示,Mac要识别这个为bootable的话,它还需要一个EFI boot loader。所以我们要在Ubuntu里面创建一个boot.efi文件。
    • 打开Terminal,快捷键Ctrl+Alt+T
    • 输入以下命令,把sdaN换成你自己,中设置成ext4的分区名,不知道可以在打开GParted查看
//1.sda3我自己的
sudo mount /dev/sdaN /mnt
//2.然后输入以下指令,挂载几个其它的路径
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
//3.把root路径改成/mnt,这样Terminal的bash session就是在Ubuntu里面运行了
sudo chroot /mnt
//4.设置GNU GRUB(GRand Unified Bootloader):
grub-mkconfig -o boot/grub/grub.cfg
//5.把它保存到一个boot.efi文件中:
grub-mkstandalone -o boot.efi -d usr/lib/grub/x86_64-efi -O x86_64-efi --compress=xz boot/grub/grub.cfg
//6.退出
exit
//7.把boot.efi文件拷贝到这个Ubuntu的live session中:
cp /mnt/boot.efi /home/ubuntu
  •  然后在home文件夹下找到boot.efi文件,通过邮件发送给自己,或者保存在你的云盘上
  • 指令图如下

  • 关闭Ubuntu,拔出装机的USB(就是烧录了镜像的USB,不是你的移动硬盘!)。

  • 2.关闭Mac系统的SIP(System Integrity Protection)
  • 如果你的Mac系统是El Capitan(10.11)或以上(一般都是,毕竟现在都出到Big Sur(11.X)了),Mac系统有额外的安全设置SIP(System Integrity Protection),我们需要先关掉它。
  1. 关机之后重启电脑同时摁住Command+R直到苹果的标志出现,进入恢复模式(Recovery Mode)。点击你的用户名,输入密码。

2. 屏幕上方,点击Utilities -> Terminal

3. 在Terminal里面输入:

csrutil disable

4. 摁回车,然后点Restart重启电脑。

注:重启时如果看到写着grub的黑色屏幕,输入exit然后摁回车就好

  • 3.在移动硬盘中安装启动项
    • 开机进入系统MacOS打开Terminal,插入刚安装好Ubuntu的移动硬盘,会看到UbuntuBootLoader盘,做如下操作
//1.
cd /Volumes/UbuntuBootLoader/
//2.
sudo mkdir System mach kernel
//3.
cd System 
//4.
sudo mkdir -p Library/CoreServices
//5.
cd Library/CoreServices
//6.下载boot.efi文件,放在/Downloads文件夹,拷贝到引导盘下
sudo cp ~/Downloads/boot.efi ./
//8.下载SystemVersion.plist文件,放在/Downloads文件夹,拷贝到引导盘下
sudo cp ~/Downloads/SystemVersion.plist ./
//9.把diskNsK换成查到的,我的是disk2s2
sudo bless --device /dev/diskNsK --setBoot
  • 指令图

  • 打开Disk Utility(Go -> Utilities -> Disk Utility),查看你的UbuntuBootLoader的设备编号。或者你也可以在Terminal输入disktutil list查看。在我的是disk2s2

  • Ubuntu安装完成!!!!开机的同时摁住Option选择要进入系统

重启Mac系统的SIP(完结撒花✿✿ヽ(°▽°)ノ✿)

csrutil disable 换成csrutil enable即可。

各种问题

Q1.Ubuntu安装好后,第一步换成csrutil enable。否则开机grub的提示exit不好使。

Q2.原著中一劳永逸解决办法,进入MacOS以后,如下图。重启之后就再也不会见到grub了。

但在启动Ubuntu系统后,在启动MacOS,还是会进入grub。不知道是不是跟MacOS版本有关。待查,占时不影响使用。。

Q3.原著SystemVersion.plist文件要用梯子,懂得都懂!!!资源已上传

<xml version="1.0" encoding="utf-8"?>
<plist version="1.0">
<dict>
<key>ProductBuildVersion</key>
<string></string>
<key>ProductName</key>
<string>Linux</string>
<key>ProductVersion</key>
<string>Ubuntu Linux</string>
</dict>
</plist>

再次感谢原著作者!!!!

参考连接

Installing Ubuntu on an external SSD drive on a Macbook – Floris van Breugel

How to Create a Bootable Ubuntu USB Drive, for Mac, in OS X | Envato Tuts+

Ubuntu分区方案 - 知乎

boot - Grub rescue after installing Ubuntu on a external HDD from USB - Ask Ubuntu

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/829685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客NC371 验证回文字符串(二)【简单 双指针 C++/Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/130e1a9eb88942239b66e53ec6e53f51 思路 直接看答案&#xff0c;不难参考答案C class Solution {public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可…

Atlassian Jira 信息泄露漏洞(CVE-2019-3403) 排查思路

Atlassian Jira&#xff1a; 企业广泛使用的项目与事务跟踪工具&#xff0c;被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。 简述&#xff1a; 近日发现多个内网IP触发的Atlassian Jira 信息泄露漏洞的告警。 告警的检测规…

openvoice v2 声音克隆使用案例

参考: https://github.com/myshell-ai/OpenVoice/blob/main/docs/USAGE.md https://www.wehelpwin.com/article/4940 安装 1)下载OpenVoice项目安装 2)MeloTTS安装 参考:https://blog.csdn.net/weixin_42357472/article/details/136320097 pip install git+https://gith…

python读取文件

定义&#xff1a; python提供了读取任何文件的一种方法&#xff0c;可以读取计算机磁盘中文件中的数据 前提&#xff1a; 1&#xff0c;得准备一个文件 2&#xff0c;读取文件&#xff1a; 方式一&#xff1a; 文件模式&#xff1a; r:只读(read) w:写入(write) a:添加(add) 文…

记录不熟悉的函数用法(C++)——insert

2. insert 记录起因&#xff1a;接上一篇的例子&#xff0c;不知道为什么使用insert进行插入之前要先执行clear操作&#xff0c;非得这么做吗&#xff1f;我可以认为这个clear操作是对应于为空字符串的&#xff0c;可是仍然纠结insert它具体插入的位置&#xff0c;在后面追加还…

Sentinel 与 Hystrix:云原生时代的故障隔离与服务降级

在面对高流量和复杂的分布式系统时&#xff0c;保障服务的稳定性和可用性是至关重要的。故障隔离和服务降级是两种常用的技术手段&#xff0c;用来保护系统在面临故障或压力过大时仍能稳定运行。在这方面&#xff0c;Sentinel 和 Hystrix 是两个广泛使用的库&#xff0c;它们虽…

2398.预算内最多的机器人数目

我第一个手搓的hard的单调队列题目......灵神yyds 思路解析: 我做的时候感觉这个题目有点歧义,我以为他的连续运行是时间上连续,所以我开始写的代码是选择最多的子序列(可以不连续),使得不超过budget,这个求最多子序列的代码会在最后给出,不保证完全正确(因为没有太多测试点),…

element-ui et -i 编译默认主题报错:ReferenceError: primordials is not defined

报错信息如下 fs.js:40 } primordials;^ ReferenceError: primordials is not defined导致这个问题的原因&#xff1a;node和gulp版本冲突&#xff01;&#xff01; 我使用的是node 14版本 解决方法&#xff1a; 看了好几个帖子&#xff0c;都推荐使用node 11.15.0版本&am…

华为ensp中BGP(边界网关协议)基础原理及配置命令

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月27日10点04分 BGP&#xff08;边界网关协议&#xff09;是一种路由协议&#xff0c;用于在互联网中的不同自治系统&#xff08;AS&#xff09;之间交换路由信息。它…

WordPress外贸独立站如何提高询盘转化率

一、引言 在当今全球化日益加剧的商业环境中&#xff0c;外贸业务已成为众多企业寻求增长的重要途径。而WordPress作为一款强大且易于操作的建站平台&#xff0c;被广大外贸企业所青睐&#xff0c;用于构建自己的独立站。然而&#xff0c;仅仅拥有一个WordPress外贸独立站并不…

eCognition 分类

目录 前言 一、阈值分类 1、创建自定义特征 2、查看对象特征值 3、阈值分类 3.1 新建类别(如果已有类别即跳过) 3.2、建立分类阈值规则 4、导出分类结果 5、附录:如果需要合并结果、按以下步骤 二、监督分类 1、方法1:利用classification算法(主要用于最邻近)…

芯片安全(security)

芯片安全包括什么 芯片安全是为了防止芯片数据和程序遭遇非法攻击和访问等导致数据错误或者信息泄露或者非正常运行&#xff1f; 比如指纹信息被泄露&#xff1b;PC被植入非法挖矿程序&#xff1b;非法修改ddr中的数据等。 1.在子系统级别看到的axprot[1]和nsaid(non-securit…

sparkctl x86/arm不同平台编译使用

目录 1.sparkctl简介 2.环境准备 3.sparkctl编译 1.sparkctl简介 sparkctl是 Spark Operator 的一个命令行工具,用于创建、列出、检查状态、获取日志和删除SparkApplication。它还可以进行从本地端口到 Spark Web UI 端口的端口转发,以访问驱动程序上的 Spark Web UI。每个…

Python中实现多层感知机(MLP)的深度学习模型

深度学习已经成为机器学习领域的一个热门话题&#xff0c;而多层感知机&#xff08;MLP&#xff09;是最基础的深度学习模型之一。在这篇教程中&#xff0c;我将向你展示如何使用Python来实现一个简单的MLP模型。 什么是多层感知机&#xff08;MLP&#xff09;&#xff1f; 多…

java 中String、StringBuffer、StringBuilder有什么区别

String 了构造和管理字符串的各种基本逻辑。它是典型的 Immutable 类&#xff0c;被声明成为 final class&#xff0c;所有属性也都是 final 的。也由于它的不可变性&#xff0c;类似拼接、裁剪字符串等动作&#xff0c;都会产生新的 String 对象。由于字符串操作的普遍性&…

浅谈操作系统中的重要概念——线程

文章目录 一、进程概念产生的原因二、进程的弊端三、线程3.1、线程复用结构体PCB3.2、多线程弊端3.2.1、拖慢程序的效率3.2.2、产生线程安全问题3.2.3、导致整个进程终止 3.3、怎么判断一个线程是否执行完毕&#xff1f;&#xff1f;3.4、怎么终止一个线程&#xff1f;&#xf…

【学习笔记二十八】EWM和QM集成的后台配置和前台展示

一、EWM和QM集成概述 SAP EWM(扩展仓库管理)和QM(质量管理)的集成是SAP系统中一个重要的特性,它允许企业在仓库管理过程中实现质量控制和检验流程的自动化。以下是关于EWM和QM集成的一些关键点概述: 集成优势:通过集成,企业可以确保仓库中的物料在收货、存储、…

csdn的复制代码功能如何实现

页面布局分析&#xff1a; 按钮在文本框里面&#xff0c;所以文本框是父元素&#xff0c;按钮是子元素。要使得按钮在文本框的右上角&#xff0c;需要使用绝对定位。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8">…

实现ALV页眉页脚

1、文档介绍 在ALV中&#xff0c;可以通过增加页眉和页脚&#xff0c;丰富ALV的展示。除了基本的页眉和页脚&#xff0c;还可以通过插入HTML代码的方式展示更加丰富的页眉和页脚&#xff0c;本篇文章将介绍ALV和OOALV中页眉页脚的使用。 2、ALV页眉页脚 效果如下 2.1、显示内…

【Ubuntu20.04+gcc-9.4.0】Openface在linux下的详细环境配置(2024.4月)

近期&#xff0c;需要使用openface来进行人脸的crop&#xff0c;因此踩坑配置出在ubuntu20.04下的具体流程。话不多说&#xff0c;直接进入主题。 务必注意&#xff0c;按照顺序执行&#xff0c;否则很大概率报错&#xff01;&#xff01;&#xff01;1. 安装GCC&#xff0c;我…