前几天帮一位朋友收拾一台退役的老笔记本,他手里攥着一张好几年前刻录的 Debian 安装盘,装完之后发现只有个光秃秃的基础系统,中文输入法、网卡固件、甚至一部分常用工具都得自己联网抓。他问我的问题很朴素:镜像站上那一排 netinst、CD-1、DVD-1、BD-1,到底差在哪,为什么有的只有六百多兆,有的却有三四个 G。这类关于debian 安装介质里cd和dvd之间区别的疑问,几乎每隔一段时间就会在各种技术群里冒出来一次,尤其是刚接触linux的人,面对官方镜像目录里几十个文件,很容易挑花眼。
我打算把这件事一次讲透。不只是回答"哪个大哪个小"这种表面问题,而是把 CD 和 DVD 这两类介质背后的设计逻辑、软件包收录策略、适用场景、以及在新版本里发生的变化都摊开讲。看完之后你应该能做到两件事:第一,知道自己的场景该下哪个文件;第二,如果拿到的是一张离线光盘,知道怎么把它挂成 apt 源、怎么验证完整性、怎么避免装完发现少东西。适合刚上手 Debian 的新人,也适合需要做离线批量部署的老手,因为 CD 和 DVD 的取舍在离线场景里是个绕不开的决策。
1. 先把 Debian 官方镜像站里的安装介质理清楚
1.1 光盘时代的四类镜像,各自负责什么
如果你打开 Debian 的官方镜像目录,会看到文件名里带着一堆后缀:netinst、CD-1、DVD-1、BD-1、live。这五类东西在早期版本里是平行存在的,各自有明确分工。netinst是最小安装镜像,只包含安装器本身和最基础的核心系统,体积控制在 700MB 以内,剩下的软件包全靠安装过程中从网络仓库下载。它的定位是"我需要一个干净系统,网络条件还不错"。
CD-x是一整套光盘的第一张、第二张、第三张……直到把主仓库里的软件包全部装完。DVD-x做的是同一件事,但因为它单张容量更大,需要的张数更少。BD-x是蓝光版本,单张 25GB 起步,通常一到两张就能覆盖完整仓库。live则是另一个体系,是可以直接跑起来体验的桌面环境镜像,同时附带安装功能,和前面几类不是一回事。
这里有个特别容易被忽略的点:CD-1和DVD-1里的"1"不是版本号,是套盘里的第一张。当你看到CD-3、DVD-2时,它们必须和同套的第一张配合使用才能组成完整软件源。很多人只下了一张CD-3,结果发现压根没法引导安装,就是因为CD-1才带引导扇区。
1.2 文件名怎么读,别被一长串字符绕晕
拿一个典型的文件名举例:debian-12.5.0-amd64-DVD-1.iso。拆开看,debian是发行版名,12.5.0是版本号(12 是大版本代号 bookworm,5.0 是第几次小版本更新),amd64是 CPU 架构(对应 64 位 Intel/AMD,ARM 机器会是 arm64,32 位老机器是 i386),DVD-1就是介质类型加套盘序号,.iso是光盘镜像格式。
架构这一项特别值得留意。老笔记本如果是 2008 年之前的 32 位处理器,amd64的镜像根本引导不了,得找i386。而近几年的 ARM 开发板、部分国产化平台上的机器,走的是arm64或armhf。下错架构的镜像,表现是开机后卡在引导界面或者直接黑屏,不会给你任何友好提示,所以下载前确认架构这一步别省。
顺带说一句题外话,如果你在搜索引擎里搜"debian cd",很可能混进来一堆讲shell 命令 cd的结果——那个cd是 change directory 的缩写,跟光盘完全没关系。这也是很多人第一次查资料时被带偏的原因,搜的时候记得带上"安装介质"或者"iso"这类限定词。
2. CD 与 DVD 的本质差异:容量决定了软件包数量
2.1 700MB 和 4.7GB 是从哪来的
CD 的标准容量是 700MB(约 80 分钟音频),这是上世纪 80 年代定下的规格,几十年没变过。DVD 单层是 4.7GB,双层是 8.5GB,通常说 DVD 就是单层那个数。6.7 倍的容量差距,直接决定了同样的 Debian 仓库,用 CD 装需要多少张盘、用 DVD 装需要多少张盘。
这个容量差距最直观的体现是"套盘张数"。以一个完整主仓库的体量来估算,Debian 主仓库加 contrib、non-free 之后,二进制的 deb 包总量在几十 GB 量级。分成 700MB 一张的 CD,得十几到二十张;分成 4.7GB 的 DVD,三四张就够;换到 25GB 的蓝光,一两张能收工。注意,具体张数每个版本都不一样,因为软件包整包体积一直在涨,我这里给的是量级概念,实际张数以官方目录列表为准。
2.2 "首张盘可用"和"完整软件集"是两种目标
这里有个设计哲学上的区别,比容量数字更重要。CD 和 DVD 的镜像制作目标其实分两种思路。
第一种思路是最小可安装:只保证第一张盘的容量里塞下安装器和核心系统,让你能把机器启动到命令行或者基础桌面,然后剩下的东西联网解决。netinst就是纯这种思路,很多CD-1也带着引导安装的能力。
第二种思路是离线可完成:希望你在完全没有网络的环境下,把一整套系统装到可用的程度,包括桌面环境、开发工具、常用库。这就需要把所有 deb 包都放进镜像里,于是就有了 DVD 多张、BD 多张的完整集。
CD 的尴尬之处就在这中间地带。单张 700MB 想塞下完整桌面环境加常用软件,几乎不可能,所以 CD 完整集只能靠"多张盘换盘"来补足容量,这也是为什么网上会有"cd 换盘"这种搜索——装到一半提示插入第 5 张盘,是 CD 时代的常态体验。DVD 因为单张容量大,多数人的实际体验是一张 DVD-1 装完就基本够用,换盘这件事几乎遇不到。
2.3 一张表看清两类介质的差别
| 对比维度 | CD 系列 | DVD 系列 |
|---|---|---|
| 单张容量 | 约 700MB | 约 4.7GB |
| 完整集张数(量级) | 十几到二十张 | 三到四张 |
| 单张能否装出可用桌面 | 通常需要联网补包 | DVD-1 往往够用 |
| 换盘频率 | 高,安装过程可能多次提示 | 低,多数场景一张到底 |
| 老光驱兼容性 | 好,2000 年前后的光驱基本都吃 | 差,早期光驱可能读不出 |
| 写U盘耗时 | 短 | 长,4GB 起跳 |
| 适合场景 | 网络好、只要最小系统 | 离线装机、批量部署 |
| 引导能力 | CD-1 带引导 | DVD-1 带引导 |
这张表里最值得单独拎出来说的是老光驱兼容性。2005 年以前的笔记本,很多配的是纯 CD 光驱,物理上读不了 DVD 盘片。如果你手上正好是这种机器,又只有光驱这一条路,那 CD 系列就不是"次选"而是"唯一选"。反过来,只要机器能读 DVD,DVD 在便利性上是碾压 CD 的。
3. 新版本里 Debian 还发不发 CD,这件事变了
3.1 Debian 11 及以前:CD 完整集还在
在 Debian 11(bullseye)及更早的版本里,CD 完整集是官方正式提供的,你确实能在镜像站上看到CD-1一直到十几张的完整列表。那个年代的装机教程里,"下载全部 CD 镜像然后配置本地源"是一套标准玩法,尤其在校园网、企业内网这类带宽紧张的环境里很常见。
当时这么做的理由很实在:早期网络速度慢,与其装系统时慢悠悠地从公网拉几百兆甚至几个 G 的包,不如一次性把十几张 CD 下下来,做成一个本地离线源,后面装多少台机器都不再耗公网流量。这套玩法在批量部署场景下非常划算。
3.2 Debian 12 之后:完整 CD 集基本退出舞台
到了 Debian 12(bookworm),情况有了明显变化。官方的完整 CD 系列被砍掉了,只剩下netinst、DVD和BD三类。原因不复杂:现代桌面环境和开发工具的软件包体积早就不是 700MB 能装得下的了,硬凑成 CD 完整集,张数会膨胀到二十多张,实用性很差。与其维持一个几乎没人用的完整集,不如把资源集中在 DVD 和 BD 上。
所以现在你在官网看到的所谓"CD",严格说主要是netinst这种体积控制在 CD 容量范围内的镜像,它不是完整集,只是一张最小安装盘。这一点特别容易误导人:新人看到netinst只有六百多兆,以为"CD 就是小巧版",下完发现装完什么都没有,还得联网。其实netinst的定位从来就不是"离线可用",它是"网络优先"。
3.3 这对选盘意味着什么
结论很直接:如果你今天要给一台现代机器装 Debian,netinst是默认首选,前提是有网络。如果你需要离线,那就直接上DVD-1,别再去翻 CD 完整集,因为新版已经基本不提供了。只有当你的目标机器是纯 CD 光驱的老古董,才需要特殊处理——这种情况下更现实的做法是用 U 盘安装,或者用netinst光盘引导加网络仓库。
这里插一句版本相关的小提醒。Debian 的大版本代号是玩具总动员的名字:11 是 bullseye,12 是 bookworm,13 是 trixie。写sources.list的时候,用代号比用stable更稳,因为stable会随版本发布自动指过去,某天你apt update之后突然发现一堆包要升级,很可能就是因为stable换人了。
4. 四种典型场景,分别该下哪个文件
4.1 有网环境、单机安装:netinst 就够
这是最常见的情况。家里有宽带、公司内网能出公网,直接下debian-xx-amd64-netinst.iso,六百多兆,写个 U 盘两分钟搞定。安装过程里它会问你走网络源还是光盘源,选网络,然后从最近的镜像站拉包。
netinst的好处是灵活。安装器会让你在任务选择阶段勾选要装的环境:SSH server、标准系统工具、GNOME/KDE/XFCE 等桌面。勾了 SSH 不勾桌面,装出来就是个干净的命令行服务器,体积小、启动快、攻击面小,拿来跑服务非常合适。这也顺带解决了另一个常见需求——很多人装完 Debian 之后想装 Docker、配静态 IP、关掉休眠,用一个干净的最小系统做这些事,比在一堆预装软件里翻找要省心得多。
我自己的习惯是:netinst+ 只勾 SSH server 和标准系统工具,装完第一件事就是配sources.list换到就近镜像站,然后apt update && apt upgrade,再按需装东西。这条路径跑了几十次,稳。
4.2 完全离线、必须一次装好:上 DVD
有些环境物理隔离,机器不通外网,你又必须把桌面环境装出来。这时候DVD-1是主力。Debian 的DVD-1里除了安装器,还带上了完整桌面环境和大量常用包,多数情况下装完就能进图形界面,不需要联网补关键依赖。
如果你连contrib、non-free里的网卡固件、显卡驱动都要备齐,那DVD-1可能还不够,得把DVD-2、DVD-3也下下来做成一套。判断方法很简单:把几张小写字母连起来看官方目录里这一版有多少张 DVD,全都下齐就是完整集。
4.3 批量部署:DVD 镜像做成本地 apt 源
这是我处理机房时最常用的一招。把DVD-1的 iso 拷到内网一台机器上,挂载成目录,再用nginx之类的工具暴露成 HTTP 源,或者干脆配成file://路径给同机使用。其他机器装系统时把sources.list指向这个内网地址,几百兆的包在内网跑,速度比公网快一个数量级。
有意思的是,这个方案的思路和CI/CD流水线里缓存依赖包的做法是相通的——都是把"每次都从远端拉"变成"本地有一份,直接用"。区别只是流水线缓存的是 pip、npm 的包,这里缓存的是 deb 包。
4.4 U 盘还是刻盘,顺手说说
2020 年之后基本没人刻盘了,U 盘才是主流。netinst写到 U 盘是几百兆,几分钟;DVD-1是 3.7GB 左右,写入要几分钟到十几分钟,取决于 U 盘速度。注意 U 盘要用 USB 3.0 以上的,插在 USB 2.0 口上写 4GB 会很煎熬。
如果你的 U 盘容量够大(比如 32GB 以上),可以考虑一次放多个 iso 的多启动方案,用开源工具做引导菜单,这样一张 U 盘里同时装 Debian、Ubuntu、Windows 的镜像,装什么机器都够用。这个方案的代价是配置稍微麻烦点,第一次搭要多花半小时。
5. 实操:从下载到把光盘挂成离线源
5.1 下载和完整性校验,这一步别偷懒
下载完成后,务必校验。iso 下载过程中损坏是真实存在的事,尤其是通过不稳定的网络。官方目录里会有SHA256SUMS文件,里面列了所有镜像的哈希值。
# 计算本地文件的 SHA256 sha256sum debian-12.5.0-amd64-DVD-1.iso # 和官方列表对比(可以只比对目标文件那行) grep DVD-1 SHA256SUMS两个值一模一样就没问题。如果还想更严格,可以做 GPG 签名校验,官方提供SHA256SUMS.sign,用 Debian 的签名密钥验证,确认这个校验文件本身没被人篡改过。
gpg --verify SHA256SUMS.sign SHA256SUMS对于一般的个人使用,SHA256 对比够用了;对于企业环境或者对安全性要求高的情况,GPG 这一步值得加上。
5.2 写 U 盘:dd 的坑和替代方案
Linux 下最直接的方式是dd:
# 先确认 U 盘设备名,别写错,写错盘会丢数据 lsblk # 写入,注意 of= 后面是整个设备,不是分区 sudo dd if=debian-12.5.0-amd64-netinst.iso of=/dev/sdb bs=4M status=progress oflag=syncstatus=progress让你能看到进度,不然dd全程静默,你不知道是在写还是卡死了。oflag=sync保证数据真正落盘再返回,避免拔盘时还没写完。
注意:
of=一定要写整盘设备(比如/dev/sdb),不能写成分区(/dev/sdb1)。写错目标盘的后果是不可逆的数据丢失,执行前一定用lsblk确认清楚,把 U 盘容量、厂商名对一遍。
不习惯命令行的可以用图形工具写盘,操作直观,也基本不会选错设备。Windows 环境下同样有对应的写盘工具,思路一致。
5.3 把 DVD 镜像挂成 apt 源,离线装机必备
如果你用的是物理 DVD,安装器通常会自动配好cdrom源。但如果你手上是 iso 文件,想手动挂载使用,做法是这样:
# 创建挂载点 sudo mkdir -p /mnt/dvd # 挂载 iso 文件(注意用 loop 模式) sudo mount -o loop /path/to/debian-12.5.0-amd64-DVD-1.iso /mnt/dvd # 用 apt-cdrom 把它登记成源,这一步会自动识别并写入 sources.list sudo apt-cdrom -d=/mnt/dvd addapt-cdrom这个命令挺省事,它会读取光盘里的Release文件,自动判断发行代号和组件,帮你写好配置。手写也不是不行,在/etc/apt/sources.list里加一行:
deb [trusted=yes] file:///mnt/dvd bookworm main contrib[trusted=yes]是因为本地目录没有签名链,加上这个选项 apt 才不会抱怨。生产环境里不建议长期保留这个选项,装完需要的包之后就注释掉,然后重新apt update,让系统回到网络源上。
5.4 装完之后的源配置,别急着断电
不管用哪种介质装的,装完之后第一件事都应该是检查/etc/apt/sources.list。用netinst装的话,安装器会问你用哪个镜像站,选个近的就行;用 DVD 装的话,很多时候源还指着cdrom,这时候你apt install任何不在盘里的包都会失败,报错信息大概是"无法定位软件包"或者"介质未插入"。
正确做法是切到官方源或者国内镜像站:
deb https://deb.debian.org/debian bookworm main contrib non-free non-free-firmware deb https://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware deb https://security.debian.org/debian-security bookworm-security main contrib non-free注意 Debian 12 开始多了个non-free-firmware组件,很多网卡驱动、无线固件都在里面,少了它你会发现网卡认不出来。改完源之后:
sudo apt update sudo apt upgrade如果这时候发现apt update报 GPG 密钥错误,多半是系统时间不对或者镜像站同步有问题,先date看一眼时间,再试一次。
6. 常见问题与排查实录
6.1 问题速查表
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 装到一半提示插入下一张盘 | 用的是 CD 完整集,且没下齐 | 下齐同套所有盘,或改用 DVD-1 |
| 装完没有图形界面 | 用了 netinst 且没勾桌面环境 | 重新安装并勾选桌面,或 apt 装桌面元包 |
| 装完 apt 装不了包,提示介质错误 | sources.list 还指着 cdrom | 换成网络源或挂载好本地源 |
| 光盘引导后黑屏 | 架构不匹配,或镜像损坏 | 换对应架构镜像,重新校验哈希 |
| 老光驱读不出盘 | 光驱只支持 CD,盘是 DVD | 换 CD 介质或改用 U 盘安装 |
| 装完网卡没驱动 | 缺 non-free-firmware 组件或固件包 | 补上组件,或从其他机器拷固件 deb |
| dd 写入后 U 盘无法引导 | 写错设备或没写引导扇区 | 确认写的是整盘,重新写入 |
6.2 几个我踩过的坑,说给你听
第一个坑是"只下第一张"。早年我第一次搞离线装机,看到DVD-1就以为是全部,下完装上发现某个开发库找不到包,折腾半天才反应过来还有DVD-2。判断方法:去官方目录看那个版本下有几张,别凭感觉猜。
第二个坑是 U 盘格式的误解。很多人以为要先把 U 盘格式化成 FAT32 再拷 iso 进去就行,这个做法对某些支持"镜像解压"方式的固件能用,但对绝大多数情况是不行的,U 盘必须经过 dd 这类逐扇区写入才有引导能力。判断标准很简单:写完之后 U 盘在系统里看起来会变成一个光盘设备,而不是一个可写文件夹。
第三个坑是时间。dd写 4GB 的 DVD 镜像到普通 U 盘,可能要好几分钟,这期间没有任何输出的话会以为卡死。加上status=progress就能看到速率,一般 20MB/s 到 100MB/s 不等,速率长时间为 0 才是真有问题。
第四个坑是多余的分区。用 CD 完整集装机时,安装器可能会把光盘源写进sources.list,之后你插了新光盘却不重新apt-cdrom add,就会一直报错。清理方式很简单,把sources.list里所有cdrom开头的行注释掉就行。
还有一个容易被忽略的细节:光盘挂载点在安装完成后往往会消失,因为你得先mount才能用。如果你做了离线源,但重启后忘了重新挂载,apt又会开始报错。把挂载写进/etc/fstab能避免这个反复操作,或者干脆用 HTTP 方式暴露本地源,一劳永逸。
7. 我的实际经验:现代场景里 CD 和 DVD 怎么选
说到底,CD 和 DVD 的区别在 2024 年之后已经被简化成一个非常现实的判断:你的机器有没有网络,你的光驱能不能读 DVD。有网络就netinst,没网络就DVD-1起步、需要什么补什么。体积大不是缺点,容量大反而意味着更少的换盘和更少的依赖下载。
CD 的价值现在主要体现在两种场合:一是纯 CD 光驱的老设备,物理上别无选择;二是你想把镜像体积压到最小,比如塞进容量很小的 U 盘,或者做网络引导的启动镜像。除此之外,真没必要特意去追 CD 完整集,尤其新版里它已经基本不提供了。
我自己现在的主力做法是一张 32GB 的 U 盘,里面放netinst加几个常用发行版的 iso,配合一个多启动引导。装普通机器用netinst走网络,装机房内网机器就临时挂一个内网的 HTTP 源,速度飞快。这套配置用了两年多,从桌面机到服务器到虚拟机全都能覆盖。
最后分享一个小技巧:如果你经常需要在虚拟机里装 Debian 做测试,根本不用写 U 盘,直接让虚拟机挂载 iso 文件当光驱就行,装完立刻能跑。虚拟机里改sources.list、配静态 IP、关休眠这些操作练熟了,再到物理机上操作会顺手很多——毕竟在虚拟机里搞坏了,删掉重来只要几十秒。