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 安装程序“安装类型”界面选择“其他选项”,按以下步骤创建分区:

  1. 选择空闲磁盘,点击“新建分区表”。
  2. 创建 / 分区:大小 50 GB,主分区,文件系统 ext4,挂载点 /。
  3. 创建 /home 分区:大小 100 GB,逻辑分区,ext4,挂载点 /home。
  4. 创建 /opt 分区:大小 60 GB,逻辑分区,ext4,挂载点 /opt。
  5. 创建 /var 分区:大小 25 GB,逻辑分区,ext4,挂载点 /var。
  6. 创建 swap 分区:大小等于物理内存,类型“交换空间”。
  7. 确认分区表后继续安装。

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 密钥对:

  1. 在客户端生成密钥对:ssh-keygen -t ed25519 -C "driver-dev"
  2. 将公钥复制到宿主机:ssh-copy-id user@192.168.1.100
  3. 禁用密码登录:编辑 /etc/ssh/sshd_config,设置 PasswordAuthentication no
  4. 重启 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 服务之间的逻辑关系:

开发主机环境架构总览 宿主机 (Ubuntu/Debian) / 根分区 (50 GB) /home (100 GB) /opt (60 GB) /var (25 GB) swap (等于 RAM) Netplan 静态 IP DNS 8.8.8.8 / 114.114.114.114 HTTP/HTTPS 代理(可选) openssh-server Ed25519 密钥认证 禁用密码登录 说明 磁盘分区隔离系统与工作数据;Netplan 配置静态 IP 保证 SSH 连接稳定; 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 配置 密钥认证 + 禁用密码,兼顾便捷与安全。
  • 安装完成后执行 环境验证清单,逐项确认无遗漏。