3. Ubuntu 20.04 LTS安装:虚拟机配置、系统分区建议、网络与SSH配置

好,咱们接着往下走。上一章我们把VMware和Ubuntu镜像都准备好了,这一章就来真刀真枪地装系统。说实话,装Ubuntu本身不难,但很多新手栽在分区和网络配置上。我当年第一次装的时候,分区没规划好,后来磁盘空间不够,折腾了一整天迁移数据。嗯,咱们今天就把这些坑都填上。

3.1 虚拟机配置:别让硬件拖后腿

在VMware里创建虚拟机,这一步很关键。配置给少了,编译卡死;配置给多了,宿主机又受不了。我建议你按下面的参数来,这是我在MTK8676项目上验证过的黄金配置。

配置项 推荐值 说明
内存 8GB ~ 16GB 低于8GB编译会非常慢,我试过4GB,编译一次要40分钟
处理器 4核 ~ 8核 分配物理机一半的核心数比较稳妥
硬盘 100GB ~ 200GB 建议动态分配,但上限设大一点
网络 NAT模式 最省心,宿主机能上网虚拟机就能上
注意: 别把内存全部分给虚拟机。你想想看,宿主机还要跑IDE、浏览器、微信这些,留4GB给宿主机是底线。我曾经贪心分了12GB给虚拟机,结果宿主机卡得鼠标都动不了。

3.2 系统分区建议:别让磁盘成为瓶颈

到了分区这一步,很多人直接选「清除整个磁盘并安装Ubuntu」。这样做虽然省事,但后面会后悔。为什么?因为MTK的SDK动辄几十GB,编译产生的中间文件更是吃空间大户。

我个人习惯手动分区,这样心里有数。下面是针对MTK开发的分区方案:

挂载点 大小 文件系统 说明
/boot 1GB ext4 引导分区,不用太大
/ 50GB ext4 根分区,系统和工具装这里
/home 剩余空间 ext4 用户数据,代码和SDK放这里
swap 8GB ~ 16GB swap 交换分区,内存不够时顶上去
小技巧: 如果你硬盘空间充裕,建议把/home单独分大一点。因为MTK的SDK、编译输出、git仓库都放在用户目录下。我见过有人把/home只分了30GB,结果编译到一半磁盘满了,那叫一个尴尬。

分区时还有个小细节——选择「/dev/sda」作为引导安装位置,别选错了。我刚开始装的时候,选了U盘作为引导设备,结果拔掉U盘就进不了系统,折腾了半天才发现问题。

3.3 网络与SSH配置:远程开发的基石

系统装好后,第一件事就是配网络。你想想看,后面我们要从GitHub拉代码、安装依赖包、甚至远程调试,网络不通什么都干不了。

3.4.1 网络配置

如果你用的是NAT模式,虚拟机默认就能上网。但有时候会遇到DNS解析问题,表现为能ping通IP但ping不通域名。解决办法很简单:

# 编辑DNS配置文件
sudo vim /etc/systemd/resolved.conf

# 修改或添加以下内容
[Resolve]
DNS=8.8.8.8 114.114.114.114
# 保存退出后重启服务
sudo systemctl restart systemd-resolved

嗯,这里要注意一点。如果你在公司内网开发,可能需要配置代理。我曾经在客户现场调试,他们的网络需要设置HTTP代理才能访问外网。配置方法如下:

# 在 /etc/environment 中添加
export http_proxy="http://你的代理地址:端口"
export https_proxy="http://你的代理地址:端口"
export no_proxy="localhost,127.0.0.1,192.168.0.0/16"

# 然后重启或者 source 一下
source /etc/environment

3.4.2 SSH配置

SSH是嵌入式开发的标配。你想想看,我们经常要在宿主机上写代码,然后通过SSH连到虚拟机编译,或者连到开发板调试。没有SSH,开发效率至少降低一半。

安装和启动SSH服务:

# 安装SSH服务
sudo apt update
sudo apt install openssh-server -y

# 查看SSH服务状态
sudo systemctl status ssh

# 如果没启动,手动启动
sudo systemctl start ssh
sudo systemctl enable ssh  # 设置开机自启
关键配置: 为了安全,我建议修改SSH默认端口。因为22端口是黑客扫描的重灾区,我在公网上被扫过无数次。修改方法如下:
# 编辑SSH配置文件
sudo vim /etc/ssh/sshd_config

# 找到 Port 22 这一行,改成你想要的端口,比如 2222
Port 2222

# 也可以禁用root登录(推荐)
PermitRootLogin no

# 保存退出后重启SSH
sudo systemctl restart ssh

配置好之后,从宿主机连接虚拟机:

# 查看虚拟机的IP地址
ip addr show

# 在宿主机上连接(假设虚拟机IP是192.168.1.100)
ssh 用户名@192.168.1.100 -p 2222
避坑指南: 我曾经遇到过SSH连不上,排查了半天发现是防火墙没关。Ubuntu默认的ufw防火墙会阻止SSH连接。如果你不需要防火墙,可以直接关掉:
sudo ufw disable
或者只开放SSH端口:
sudo ufw allow 2222/tcp

3.4 验证安装:跑个Hello World

系统装好、网络配通、SSH能连上之后,我建议你做个快速验证。写个简单的C程序编译一下,确保开发环境基本可用。

# 创建测试文件
vim hello.c

# 写入以下内容
#include <stdio.h>

int main() {
    printf("Hello, MTK8676!\n");
    return 0;
}

# 编译并运行
gcc hello.c -o hello
./hello

如果看到「Hello, MTK8676!」输出,恭喜你,环境搭建成功了八成。剩下的就是安装MTK的SDK和交叉编译工具链,这些我们下一章再讲。

最后说一句: 装系统这件事,一次装好后面省心很多。我建议你把虚拟机的快照功能用起来——装好系统、配好网络、装好基础工具后,各拍一个快照。万一后面搞坏了,恢复起来就是几分钟的事。这个习惯让我少熬了好几个夜。