一、BBBBB 叨

其实一开始,我想弄个Ubuntu系统来编译Android源码,但是Mac的500G硬盘满了,所以想把Ubuntu 装到移动硬盘里面,刚好我手里有个从室友神州笔记本上拆下来的硬盘,然后就尝试安装了一下,结果在系统安装的时候,总是报错说ext4 格式化失败,一开始我以为是我手动分区错误导致,然后就选了清除整个磁盘安装Ubuntu 、MD 还是报错 说不能进行ext4格式化,我就猜想啊,难道Ubuntu安装到移动设备的时候不能用机械硬盘,然后就在狗东(www.jd.com)上买了一个 ssd的移动硬盘,感觉128G的就足够了,结果发现几乎没有卖128G的,唯一一个卖128G的还是4天才到,着急用就买了个256的,ennn.....有点浪费,256G的ssd安装一个Ubuntu就为了编译Android源码。

后来想能不能把windows一块儿搞进来,这样就可以了,我就仨系统了,想起来美滋滋。

ps: MD 后来用gparted格式化成ext4,发现不能格式化。原来神州笔记本卸下来的硬盘根本不能格式化成ext4,我特么也不知道为啥,但是ntfs ,exfat,都可以。希特,垃圾玩意。

其实如果移动硬盘仅仅安装一个Ubuntu很简单,参考这篇文章[图文][Mac]在U盘上安装ubuntu,配合mac使用,他是借助虚拟机来安装的这样就不用制作系统盘了,我们通过系统盘的方式来制作

二、硬件设备

1、MacOS 我的设备是 2015年15寸的那款,当前MacOS 版本为 10.15.2 (19C57)

2、一台安装有 wind10的PC,用于制作 WTG 盘

3、一块移动硬盘,我的买的256G的 ssd 的移动硬盘(没啥原因,就是为了快)用于安装Ubuntu和windows系统。

4、一个8G的U盘(用于刻Ubuntu的系统盘)

5、Ubuntu 系统镜像,Windows10 系统镜像

三、来吧,制作WTG

基本思想:先在移动硬盘里面安装

第一步一定先要制作 Windows To Go (简称WTG),选用第三方工具,傻瓜式制作,但是选项一定要按照我下面的选择方式,我也不知道为啥,如果不这样的话,这两个系统装到一个移动硬盘会导致开机引导出错,从而没法启动Windows。

双系统的WTG

这样操作之后,你的移动硬盘就会被格式化,而且记住,右边选择 一定要选择 UEFI + MBR 我当时选择的是上面那个,结果安装完Ubuntu,就不能开机了。两种方式的区别,见官方论坛:

然后点击部署,进行制作就行了。

制作完成之后,为了能够再安装Ubuntu,我们需要借助Windows 的磁盘管理工具,把我们的256G的移动硬盘压缩出100个G 用来安装Ubuntu。

磁盘管理工具进入方式:

image.png

一定要注意,千万别操作错了 磁盘,非常危险

由于我的移动硬盘已经进行压缩了,没有办法演示全压缩的步骤,但是这是个基本操作,网上可以搜索怎么压缩出一个新的分区,大概演示如下

image.png

注意: 安装完WTG 的时候,启动windows 之后是要安装驱动的,安装方式,见上面那篇文章,这里不再写了,很简单,下载exe,进入win之后,双击,重启就完事了。

四、来吧,安装Ubuntu

前提启动盘已经制作好了,没有制作好的,看官网。

然后,并插入Ubuntu 启动盘,重新启动Mac ,启动的时候按住Option键(alt)直到你看到不同的启动选项。选择EFI选项(如果有两个的话选择左边的哪一个)来从USB启动Ubuntu。

image.png

当你看到“Try Ubuntu" 和 "Install Ubuntu" 两个选项的时候, 选择 "Try Ubuntu" 因为我们需要在安装完成之后重启之前弄一些其他的东西(分区和磁盘格式化)。

然后 ctrl + alt + T ,打开命令行工具:

$ sudo gparted

打开磁盘分区工具。把我们刚才剩下的那100G的空间,格式化成ext4。

磁盘操作一定要小心,注意 gparted 这个工具的右上角可以选择磁盘,别选错了,要选择我们这个256G的移动硬盘。千万别把Mac 系统搞崩溃了。

image.png

3、安装界面

①.拉到最下面,选择中文,(或者英文)点【继续】。

②.选择【我现在不想链接wifi无线网络】(节约时间)->【继续】

③.【安装这个第三方软件】(方便以后用,不选也行)->【继续】

④.非常重要!!安装类型,选择最后一项【其它选项】->【继续】。手动设置分区。

然后,就是我和他不一样的地方,安装完WTG之后,剩余100G的硬盘刚刚给格式化成了ext4,来装Ubuntu,我没有再进行什么分区之类的,然后直接选择了这100G 挂载 / 来安装,没有再细分什么swap,/boot,等等。选择安装。

⑤ 最后注意,【安装启动引导器的设备】选择目标盘(移动硬盘)

⑥ 然后点击右下角【安装】。

安装完退出就行了。

有个不解的地方:我对系统引导啥的只知道个大概,不知道为啥,开机按住 option 之后,不显示启动Ubuntu的引导,只有一个Mac,一个windows 的,只有按住了 refind 之后才能扫描出Ubuntu,为啥???

五、然后安装一个启动管理工具refind

重启进入Mac,然后现在 https://www.rodsbooks.com/refind/ 这个东西,然后解压,然后双击 refind-install 就可以了

refind

这个时候再开机重启,就会看到如下界面:

image.png

六、最后,看看我的移动硬盘里面的双系统

电脑上放的就是装有双系统的移动硬盘

有人说Mac上运行 Windows 会卡,会有不兼容,风扇会呼呼的、 毛线、这风扇虽然会响,但是打LOL的时候,都没有我在Mac下编译一个apk时候响的厉害。

打局LOL试试、

image.png

然后用Ubuntu 编译aosp 源码(为了编译源码,因为Python版本的原因,我把Ubuntu升级到了18.04):

image.png

编译aosp 的辛酸

这几天想编译一个能脱壳的 aosp (Android源码),我进行了如下尝试:

1、用我的Mac(15年15寸的那款,当前MacOS 版本为 10.15.2 (19C57))从6.0 编译到9.0 ,就一个 8.0.0_r2 编译成功了。

2、后来看aosp官网推荐说Docker 也可以编译,所以抱着试试看的态度,就想搞个Docker 试试,源码里面的Dockerfile,结果 编译镜像的时候报错 groupadd: GID '20' already exists,从语义上来说,不就是GID 冲突吗,阅读Dockerfile 改掉,改成了3000,镜像倒是编译成功了,但是编译源码各种错误,一个也没成功,据说Mac 下的docker和Linux下的docker还是有区别的。算了搞个Linux吧。

3、VM ware Fusion Mac上的虚拟机,然后里面按照Ubuntu,编译依然出错,经过一番搜索,我发现我解决不了,现在回过头来想想不知道是不是移动硬盘格式化不对,我为了编译Android源码,特意买了个移动硬盘,然后格式化成,区分大小写的 Mac 格式,然后把,7.0,8.0,9.0 的源码下载下来,(https://www.jianshu.com/p/53e590eb237a)

4、搞个真实的Ubuntu系统吧。。。于是、就有了个移动版的Ubuntu