3、开发环境概览:Linux主机(Ubuntu)安装与基本配置

好,咱们正式开始搭建环境。这一章我带你搞定 Linux 主机,具体说就是 Ubuntu。为什么选它?说白了,机顶盒的交叉编译、驱动开发、系统移植,几乎全在 Linux 下搞。Windows ?不是不行,但你会遇到一堆莫名其妙的坑。我个人习惯,直接上 Ubuntu LTS 版本,稳。

3.1 为什么是 Ubuntu ?

你可能想问:CentOS 不行吗?Debian 不行吗?嗯,都可以。但我建议你选 Ubuntu,原因有三:

  • 社区活跃:你遇到问题,一搜就有答案。我在项目中遇到过好几次冷门驱动问题,全靠社区帖子救场。
  • 软件包新:机顶盒的交叉编译工具链、库文件,Ubuntu 的 apt 源里基本都有。省去手动编译的麻烦。
  • LTS 稳定:长期支持版,不会突然来个 breaking change。我见过有人用滚动发行版,结果某次更新后编译链炸了,折腾两天。
我的建议:选 Ubuntu 20.04 LTS 或 22.04 LTS。太老的版本(比如 16.04)有些包已经停止支持,太新的(比如 24.04)可能有些工具还没适配。

3.2 安装 Ubuntu —— 两种主流方式

安装方式取决于你的宿主机是什么。我分两种情况讲:

3.2.1 物理机安装(推荐)

如果你有一台闲置的 PC 或笔记本,直接装 Ubuntu 作为主力开发机。这是最纯粹的方式,性能最好。

  1. 下载镜像:去 Ubuntu 官网下载 ISO 文件。记得选「Desktop」版本,别下成 Server 版。
  2. 制作启动盘:用 Rufus(Windows)或 dd 命令(Linux/Mac)把 ISO 写入 U 盘。
  3. 安装过程:启动时按 F2/F12 进 BIOS,选 U 盘启动。分区时我建议:
    /boot 分 1GB,/ 分 50GB 以上,/home 分剩余空间。交换分区看内存大小,8GB 内存以下分 4GB,以上可以不分。
  4. 设置用户名密码:别用太复杂的,开发机而已。我一般用 developer 作为用户名。
注意:如果你用双系统(Windows + Ubuntu),一定要先装 Windows 再装 Ubuntu。反过来会搞乱引导。我曾经手贱试过,结果 Windows 进不去了,折腾半天修复。

3.2.2 虚拟机安装(适合尝鲜)

如果你只是先体验一下,或者电脑配置不够,用虚拟机也行。我用的是 VirtualBox,免费且够用。

# 虚拟机配置建议
CPU: 2 核以上
内存: 4GB 以上
硬盘: 40GB 以上(动态分配)
网络: 桥接模式(方便后续 SSH 连接)

安装步骤和物理机一样,只是多了个虚拟机软件。嗯,这里要注意:虚拟机里跑 Ubuntu,性能会打折扣,编译大型项目时会明显慢。所以如果你打算长期搞机顶盒开发,还是物理机靠谱。

3.3 基本配置 —— 装完系统后第一件事

系统装好了,别急着高兴。有几个配置必须做,不然后面寸步难行。

3.3.1 更新软件源

Ubuntu 默认的源在国外,下载速度感人。我建议换成国内镜像源,比如阿里云、清华、中科大。

# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 编辑源文件
sudo vim /etc/apt/sources.list

# 把内容替换为阿里云源(以 Ubuntu 20.04 为例)
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

# 更新
sudo apt update
sudo apt upgrade -y
小技巧:如果你不确定自己的 Ubuntu 版本,用 lsb_release -a 查看。版本代号对应关系:20.04 = focal,22.04 = jammy,24.04 = noble。

3.3.2 安装必备工具

机顶盒开发需要一堆基础工具。我列个清单,你直接复制粘贴跑一遍:

sudo apt install -y \
  build-essential \
  git \
  vim \
  curl \
  wget \
  net-tools \
  openssh-server \
  tree \
  htop \
  cmake \
  python3 \
  python3-pip \
  gcc-arm-linux-gnueabihf \
  g++-arm-linux-gnueabihf

这里面 gcc-arm-linux-gnueabihf 是交叉编译工具链,专门用来编译机顶盒 ARM 架构的程序。没有它,你写的代码在 Ubuntu 上跑得欢,但机顶盒上跑不了。

3.3.3 配置 SSH 服务

开发机顶盒时,你大概率不会直接坐在 Ubuntu 主机前操作。而是用另一台电脑 SSH 连过来。所以 SSH 必须配好。

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

# 如果没启动,启动它
sudo systemctl enable ssh
sudo systemctl start ssh

# 查看 IP 地址
ip addr show

然后你就可以在 Windows/Mac 上用终端连过来了:ssh developer@你的IP。我个人习惯用 MobaXterm 或 Windows Terminal,界面清爽。

3.3.4 配置 Git 和 Vim

这两个是开发必备。Git 用来管理代码版本,Vim 用来快速编辑文件。

# Git 配置
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global core.editor vim

# Vim 配置(简单版)
echo "set number" >> ~/.vimrc
echo "syntax on" >> ~/.vimrc
echo "set tabstop=4" >> ~/.vimrc
echo "set shiftwidth=4" >> ~/.vimrc
重要:Git 的用户名和邮箱一定要配,不然提交代码时会报错。我刚开始学的时候忘了配,结果 commit 记录里全是「unknown」,后来改起来很麻烦。

3.4 验证环境是否就绪

配置完了,咱们验证一下。打开终端,依次执行以下命令:

# 检查 Ubuntu 版本
lsb_release -a

# 检查交叉编译工具链
arm-linux-gnueabihf-gcc --version

# 检查 Git
git --version

# 检查 SSH
ssh localhost

如果都能正常输出,恭喜你,环境搭好了。如果某个命令报错,别慌,多半是没安装或者路径没配好。用 which 命令名 看看它在不在。

3.5 避坑指南

最后,分享几个我踩过的坑:

  • 磁盘空间不够:编译机顶盒的 U-Boot、Linux 内核时,动辄需要几十 GB 空间。我建议至少留 80GB 给 Ubuntu。我曾经因为空间不足,编译到一半报错,气得想砸电脑。
  • 权限问题:别用 root 用户日常操作。用普通用户,需要时加 sudo。我见过有人全程 root,结果不小心删了系统文件,重装。
  • 网络不稳定:下载源码包时经常断。建议用 wget -c 断点续传,或者用 git clone --depth=1 只拉最新版本,减少下载量。
  • 中文乱码:终端里显示中文文件名乱码?装个 fonts-wqy-zenhei 字体包就好。

好了,这一章就到这里。Ubuntu 装好、配好,咱们的机顶盒开发之旅就正式开始了。下一章,我会带你搭建交叉编译环境,那是整个移植工作的核心。到时候见。