3. Ubuntu 20.04 LTS安装:虚拟机配置、系统分区建议、网络与SSH配置
好,咱们接着往下走。上一章我们把VMware和Ubuntu镜像都准备好了,这一章就来真刀真枪地装系统。说实话,装Ubuntu本身不难,但很多新手栽在分区和网络配置上。我当年第一次装的时候,分区没规划好,后来磁盘空间不够,折腾了一整天迁移数据。嗯,咱们今天就把这些坑都填上。
3.1 虚拟机配置:别让硬件拖后腿
在VMware里创建虚拟机,这一步很关键。配置给少了,编译卡死;配置给多了,宿主机又受不了。我建议你按下面的参数来,这是我在MTK8676项目上验证过的黄金配置。
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 内存 | 8GB ~ 16GB | 低于8GB编译会非常慢,我试过4GB,编译一次要40分钟 |
| 处理器 | 4核 ~ 8核 | 分配物理机一半的核心数比较稳妥 |
| 硬盘 | 100GB ~ 200GB | 建议动态分配,但上限设大一点 |
| 网络 | NAT模式 | 最省心,宿主机能上网虚拟机就能上 |
3.2 系统分区建议:别让磁盘成为瓶颈
到了分区这一步,很多人直接选「清除整个磁盘并安装Ubuntu」。这样做虽然省事,但后面会后悔。为什么?因为MTK的SDK动辄几十GB,编译产生的中间文件更是吃空间大户。
我个人习惯手动分区,这样心里有数。下面是针对MTK开发的分区方案:
| 挂载点 | 大小 | 文件系统 | 说明 |
|---|---|---|---|
| /boot | 1GB | ext4 | 引导分区,不用太大 |
| / | 50GB | ext4 | 根分区,系统和工具装这里 |
| /home | 剩余空间 | ext4 | 用户数据,代码和SDK放这里 |
| swap | 8GB ~ 16GB | swap | 交换分区,内存不够时顶上去 |
分区时还有个小细节——选择「/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配置文件
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
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和交叉编译工具链,这些我们下一章再讲。