装系统这事,安装器本身没什么好说的,一路下一步就完了。让人返工的全在外圈:镜像下坏、盘写错、分区定得草率、安全启动拦一刀、装完发现 SSH 进不去。这篇按顺序理一遍,重点放在容易出问题的地方。
先想清楚装在哪
三种情况,准备工作完全不一样:
- 物理机:要 U 盘,要进 BIOS 改启动顺序。动手前把硬盘里的东西备份走,装系统这一步没有”撤消”。
- 虚拟机(KVM、PVE、VMware):直接挂 ISO,不用写盘,装崩了删了重来。练手用这个。
- 云主机:厂商镜像最省事。要装非官方系统就往控制台挂 ISO。有的实例没有 VNC,得走串口控制台,不然你盯着黑屏不知道它在干什么。
下面按物理机/虚拟机的流程写,云主机的差异单独提。
镜像:下对,还要对哈希
从发行版官网或者国内镜像站下。别用那种”纯净精简版""某某优化版”,出了事没人能帮你对账。
同一个发行版有好几种镜像,用途不一样:
netinst:几百兆,装的过程从网上下包,装完是最小系统。有网就选它。- 完整 DVD:几个 G,断网也能装,但半数的包你这辈子用不上。
- live:用来试用或者救急,别拿它当服务器装。
下完对一遍哈希。跳过这步的人不少,代价是装到一半报错,还得回头怀疑是不是自己分区分错了:
sha256sum debian-12.8.0-amd64-netinst.iso
# 或者直接拿官方的校验文件对,省得肉眼比对
grep -F debian-12.8.0-amd64-netinst.iso SHA256SUMS | sha256sum -c -
文件名里的版本号按你下载时的当前点版本改,我这里只是举例。
写 U 盘
Linux 下一条命令:
sudo dd if=debian-12.8.0-amd64-netinst.iso of=/dev/sdX bs=4M status=progress oflag=direct conv=fsync
三个提醒,都是踩出来的:
of=写的是整块盘(/dev/sdX),不是分区(/dev/sdX1)。敲之前lsblk看清楚。写错一个字母,那块盘上的数据就没了。- 别往挂载着的盘上写。U 盘被桌面自动挂载了就先
umount,不然会看到”设备忙”。 - Windows 上写盘用 Rufus 或者 balenaEtcher。想一个盘塞好几个系统就用 Ventoy,镜像拷进去就能启动。
dd 写完之后有个怪现象:到 Windows 里看 U 盘只剩几百兆,还提示要不要格式化。这是正常的,ISO 就那么大,别点格式化。想恢复全容量得重新分区。
引导:UEFI、安全启动、硬盘模式
进 BIOS,三件事值得确认。
启动模式。现在的机器基本是 UEFI,老机器可能默认 Legacy。系统里也能看:
ls /sys/firmware/efi
有输出就是 UEFI 启动。装完之后 UEFI 机器的启动项在主板里显示成 debian、ubuntu 这种名字,Legacy 是直接读盘引导。
安全启动(Secure Boot)。Debian 和 Ubuntu 的官方镜像带签名,能过校验。但你要装 NVIDIA 驱动、编译内核模块、用 DKMS,它会把东西拦下来。我一般在 BIOS 里直接关掉,省得后面折腾签名。哪天某个驱动装完起不来,先想想是不是它。
硬盘模式。BIOS 里 SATA 那项如果是 RAID 模式(品牌机和新笔记本上很常见),安装器会找不到硬盘,别急着怀疑镜像。改成 AHCI 再看。双系统注意:Windows 是在 RAID 模式下装的,直接换 AHCI 它进不去系统,得先去 Windows 里改注册表。
分区:最不能敷衍的一步
分错了,装完想改就得搬数据。按用途给两套。
家用单机,图省事:
| 挂载点 | 大小 | 说明 |
|---|---|---|
| /boot/efi | 512M | UEFI 用,Legacy 不需要 |
| / | 剩下的全给 | 不用想 |
| swap | 内存的一半或者 4G | 内存 16G 以上可以直接用 swapfile |
服务器,我习惯这么分:
| 挂载点 | 大小 | 说明 |
|---|---|---|
| /boot/efi | 512M | |
| / | 30-50G | 系统本体,装软件够用 |
| /var | 按用途给,容器多就 50G 起 | 日志、docker 镜像、包缓存都在这里 |
| swap | 2-4G | 或者 swapfile,后期好调 |
| /home | 看情况 | 服务器上没什么人登录的话,不单独分也一样 |
几个决定,值得花两分钟想:
/var 要不要单独分。日志、容器镜像、apt 缓存全在里面,涨得比根分区快得多。根分区被撑爆之后连 systemctl 都起不来,键盘敲进去没反应。遇到过一回就记住了。
LVM 要不要上。想在线扩容、想快照就上。代价是多一层映射,从 live 系统里救数据的时候多一个步骤。云主机这种以后要扩盘、要快照的场景,很值。
文件系统选哪个。ext4 最稳,出问题时的工具和资料最多;xfs 处理大文件、大目录更顺;btrfs 和 zfs 有快照和校验,但你要熟悉它那套管理命令,不然出问题时不好收拾。
安装器里手动看一眼的选项
大部分默认值能用,这几个我每次都确认:
- 主机名:别留默认值。以后 SSH 连一堆机器,全靠它认人。
- root 密码:Debian 的安装器里 root 密码留空,它会自动给普通用户配好 sudo 并加进 sudo 组。想走 sudo 就留空。
- 软件源:装的过程会拉包,选国内镜像站能省十几分钟。选错了也不致命,装完还能改。
- 时区:服务器我选 UTC。日志跟别处的记录对照不会算错时差,也少一类”明明昨天做的事怎么显示前天”的疑问。要用本地时间就装完
timedatectl改。 - 软件选择:服务器只勾
SSH server和标准系统工具,桌面环境一个都别勾。需要的时候再装,反过来卸很麻烦。
装完先做这几件事
刚装完的系统还不能直接交付,下面这几步做完才算能用。
更新一遍
apt update && apt full-upgrade -y
换软件源
前面装的时候没选国内镜像的话:
cp /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i 's|deb.debian.org|mirrors.ustc.edu.cn|g' /etc/apt/sources.list
apt update
改之前备份,改完立刻跑一次 apt update,确认没报错再往下走。新的 Debian 把源换成了 deb822 格式,放在 /etc/apt/sources.list.d/ 下面,找不到 sources.list 就去那里看看。
时间
timedatectl set-timezone UTC
timedatectl set-ntp true
timedatectl status
配密钥,然后关掉密码登录
本地生成密钥(已经有就跳过):
ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id user@server
服务端:
cat > /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin prohibit-password
PasswordAuthentication no
EOF
sshd -t && systemctl reload ssh
顺序别颠倒:sshd -t 先验配置,通过了再 reload。配置写错就 reload,能把你自己关在门外。更保险的做法是别关当前这个连接,另开一个终端试登录,进去了再关。
用 reload 不用 restart,已经连着的会话不受影响。
防火墙
apt install -y nftables
systemctl enable --now nftables
Debian 自带的 /etc/nftables.conf 只是个骨架,装了不等于有防护,得自己写规则。至少把不需要的端口关掉。云主机外面还有一层安全组,两边都看一眼,不然会出现”本地规则放行了但还是连不上”。
留个底
云主机点一下快照,物理机至少把分区表存下来:
sfdisk -d /dev/sda > /root/sda-parts.txt
ip -6 addr show > /root/ip6.txt
刚装完的系统是干净的,以后想退回一个没折腾过的状态,能退的就是这一刻。
装不上、装完起不来
按我遇到的频率排:
- 安装器找不到硬盘:BIOS 里硬盘在 RAID 模式,改 AHCI。或者机器太老,内核不认这块 NVMe。
- 卡在网络检测,或者提示缺固件:有些网卡(无线和企业级网卡居多)的固件不在主线镜像里。换带 firmware 的非官方镜像,或者先插网线把系统装完,再补
firmware-xxx包。 - 重启进 grub rescue,或者干脆进 BIOS:多半引导装错了盘。多硬盘机器上安装器会问”把引导装到哪”,手快点掉第一项,结果装到 U 盘上了。用救援模式重装一次引导能救,
grub-install /dev/sdX && update-grub。 - 黑屏,没有任何输出:显卡驱动的问题,装的时候在内核参数里加
nomodeset能对付过去。虚拟机黑屏先看显卡型号配得对不对,比如设了 virtio 但系统里没有对应驱动。 - 云主机看不到安装界面:控制台的 VNC 没开,或者这台实例只给串口。有的厂商要你在创建时选”自定义镜像”,或者从救援模式挂 ISO 进去。
安装器那几步真不难,难的是装上之前和装完之后——上面这些我基本都撞过一遍,下次装机前扫一眼就行。