第三章:系统初始化与更新

拿到一块崭新的开发板,就像拆开一台新电脑。你肯定想赶紧点亮屏幕,看看它长什么样。但别急,咱们得先做几件正事。

我个人习惯,拿到板子第一件事不是跑Demo,而是把系统环境收拾利索。这就像装修新房,水电没改好就贴墙纸,后面有你哭的。

3.1 首次启动配置

插上电源,接好串口线,按下电源键。如果一切正常,你会看到终端里滚过一堆启动信息。嗯,这感觉挺爽的。

第一次启动,系统会让你做几个基础设置:

  • 语言和时区:选中文,时区设成 Asia/Shanghai。别问我为什么,你想想看,日志时间对不上号多难受。
  • 主机名:给它起个名字,比如 my-pad。我习惯用项目代号,方便区分多块板子。
  • 用户密码:设一个你能记住的。别用 123456,真的,我在项目里见过有人这么干,后来板子被同事拿去玩,数据全丢了。
小提示: 如果你用的是预装系统,第一次启动可能会自动进入图形界面。我个人建议先切到命令行模式,省资源,后面调试也方便。

3.2 更换国内软件源

默认的软件源在国外,下载速度嘛……你懂的。我曾经在客户现场,等一个 apt update 等了半小时,那叫一个尴尬。

换成国内源,速度能快几十倍。以 Debian/Ubuntu 为例:

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

# 编辑源列表
sudo nano /etc/apt/sources.list

把内容替换成阿里云或清华的源。我个人常用阿里云:

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
注意: 不同系统版本对应的源不一样。比如 Ubuntu 20.04 用 focal,22.04 用 jammy。搞错了会报依赖错误。我曾经手滑写错版本号,折腾了一下午才修好。

改完后更新一下:

sudo apt update
sudo apt upgrade -y

看到下载速度飙到几 MB/s,是不是舒服多了?

3.3 更新系统内核和固件

系统刚装好,内核和固件往往不是最新的。为什么要更新?说白了,新版本修复了旧版的 bug,还可能增加新硬件的支持。

更新内核:

sudo apt install linux-image-generic linux-headers-generic
sudo reboot

重启后检查内核版本:

uname -r

固件更新也很重要。特别是 Wi-Fi、蓝牙这些模块,固件不对,设备可能根本认不出来。

# 更新固件包
sudo apt install firmware-linux firmware-linux-nonfree

# 如果是树莓派,用 rpi-eeprom 更新
sudo rpi-eeprom-update -a
核心要点: 内核和固件更新后一定要重启。别问我怎么知道的,有一次我忘了重启,调试了三天网卡,最后发现是固件没生效。

3.4 安装基础开发工具

系统跑起来了,接下来就是装工具。我列一个清单,这些都是嵌入式开发的标配:

工具 用途 安装命令
build-essential 编译 C/C++ 代码 sudo apt install build-essential
git 版本控制 sudo apt install git
vim / nano 文本编辑器 sudo apt install vim
curl / wget 网络下载 sudo apt install curl wget
screen / tmux 终端复用 sudo apt install tmux
ssh 远程连接 sudo apt install openssh-server
python3-pip Python 包管理 sudo apt install python3-pip

装完这些,你的开发环境基本就齐活了。我个人还会装一个 htop,方便看系统资源占用。

sudo apt install htop
避坑指南: 我曾经在装 build-essential 时,发现缺少 libc6-dev,导致编译报错。解决办法是先执行 sudo apt update,再安装。顺序别搞反了。

3.5 验证环境

工具装完了,咱们验证一下。写个简单的 C 程序:

#include <stdio.h>

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

编译运行:

gcc hello.c -o hello
./hello

看到输出了吗?如果一切正常,恭喜你,系统初始化完成。

嗯,到这里,你的平板系统已经具备了基本的开发能力。下一章,我们会开始搭建图形界面。别走开,精彩才刚刚开始。