无需 USB 安装 Linux:完整技术指南

在数字化时代,Linux 凭借其稳定性、安全性和开源特性,成为开发者、服务器管理员乃至普通用户的首选操作系统之一。传统安装 Linux 的方式通常依赖 USB 闪存盘,但有时我们可能面临没有 USB 设备、设备不支持 USB 启动(如部分老旧笔记本或嵌入式设备),或需要批量部署等场景。本文将详细介绍 无需 USB 即可安装 Linux 的多种方法,包括基于光盘、GRUB 直接引导 ISO、网络启动(PXE)以及 secondary 硬盘/分区安装,并附上最佳实践与故障排除技巧,帮助你轻松完成安装。

目录#

  1. 前提条件
  2. 方法一:通过 CD/DVD 安装 Linux
  3. 方法二:使用 GRUB 直接引导 ISO 文件
    • 3.1 准备工作
    • 3.2 配置 GRUB 引导项
    • 3.3 启动并安装 Linux
    • 3.4 示例:Ubuntu 与 Fedora 的 GRUB 配置
  4. 方法三:网络启动(PXE)安装
    • 4.1 PXE 原理与环境准备
    • 4.2 搭建 PXE 服务器(基于 dnsmasq)
    • 4.3 客户端启动与安装
  5. 方法四:通过 Secondary 硬盘/分区安装
  6. 最佳实践
  7. 常见问题与故障排除
  8. 总结
  9. 参考资料

1. 前提条件#

在开始安装前,请确保满足以下条件:

  • Linux 发行版 ISO 文件:从官方网站下载目标发行版(如 Ubuntu、Fedora、Debian)的 ISO 文件,建议选择 LTS 版本(如 Ubuntu 22.04 LTS)以获得长期支持。
  • 足够的磁盘空间:至少预留 20GB 空间(根据发行版需求调整,如 KDE 桌面环境需更多空间)。
  • 现有操作系统:若使用 GRUB 引导 ISO 方法,需已有 Windows 或 Linux 系统(且安装了 GRUB 引导器)。
  • 备份数据:安装前务必备份重要文件,避免分区操作或引导错误导致数据丢失。
  • 验证 ISO 完整性:通过官方提供的 SHA256 校验和验证 ISO 文件,确保未损坏或被篡改(例如 sha256sum ubuntu-22.04.iso 命令)。
  • 禁用 Secure Boot:部分设备的 UEFI 安全启动会阻止非官方系统引导,需在 BIOS/UEFI 设置中关闭(设置路径因厂商而异,通常在 "Security" 或 "Boot" 选项卡)。

2. 方法一:通过 CD/DVD 安装 Linux#

若你的设备有 光驱,光盘安装是最直接的方式(无需 USB)。步骤如下:

2.1 准备光盘#

  1. 下载 ISO 文件:从发行版官网获取 ISO(如 Ubuntu 官网)。
  2. 刻录 ISO 到光盘:
    • Windows:使用 ImgBurn、Rufus(选择“刻录镜像”模式)或内置的“刻录光盘映像”工具。
    • macOS:使用“磁盘工具”→“文件”→“刻录磁盘映像”。
    • Linux:使用 Brasero、K3b 或命令行 wodim -v dev=/dev/sr0 ubuntu-22.04.iso(需替换 /dev/sr0 为光驱设备路径)。

2.2 启动并安装#

  1. 设置 BIOS/UEFI 从光盘启动:重启设备,按 F2/Del/F12(因厂商而异)进入 BIOS/UEFI,将“Boot Priority”中“CD/DVD Drive”设为第一启动项。
  2. 启动安装程序:保存设置并重启,设备将从光盘引导,按提示选择“Install Ubuntu”等选项,后续步骤与常规 USB 安装一致(选择语言、分区、用户名等)。

注意:现代轻薄本多无光驱,此方法更适用于老旧设备或服务器。

3. 方法二:使用 GRUB 直接引导 ISO 文件#

若设备已有操作系统(Windows 或 Linux),可通过 GRUB 引导器直接加载 ISO 文件,无需额外介质。核心原理是通过 GRUB 的 loopback 命令挂载 ISO 并引导其内核。

3.1 准备工作#

  1. 存放 ISO 文件:将下载的 Linux ISO 复制到一个非系统分区(如 Windows 的 D 盘、Linux 的 /home 分区),确保分区格式为 GRUB 支持的类型(如 NTFS、ext4、FAT32,不建议 exFAT,GRUB 对其支持有限)。
  2. 获取分区 UUID:需知道 ISO 所在分区的 UUID(全局唯一标识符),用于 GRUB 定位分区:
    • Linux 环境:打开终端,执行 blkid 命令,找到 ISO 所在分区的 UUID(如 UUID="1234-ABCD")。
    • Windows 环境:按 Win+R 输入 diskpart,执行 list volume 找到分区卷标,再通过工具(如 DiskGenius)查看 UUID。

3.2 配置 GRUB 引导项#

GRUB 配置文件通常位于 /boot/grub/grub.cfg,但建议通过 /etc/grub.d/40_custom 添加自定义引导项(避免更新 GRUB 时被覆盖)。

步骤:#

  1. 编辑 GRUB 配置文件:

    • Linux 用户:终端执行 sudo nano /etc/grub.d/40_custom(使用 nano 或 vim 编辑器)。
    • Windows 用户:若已安装 Linux 双系统,同上;若仅 Windows,需通过 Live CD 启动或使用工具(如 EasyBCD)修改,但推荐先安装 GRUB(可通过 Boot-Repair 工具)。
  2. 添加引导项:在文件末尾添加以下格式的引导项(以 Ubuntu 22.04 为例,ISO 位于 UUID 为 1234-ABCD 的 NTFS 分区,路径为 /iso/ubuntu-22.04.iso):

menuentry "Install Ubuntu 22.04 from ISO" {
    set isofile="/iso/ubuntu-22.04.iso"  # ISO 文件路径(相对于分区根目录)
    insmod part_gpt                       # 加载 GPT 分区模块(UEFI 设备)
    insmod part_msdos                     # 加载 MBR 分区模块(Legacy BIOS)
    insmod ntfs                           # 加载 NTFS 文件系统模块(根据实际分区格式替换,如 ext2/3/4、fat)
    search --no-floppy --fs-uuid --set=root 1234-ABCD  # 替换为 ISO 所在分区的 UUID
    loopback loop $isofile                # 挂载 ISO 文件到 loop 设备
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject  # 引导内核,传递参数
    initrd (loop)/casper/initrd           # 加载 initrd 镜像
}

参数说明:

  • boot=casper:Ubuntu live 环境的引导参数(Fedora 等其他发行版可能不同,需调整)。
  • iso-scan/filename=$isofile:告诉安装程序从指定 ISO 加载数据。
  • noprompt noeject:避免安装过程中提示确认或弹出光盘(此处无实际光盘,仅为兼容)。

3.3 启动并安装 Linux#

  1. 更新 GRUB:

    • Linux 环境:终端执行 sudo update-grub(Debian/Ubuntu)或 sudo grub2-mkconfig -o /boot/grub2/grub.cfg(Fedora/CentOS),GRUB 将自动检测并添加新引导项。
    • Windows 环境(已安装 GRUB):同上,或通过 Live CD 挂载系统分区后执行更新命令。
  2. 重启并选择引导项:重启设备,在 GRUB 菜单中选择新增的“Install Ubuntu 22.04 from ISO”选项,系统将从 ISO 启动 live 环境。

  3. 开始安装:进入 live 环境后,双击“安装 Ubuntu”图标,按提示完成分区、用户设置等步骤。安装完成后,GRUB 将自动更新,添加新系统的引导项。

3.4 示例:Ubuntu 与 Fedora 的 GRUB 配置#

Ubuntu/Debian 示例(NTFS 分区):#

menuentry "Install Ubuntu 22.04 (NTFS)" {
    set isofile="/ISO/ubuntu-22.04.iso"
    insmod ntfs
    search --fs-uuid --set=root 12345678-ABCD-EFGH-IJKL-MNOPQRSTUVWX  # NTFS 分区 UUID
    loopback loop $isofile
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet splash
    initrd (loop)/casper/initrd
}

Fedora 示例(ext4 分区):#

menuentry "Install Fedora 38 (ext4)" {
    set isofile="/iso/Fedora-Workstation-Live-x86_64-38-1.6.iso"
    insmod ext2  # ext4 需加载 ext2 模块(GRUB 兼容性)
    search --fs-uuid --set=root ABCDEF12-3456-7890-ABCD-EF1234567890  # ext4 分区 UUID
    loopback loop $isofile
    linux (loop)/isolinux/vmlinuz iso-scan/filename=$isofile inst.stage2=hd:UUID=$rootuuid quiet
    initrd (loop)/isolinux/initrd.img
}

注意:Fedora 的内核路径为 /isolinux/vmlinuz,且需添加 inst.stage2=hd:UUID=$rootuuid 指定安装源($rootuuid 即分区 UUID)。

4. 方法三:网络启动(PXE)安装#

PXE(Preboot Execution Environment) 适用于无本地存储或需批量部署 Linux 的场景(如机房服务器)。通过网络从 PXE 服务器加载引导文件和安装源,实现无介质安装。

4.1 PXE 原理与环境准备#

  • 核心组件:
    • DHCP 服务器:分配 IP 地址并告知客户端 PXE 服务器地址。
    • TFTP 服务器:提供引导文件(如 Linux 内核、initrd、GRUB 模块)。
    • HTTP/FTP/NFS 服务器:存放 Linux 安装源(ISO 挂载目录或网络仓库)。
  • 环境要求:
    • 一台 Linux 服务器(作为 PXE 服务器,需双网卡:一个连公网,一个连客户端局域网)。
    • 客户端设备支持网络启动(在 BIOS/UEFI 中启用“Network Boot”或“PXE Boot”)。

4.2 搭建 PXE 服务器(基于 dnsmasq)#

以 Ubuntu Server 为例,使用 dnsmasq(集成 DHCP+TFTP)简化配置:

步骤 1:安装依赖#

sudo apt update && sudo apt install dnsmasq tftp-hpa apache2  # apache2 用于 HTTP 共享安装源

步骤 2:配置 dnsmasq(DHCP+TFTP)#

编辑 /etc/dnsmasq.conf:

# DHCP 配置
interface=eth1  # 局域网网卡(连客户端)
dhcp-range=192.168.100.10,192.168.100.100,255.255.255.0,24h  # IP 地址池
dhcp-boot=pxelinux.0  # 客户端启动文件
dhcp-option=3,192.168.100.1  # 网关(PXE 服务器 IP)
dhcp-option=6,8.8.8.8,8.8.4.4  # DNS 服务器
 
# TFTP 配置
enable-tftp
tftp-root=/srv/tftp  # TFTP 根目录

步骤 3:准备引导文件#

  1. 挂载 Linux ISO:
    sudo mount -o loop ubuntu-22.04.iso /mnt
  2. 复制引导文件到 TFTP 目录:
    sudo mkdir -p /srv/tftp/ubuntu
    sudo cp /mnt/casper/vmlinuz /mnt/casper/initrd /srv/tftp/ubuntu/  # 复制内核与 initrd
    sudo cp /mnt/boot/grub/x86_64-efi/core.efi /srv/tftp/  # UEFI 引导文件(若客户端为 UEFI)

步骤 4:配置 HTTP 共享安装源#

将 ISO 内容复制到 Apache 根目录,供客户端安装时访问:

sudo cp -r /mnt/* /var/www/html/ubuntu/
sudo umount /mnt  # 卸载 ISO

4.3 客户端启动与安装#

  1. 客户端设置:进入 BIOS/UEFI,启用网络启动并设为第一优先级,保存重启。
  2. PXE 引导:客户端将通过 DHCP 获取 IP,从 TFTP 服务器下载引导文件,启动 Linux 内核。
  3. 安装 Linux:内核启动后,安装程序通过 HTTP 访问 http://192.168.100.1/ubuntu 获取安装源,后续步骤与常规安装一致。

5. 方法四:通过 Secondary 硬盘/分区安装#

若设备有 第二块硬盘(如额外的 SATA 硬盘、M.2 SSD)或 未使用的分区,可将 ISO 写入该硬盘/分区,直接引导安装。

步骤:#

  1. 识别目标硬盘:通过 lsblk(Linux)或磁盘管理(Windows)确认第二硬盘路径(如 /dev/sdb)。

  2. 写入 ISO 到硬盘(可选):若硬盘无需保留数据,可直接用 dd 命令将 ISO 写入(类似 USB 制作,但目标为硬盘):

    sudo dd if=ubuntu-22.04.iso of=/dev/sdb bs=4M status=progress  # 替换 /dev/sdb 为目标硬盘

    警告:dd 命令会清空目标硬盘所有数据,务必确认路径正确!

  3. 或复制 ISO 内容到分区:若仅使用硬盘的某个分区,可格式化分区(如 FAT32),将 ISO 内所有文件复制到该分区,然后通过 GRUB 引导(参考方法二)。

  4. 启动安装:设置 BIOS/UEFI 从第二硬盘启动,后续步骤与光盘安装一致。

6. 最佳实践#

  • 优先备份数据:安装前通过 rsync、Timeshift 或外接硬盘备份重要文件,避免分区错误导致数据丢失。
  • 使用 LTS 版本:如 Ubuntu 22.04 LTS、Debian 12,长期支持减少频繁升级。
  • 验证 ISO 校验和:通过 sha256sum 或官方工具验证 ISO 完整性,避免因文件损坏导致安装失败。
  • 手动分区更可靠:安装时选择“手动分区”,指定 /(根分区,建议 30GB+)、swap(交换分区,内存≤8GB 时设为内存 2 倍,≥8GB 可设为 8GB)和 /boot/efi(UEFI 分区,FAT32,512MB)。
  • 安装后更新系统:安装完成后执行 sudo apt update && sudo apt upgrade(Debian/Ubuntu)或 sudo dnf update(Fedora),修复漏洞并优化性能。

7. 常见问题与故障排除#

Q1:GRUB 菜单中未显示新增引导项?#

  • 原因:未执行 update-grub,或配置文件路径错误(如 UEFI 系统需编辑 /boot/efi/EFI/ubuntu/grub.cfg)。
  • 解决:重新执行 sudo update-grub,或手动检查 /etc/grub.d/40_custom 中引导项语法是否正确。

Q2:启动 ISO 时提示“无法找到操作系统”?#

  • 原因:UUID 错误或 ISO 文件路径错误(区分大小写,如 ISO 与 iso 不同)。
  • 解决:通过 blkid 重新确认分区 UUID,确保 isofile 路径与实际存放位置一致。

Q3:PXE 客户端卡在“TFTP 连接超时”?#

  • 原因:防火墙阻止 TFTP 端口(69/UDP),或 dnsmasq 配置错误。
  • 解决:关闭服务器防火墙(临时测试):sudo ufw disable,或检查 dnsmasq.conf 中 interface 是否正确指向局域网网卡。

Q4:安装后无法启动新系统?#

  • 原因:GRUB 未更新,或 Secure Boot 未关闭。
  • 解决:通过 Live CD 启动,挂载系统分区,执行 update-grub;或进入 BIOS 关闭 Secure Boot。

8. 总结#

本文介绍了四种无需 USB 安装 Linux 的方法,各有适用场景:

  • CD/DVD:适合有光驱的老旧设备,操作简单但依赖硬件。
  • GRUB 引导 ISO:最推荐的通用方法,适用于已有操作系统的设备,无需额外介质。
  • PXE 网络启动:适合批量部署或无本地存储的场景,需服务器支持。
  • Secondary 硬盘/分区:适合有额外存储设备的用户,灵活性高。

根据你的设备条件和需求选择合适方法,遵循最佳实践可大幅降低风险。若遇到问题,可参考故障排除部分或官方文档。

9. 参考资料#