免U盘安装debian系统

十月 22, 2025 #debootstrap

使用 debootstrap 构建一个原生 Debian 系统并引导启动(推荐)

这是最干净、最安全、完全不需要U盘的方法。 你会在 Ubuntu 里“手工安装”一个 Debian,然后让 grub 启动它。

如果没有空闲分区, 缩小 Ubuntu 的根分区,腾出 20GB 以上空间,创建一个 ext4 分区。

lsblk
sudo apt update
sudo apt install debootstrap grub2 systemd-container
# debootstrap 安装 Debian(例如 Debian 13 Trixie)
sudo debootstrap trixie /mnt/debian http://deb.debian.org/debian

这一步会自动在 /mnt/debian 下生成一个完整的 Debian 根文件系统。

# 挂载关键目录并进入 Debian 环境
mount /dev/nvme0n1p3/ /mnt/debian/
mount --bind /dev /mnt/debian/dev
mount --bind /dev/pts /mnt/debian/dev/pts
mount --bind /proc /mnt/debian/proc
mount --bind /sys /mnt/debian/sys
mount --bind /run /mnt/debian/run
mount /dev/nvme0n1p1 /mnt/debian/boot/efi   # 替换为你的 ESP 分区

sudo chroot /mnt/debian

# 在 chroot 中配置系统(此时你“已经在 Debian 中”)
# 设置主机名
echo debian > /etc/hostname
# 配置 apt 源
cat > /etc/apt/sources.list.d/debian.sources <<EOF
Types: deb
URIs: http://mirrors.ustc.edu.cn/debian
Suites: trixie trixie-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: http://mirrors.ustc.edu.cn/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF
apt update
apt install -y linux-image-amd64 locales sudo vim network-manager
apt install -y grub-efi-amd64-bin grub-efi-amd64-signed grub-efi-amd64
apt install -y systemd vim wget curl tmux openssh-server iproute2 net-tools ifupdown systemd-resolved
apt install -y firmware-linux firmware-realtek firmware-iwlwifi
apt install -y iw wpasupplicant wireless-tools
apt install firmware-sof-signed # firmware-intel-sound
apt install -y tasksel
tasksel install standard --new-install
# 这会安装约 300MB 的常用包,包括完整网络支持、man 手册、日志工具等。

配置网络和efi启动项

mkdir -p /etc/wpa_supplicant
# 可选: 使用 wpa_passphrase 工具生成加密的配置,而不是明文密码
# wpa_passphrase YOUR_SSID YOUR_PASSWORD > /etc/wpa_supplicant/wpa_supplicant.conf
cat<<EOF > /etc/wpa_supplicant/wpa_supplicant-wlp0s20f3.conf
ctrl_interface=/run/wpa_supplicant
update_config=1
network={
    ssid="wifi ssid"
    psk="wifi passwd"
}
EOF
cat >/etc/systemd/network/20-wifi.network <<'EOF'
[Match]
Name=wlp0s20f3
[Network]
DHCP=yes
EOF
chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlp0s20f3.conf
systemctl enable systemd-networkd
systemctl enable systemd-resolved
systemctl enable wpa_supplicant@wlp0s20f3

# 这会在 wpa_supplicant 连接 Wi-Fi 成功后自动获取 IP

# 使用更现代的 iwd(更简单)
apt install -y iwd
systemctl enable iwd
# 连接 Wi-Fi(交互式):
iwctl
# [iwd]# device list
# [iwd]# station wlp2s0 scan
# [iwd]# station wlp2s0 get-networks
# [iwd]# station wlp2s0 connect 你的WiFi名称
# [iwd]# exit
# 一旦连上,systemd-networkd 会自动分配 IP 并联网。
# iwd 会自动保存密码,下次开机自动连接。

adduser peter
adduser peter sudo
blkid  # 查看新分区 UUID
cat<<EOF >> /etc/fstab
UUID=你的新分区UUID / ext4 defaults 0 1
EOF
# 安装 grub 到磁盘并更新菜单
# grub-install /dev/nvme0n1
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=DEBIAN --force

update-grub
# 它会检测到你的 Ubuntu + Debian 双系统。
# 重启后你会在 GRUB 菜单里看到 “Debian GNU/Linux”。
sudo reboot

sudo efibootmgr --create --disk /dev/nvme0n1 --part 1 --label "Debian" --loader '\EFI\debian\grubx64.efi'
# /dev/nvme0n1 和 --part 1 要替换为你的实际 EFI 分区所在磁盘与分区号。
# 可用 lsblk -f 或 findmnt /boot/efi 查看。
# 如果你的路径是 /boot/efi/EFI/debian/grubx64.efi,那 loader 路径就对了。
sudo efibootmgr --bootnum 0001 --bootorder 0001,0000,0002
sudo efibootmgr -v
# 重启后使用F12 可以选择efi的条目

登录debian中安装

# apt install locales
# dpkg-reconfigure locales
sudo vim /etc/locale.gen
# 在文件中找到包含 zh_CN.UTF-8 的那一行,并取消注释(即删除行首的 # 符号)。
#zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8   <-- 确保这一行没有 #
#zh_HK.UTF-8 UTF-8

# 设置系统默认 locale(可选):
sudo update-locale LANG=zh_CN.UTF-8
# 或者保留英文界面但支持中文显示:
sudo update-locale LANG=en_US.UTF-8 LANGUAGE=zh_CN:en
# 安装简体中文语言支持包
sudo apt-get install language-pack-zh-hans
# sudo localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
# 较完整,适合新硬件,推荐主流使用:
sudo apt install task-gnome-desktop -y
sudo apt install -y network-manager-gnome

sudo systemctl disable wpa_supplicant@wlp0s20f3
sudo systemctl enable NetworkManager
sudo systemctl start NetworkManager

使用 systemd-nspawn 启动完整 Debian 容器系统

如果你暂时不想重启,可以直接在 Ubuntu 下运行“原生 Debian 系统容器”:

sudo debootstrap trixie /srv/debian http://deb.debian.org/debian
sudo systemd-nspawn -D /srv/debian
# 这会直接进入一个 Debian 容器(有独立的 /etc、/usr、apt、systemd),
# 就像一个轻量虚拟机,非常适合测试迁移。

使用 grub 引导 ISO 镜像直接安装 Debian(无U盘安装)

可以让 grub 直接从 Debian ISO 启动:

wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-13.0.0-amd64-netinst.iso -O /boot/debian.iso
cat <<EOF | sudo tee -a /etc/grub.d/40_custom
menuentry "Install Debian 13 (from ISO)" {
    set isofile="/boot/debian.iso"
    loopback loop (hd0,3)$isofile
    linux (loop)/install.amd/vmlinuz boot=install iso-scan/filename=$isofile
    initrd (loop)/install.amd/initrd.gz
}
EOF
sudo update-grub
# 重启,选择 “Install Debian 13 (from ISO)”
# 安装时选择 保留 /home 分区,即可实现无U盘切换系统。

EOF

网络启动(PXE)或 iPXE(高级)

若你的笔记本支持 PXE 网络启动,可通过局域网加载 Debian 安装器。 需另一台电脑作为 TFTP/DHCP 服务器,配置复杂,一般用户不推荐。

创建虚拟磁盘作为临时“Live 环境”(极不推荐)

理论上可用 kexec 加载新内核 + initrd 实现“内存中切换”,但操作复杂、风险极高,且仍需处理分区缩小问题。