2. 开发主机准备:Ubuntu/Debian 系统安装、磁盘分区建议、网络配置与 SSH 远程访问设置
嵌入式 Linux 设备驱动开发对宿主机的稳定性、磁盘 I/O 性能和网络连通性有较高要求。本章将指导你完成 Ubuntu/Debian 桌面版或服务器版的安装、磁盘分区规划、网络配置以及 SSH 远程访问设置,为后续内核源码管理、交叉编译工具链部署和内核编译提供可靠的基础环境。
2.1 发行版选择与版本要求
Ubuntu 长期支持版(LTS)和 Debian 稳定版是驱动开发社区最广泛使用的宿主系统。下表对比了推荐版本及其关键特性:
| 发行版 | 推荐版本 | 内核版本范围 | GCC 默认版本 | 适用场景 |
|---|---|---|---|---|
| Ubuntu LTS | 22.04 / 24.04 | 5.15 – 6.8 | 11 / 13 | 主流 SoC 厂商 SDK 官方支持 |
| Debian | 12 (Bookworm) | 6.1 LTS | 12 | 追求极致稳定、服务器化开发环境 |
| Ubuntu Server | 22.04 / 24.04 | 5.15 – 6.8 | 11 / 13 | 无 GUI 的纯编译服务器 |
建议: 初学者优先选择 Ubuntu 22.04 LTS 桌面版,社区资料丰富,驱动开发工具链成熟。若宿主机内存小于 8 GB,推荐安装 Ubuntu Server 版以节省图形界面资源。
2.2 磁盘分区建议
内核编译会产生大量临时文件、目标文件和模块副本,磁盘分区方案直接影响编译速度和磁盘寿命。推荐采用 LVM(逻辑卷管理) 或 独立分区 方式隔离系统与工作数据。
2.2.1 分区布局方案
| 挂载点 | 推荐大小 | 文件系统 | 说明 |
|---|---|---|---|
/ |
40 – 60 GB | ext4 | 系统根分区,包含 /usr、/lib 等 |
/home |
剩余空间的 30% | ext4 | 用户数据、SSH 密钥、开发脚本 |
/opt |
40 – 80 GB | ext4 | 交叉编译工具链、SDK、内核源码 |
/var |
20 – 30 GB | ext4 | apt 缓存、日志、ccache 缓存 |
swap |
等于 RAM 大小 | swap | 内存不足时的编译降级保障 |
注意: 内核全量编译时,
/opt 分区建议预留至少 40 GB 空间。若使用 ccache 加速,/var 或 /home 下需额外 10 – 20 GB 缓存空间。
2.2.2 分区操作示例(手动分区阶段)
在 Ubuntu 安装程序“安装类型”界面选择“其他选项”,按以下步骤创建分区:
- 选择空闲磁盘,点击“新建分区表”。
- 创建
/分区:大小 50 GB,主分区,文件系统 ext4,挂载点/。 - 创建
/home分区:大小 100 GB,逻辑分区,ext4,挂载点/home。 - 创建
/opt分区:大小 60 GB,逻辑分区,ext4,挂载点/opt。 - 创建
/var分区:大小 25 GB,逻辑分区,ext4,挂载点/var。 - 创建 swap 分区:大小等于物理内存,类型“交换空间”。
- 确认分区表后继续安装。
2.3 网络配置
驱动开发过程中需要频繁下载内核源码、更新工具链和同步 Git 仓库。稳定的网络连接和正确的 DNS 解析是基本前提。
2.3.1 静态 IP 配置(服务器环境)
对于开发服务器,推荐使用静态 IP 避免 DHCP 变化导致 SSH 连接中断。Ubuntu 22.04+ 使用 Netplan 管理网络:
# 编辑 /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
应用配置:
sudo netplan apply
2.3.2 代理配置(可选)
若宿主机位于企业内网或需要科学上网,可在 /etc/environment 中设置全局代理:
http_proxy="http://proxy.example.com:8080"
https_proxy="http://proxy.example.com:8080"
no_proxy="localhost,127.0.0.1,192.168.0.0/16"
提示: 使用
git config --global http.proxy 单独为 Git 设置代理,避免影响其他系统服务。
2.4 SSH 远程访问设置
驱动开发通常通过 SSH 远程连接宿主机进行编译和调试。正确配置 SSH 服务可提升安全性和操作效率。
2.4.1 安装与启动 SSH 服务
sudo apt update
sudo apt install openssh-server -y
sudo systemctl enable ssh
sudo systemctl start ssh
2.4.2 密钥认证配置(推荐)
密码登录存在暴力破解风险,建议使用 RSA/Ed25519 密钥对:
- 在客户端生成密钥对:
ssh-keygen -t ed25519 -C "driver-dev" - 将公钥复制到宿主机:
ssh-copy-id user@192.168.1.100 - 禁用密码登录:编辑
/etc/ssh/sshd_config,设置PasswordAuthentication no - 重启 SSH 服务:
sudo systemctl restart ssh
2.4.3 SSH 客户端配置优化
在客户端 ~/.ssh/config 中添加主机别名,简化连接命令:
Host dev-server
HostName 192.168.1.100
User driver
Port 22
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
之后可直接使用 ssh dev-server 连接。
2.5 开发主机环境架构总览
下图展示了宿主机安装完成后,磁盘分区、网络配置与 SSH 服务之间的逻辑关系:
2.6 环境验证清单
完成上述配置后,建议执行以下验证步骤,确保环境就绪:
| 验证项 | 命令 | 预期结果 |
|---|---|---|
| 磁盘分区挂载 | df -h |
各分区挂载点正确,容量符合规划 |
| 网络连通性 | ping -c 4 8.8.8.8 |
丢包率 0%,延迟正常 |
| DNS 解析 | nslookup kernel.org |
返回正确 IP 地址 |
| SSH 服务状态 | systemctl status ssh |
active (running) |
| SSH 密钥登录 | ssh user@localhost -i ~/.ssh/id_ed25519 |
无需密码直接登录 |
| 代理生效(如配置) | curl -I http://kernel.org |
返回 HTTP 200 |
关键点回顾:
- 磁盘分区采用 LVM 或独立分区,将
/opt和/var分离,避免根分区写满导致系统异常。 - 网络配置使用 Netplan 静态 IP,确保 SSH 连接地址固定。
- SSH 配置 密钥认证 + 禁用密码,兼顾便捷与安全。
- 安装完成后执行 环境验证清单,逐项确认无遗漏。