3、Ubuntu操作系统安装:虚拟机与双系统选择、Ubuntu 20.04 LTS安装步骤、基础配置

好,咱们正式开始搭建环境。这一章聊的是操作系统安装,说白了就是给你的开发机选个「家」。我见过不少新手一上来就纠结:到底用虚拟机还是装双系统?嗯,这个问题其实没有标准答案,但根据我这些年踩过的坑,可以给你一些实在的建议。

3.1 虚拟机 vs 双系统:怎么选?

先说说我的个人习惯。我平时办公用的是一台 Windows 笔记本,但做 Camera HAL 开发时,我几乎都在 Ubuntu 里干活。你想想看,HAL 层要跟内核驱动、硬件抽象层打交道,频繁重启、调试、刷机是家常便饭。这时候如果系统不稳定,那真是欲哭无泪。

虚拟机的优势

  • 隔离性好:虚拟机里的 Ubuntu 崩了,不影响宿主机。我曾在项目里因为一个驱动模块写错了,导致系统直接黑屏。还好是在虚拟机里,拍个快照就恢复了。
  • 方便切换:Windows 和 Ubuntu 之间复制粘贴、拖拽文件,非常顺手。调试时经常需要从 Windows 端拿日志、看文档,虚拟机无缝切换。
  • 适合入门:如果你只是刚开始学 Camera HAL,或者不确定以后会不会长期用 Linux,虚拟机是最稳妥的选择。

双系统的优势

  • 性能更好:直接跑在硬件上,没有虚拟化层开销。编译 AOSP 或 Camera HAL 源码时,双系统能快 20%-30%。我记得有一次编译整个 Android 系统,虚拟机用了 3 个多小时,双系统只用了 2 小时出头。
  • 硬件兼容性:某些 USB 设备、调试工具在虚拟机里可能识别有问题。比如一些老款的 JTAG 调试器,在虚拟机里死活连不上,换双系统就正常了。
  • 适合长期开发:如果你确定未来 1-2 年都要做嵌入式或 HAL 开发,双系统是更专业的选择。

我的建议

  • 如果你是初学者,或者电脑配置一般(内存 < 16GB),先用虚拟机。等熟悉了再考虑双系统。
  • 如果你已经有一定 Linux 基础,且电脑配置够用(内存 ≥ 16GB,SSD 硬盘),直接上双系统。
  • 我个人是「虚拟机 + 双系统」都留着。日常开发用双系统,测试新工具、新环境时用虚拟机快照。

3.2 Ubuntu 20.04 LTS 安装步骤

好,不管你选虚拟机还是双系统,安装步骤大同小异。这里我以 Ubuntu 20.04 LTS 为例,这是目前 Camera HAL 开发最稳定的版本。为什么选 20.04?因为 Android 官方文档、高通平台、MTK 平台都推荐这个版本。我试过 22.04,有些工具链兼容性还有小问题。

3.2.1 准备工作

  1. 下载镜像:去 Ubuntu 官网下载 ubuntu-20.04.6-desktop-amd64.iso。注意是桌面版,不是服务器版。
  2. 制作启动盘:用 Rufus(Windows)或 Etcher(跨平台)把镜像写入 U 盘。我曾经用老毛桃做过一次,结果安装时分区表识别错误,折腾了半天。所以还是推荐 Rufus 或 Etcher。
  3. 备份数据:如果你要装双系统,一定先备份 Windows 里的重要文件。别问我为什么强调这个……

3.2.2 虚拟机安装(以 VMware Workstation 为例)

  1. 新建虚拟机,选择「典型」配置。
  2. 选择「稍后安装操作系统」,客户机操作系统选「Linux」,版本选「Ubuntu 64 位」。
  3. 分配资源:内存至少 8GB,处理器至少 2 核。硬盘建议 80GB 以上(Camera HAL 源码 + AOSP 动辄 100GB+)。
  4. 启动虚拟机,加载 ISO 镜像,进入安装界面。
  5. 语言选「中文(简体)」或「English」都行。我个人习惯用英文,因为终端报错信息更准确。
  6. 安装类型选「清除整个磁盘并安装 Ubuntu」—— 这是虚拟机,不用担心。
  7. 设置用户名和密码。注意:用户名不要用中文,否则后面编译会报错。

小技巧:安装完成后,记得安装 VMware Tools 或 Open VM Tools。这样能实现自适应窗口、拖拽文件、共享剪贴板。命令如下:

sudo apt update
sudo apt install open-vm-tools open-vm-tools-desktop

3.2.3 双系统安装

  1. 在 Windows 里,先压缩出一个空闲分区。右键「此电脑」→「管理」→「磁盘管理」,在某个盘上右键「压缩卷」,腾出至少 80GB 空间。
  2. 重启电脑,进入 BIOS(一般是 F2、F10 或 Del 键),关闭 Secure Boot,启动顺序改为 U 盘优先。
  3. 从 U 盘启动,进入 Ubuntu 安装界面。
  4. 安装类型选择「其他选项」,手动分区。我的习惯是:
    • /boot:1GB,主分区,ext4
    • /:40GB,逻辑分区,ext4
    • /home:剩余空间,逻辑分区,ext4
    • swap:8GB(如果内存 ≥ 16GB,可以不要 swap)
  5. 引导安装位置选「/dev/sda」(整个硬盘),不要选分区。Ubuntu 会自动添加 GRUB 引导菜单。

注意:双系统安装时,最容易出问题的是引导。我曾经因为 GRUB 装到了错误的分区,导致 Windows 进不去。后来用 EasyBCD 修复才搞定。所以建议:

  • 安装前先关闭 Windows 的快速启动。
  • 如果安装后只有 Ubuntu 没有 Windows,别慌,用 Boot-Repair 工具修复。

3.3 基础配置

系统装好了,别急着开始写代码。先把基础环境配好,后面能省很多事。

3.3.1 更换软件源

Ubuntu 默认的源在国外,下载速度慢得让人抓狂。我建议换成国内镜像源,比如清华、阿里、中科大。以清华源为例:

sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo apt update

3.3.2 安装必备工具

Camera HAL 开发离不开这些工具,我列个清单:

工具 用途 安装命令
Git 版本管理 sudo apt install git
Vim / VS Code 代码编辑 sudo apt install vim 或下载 VS Code
Build Essential 编译工具链 sudo apt install build-essential
Python3 + pip 脚本工具 sudo apt install python3 python3-pip
SSH Server 远程调试 sudo apt install openssh-server
adb / fastboot Android 调试 sudo apt install adb fastboot

3.3.3 配置 Git 和 SSH

这个步骤很多人会忽略,但实际开发中天天用。配置好 Git 的用户名和邮箱:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

生成 SSH 密钥,方便后面连接 Git 服务器:

ssh-keygen -t rsa -b 4096 -C "你的邮箱"
cat ~/.ssh/id_rsa.pub

把公钥添加到你的 GitLab 或 GitHub 账号里。我在项目中遇到过因为没配 SSH,每次 pull/push 都要输密码,烦得很。

3.3.4 设置环境变量

Camera HAL 开发经常需要设置 ANDROID_BUILD_TOPPATH 等变量。我习惯在 ~/.bashrc 里加几行:

export ANDROID_BUILD_TOP=~/workspace/aosp
export PATH=$PATH:~/bin
alias croot='cd $ANDROID_BUILD_TOP'

然后 source ~/.bashrc 生效。这样每次打开终端,环境就自动配好了。

避坑指南:我曾经在 ~/.bashrc 里写错了路径,导致终端一打开就报错。后来学乖了,每次修改前先备份:cp ~/.bashrc ~/.bashrc.bak。万一出问题,还能恢复。

3.4 验证安装

最后,简单验证一下环境是否正常。打开终端,输入:

uname -a
gcc --version
git --version
adb version

如果都能正常输出版本信息,恭喜你,开发环境的基础已经打好了。下一章,咱们开始搭建 Camera HAL 的编译环境,那才是真正的重头戏。

嗯,这一章就到这里。记住,操作系统安装是地基,地基不稳,后面全是白搭。花点时间把这一步做好,后面你会感谢自己的。