在 QEMU 中安装 Slackware

最后更新: 2025-05-15 00:27:41 +0800 +0800
原文以英文撰写。您正在阅读AI翻译版本。

Slackware 的镜像树、安装介质、软件包系列和文本模式安装程序之间保持着直接对应关系。理解这种结构有助于选择软件包以及诊断安装问题。下面的示例将在 UEFI QEMU 虚拟机中安装 Slackware64 15.0。

Slackware 资源与镜像树 #

主要项目资源包括:

镜像根目录包含历史版本、稳定版别名、开发树、ISO 镜像和不受支持的附加内容:

text
slackware/
├── slackware-15.0/          # 32-bit x86 release
├── slackware/               # current stable 32-bit release
├── slackware-current/       # development branch
├── slackware64-15.0/        # 64-bit x86 release
├── slackware64/             # current stable 64-bit release
├── slackware64-current/     # 64-bit development branch
├── slackware-iso/           # release ISO images and verification files
├── slackware-pre-1.0-beta/  # early historical material
└── unsupported/             # contributed boot media, packages, and add-ons

slackware-current 和 slackware64-current 是开发分支,而不是最新稳定版的别名。版本序列从 4.0 跳到了 7.0;项目将版本号调整为与当时的发行版保持一致时,跳过了 5 和 6。

发布目录同时也是可安装的软件仓库。例如,Slackware64 15.0 包含:

text
slackware64-15.0/
├── ChangeLog.txt
├── CHECKSUMS.md5
├── CHECKSUMS.md5.asc
├── FILELIST.TXT
├── GPG-KEY
├── PACKAGES.TXT
├── README_UEFI.TXT
├── Slackware-HOWTO
├── EFI/
├── extra/
├── isolinux/
├── kernels/
├── patches/
├── slackware64/
├── source/
├── testing/
└── usb-and-pxe-installers/

slackware64/ 包含该版本的软件包系列。patches/ 接收稳定版的安全性和正确性更新,source/ 包含相应的构建材料。PACKAGES.TXT 描述软件包,FILELIST.TXT 列出完整的目录树。

启动介质 #

Slackware 最初将软件包划分到软盘大小的磁盘集中,因为下载完整发行版并不现实。如今已不再支持软盘安装,但软件包系列的组织方式仍然保留。

Slackware64 15.0 的 ISO 目录提供 slackware64-15.0-install-dvd.iso,以及 MD5 文件、分离式签名和包含 ISO 清单的文本文件。安装 DVD 包含二进制软件包树,但省略了源代码树,以便镜像适合单层 DVD 介质。镜像树也可以用于 HTTP、FTP、NFS、PXE 或手动挂载的安装源。

安装程序 ISO 是同时包含 BIOS 和 UEFI 启动数据的混合介质。QEMU 可以将它直接连接为虚拟 CD-ROM,因此不需要将其写入物理介质。

从同一个发布目录下载镜像及其签名,导入项目的 GPG-KEY,并在启动前验证签名:

sh
curl -O https://mirrors.slackware.com/slackware/slackware-iso/slackware64-15.0-iso/slackware64-15.0-install-dvd.iso
curl -O https://mirrors.slackware.com/slackware/slackware-iso/slackware64-15.0-iso/slackware64-15.0-install-dvd.iso.asc
curl -O https://mirrors.slackware.com/slackware/slackware-iso/slackware64-15.0/GPG-KEY

gpg --import GPG-KEY
gpg --verify slackware64-15.0-install-dvd.iso.asc \
  slackware64-15.0-install-dvd.iso

软件包系列 #

Slackware64 15.0 将二进制软件包划分为以下系列:

SeriesContents
a基础系统;安装程序需要此系列
ap控制台应用程序及其他非 X 程序
d编译器、调试器、解释器和开发工具
eGNU Emacs
fFAQ、HOWTO 和其他文档
kLinux 内核源代码
kdeKDE Plasma 及其应用程序
l共享库和支持软件
n网络程序和服务
tTeX 排版软件
tclTcl、Tk 及相关工具
xX Window System
xap桌面系列之外的图形应用程序
xfceXfce 桌面环境
y文本模式 BSD 游戏

这些系列是分类,而不是独立解析依赖关系的软件包组。例如,Slackware64 15.0 将 Vim 放在 ap 中,将其共享库之一 libsodium 放在 l 中。因此,按类别删除整个系列可能会破坏另一个系列中保留的程序。

Slackware64 15.0 HOWTO 估算所有系列需要约 16 GB。32 GiB 的虚拟磁盘可以为已安装系统、软件包更新、日志和工作数据留出空间。如果磁盘空间充足,完整安装是最不容易出错的选择。

创建虚拟机 #

通过主机的软件包管理器安装 QEMU 和 OVMF。OVMF 软件包路径因发行版而异;在运行以下命令前,先定位代码映像和变量存储映像。复制变量存储模板,因为 QEMU 必须写入 UEFI 变量,但不能修改软件包提供的模板。

sh
qemu-img create -f qcow2 slackware64-15.0.qcow2 32G
cp /usr/share/OVMF/OVMF_VARS.fd ./OVMF_VARS.fd

qemu-system-x86_64 \
  -machine q35 \
  -m 4G \
  -smp 4 \
  -drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/OVMF_CODE.fd \
  -drive if=pflash,format=raw,file=OVMF_VARS.fd \
  -drive file=slackware64-15.0.qcow2,format=qcow2,if=virtio \
  -drive file=slackware64-15.0-install-dvd.iso,media=cdrom,readonly=on \
  -nic user,model=virtio-net-pci \
  -boot order=d

virtio 磁盘显示为 /dev/vda,虚拟 CD-ROM 通常显示为 /dev/sr0。省略两个 pflash 驱动器会使 QEMU 使用默认的传统 BIOS 启动;BIOS 安装使用 LILO,而不是 ELILO。

对虚拟磁盘进行分区 #

接受默认的安装程序内核,按需选择键盘映射,然后以无密码的 root 身份登录。修改分区表前检查设备:

sh
lsblk
cgdisk /dev/vda

创建包含以下分区的 GPT:

PartitionSizeGPT typePurpose
/dev/vda1512 MiBEF00EFI System Partition
/dev/vda24 GiB8200Swap
/dev/vda3Remaining space8300Linux root filesystem

写入分区表并退出 cgdisk。安装程序稍后会格式化 swap 和 root 分区。Setup 还会检测 EFI System Partition,在需要时将其格式化为 FAT,并将其挂载到 /boot/efi。

运行 Setup #

启动安装程序:

sh
setup

标准安装按以下顺序使用 Setup 菜单:

  1. KEYMAP:如果默认的 US 布局适用,则可以跳过。
  2. ADDSWAP:检测 /dev/vda2,将其格式化为 swap、启用它,并添加到未来的 /etc/fstab 中。
  3. TARGET:选择 /dev/vda3 作为 / 并将其格式化。对于此虚拟机,ext4 是合适的默认选项。
  4. SOURCE:选择 Install from a Slackware CD or DVD 并扫描介质。连接的 ISO 应被检测为 /dev/sr0。
  5. SELECT:选择软件包系列。保留 a;完整安装选择所有系列,或者只删除已知其依赖后果的软件包集。
  6. INSTALL:选择软件包提示模式并复制所选软件包。
  7. CONFIGURE:安装内核并配置引导加载程序、网络、服务、控制台、时钟、时区和 root 密码。

安装模式控制提示方式,而不是依赖关系解析:

ModeBehavior
full安装每个所选系列中的所有软件包
terse使用单行进度显示执行与 full 相同的安装
menu or expert显示按系列划分的软件包清单
newbie逐个提示未标记为必需的软件包
custom or tagpath应用管理员提供的 tagfile

使用 full 或 terse 可以避免跨系列依赖导致的软件包遗漏。在多台机器上复现相同的软件包选择时,tagfile 很有用。

安装软件包期间,Alt+F2 会打开另一个安装程序控制台。随后可以运行 df -hT 等命令监控目标文件系统。按 Alt+F1 返回 Setup。也可以从第二个控制台检查已挂载的安装树,通常位于 /mnt/cdrom 下。

配置 UEFI 启动 #

由于虚拟机通过 OVMF 启动安装程序,Setup 会检测到 UEFI 安装。出现提示时跳过 LILO,安装 ELILO,并允许 Setup 创建 Slackware 固件条目。ELILO 会将文件放置在 /boot/efi/EFI/Slackware 下。

完成其余配置界面并设置 root 密码。退出 Setup,关闭客户机,从 QEMU 命令中移除 ISO 驱动器,然后让磁盘优先启动虚拟机:

sh
qemu-system-x86_64 \
  -machine q35 \
  -m 4G \
  -smp 4 \
  -drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/OVMF_CODE.fd \
  -drive if=pflash,format=raw,file=OVMF_VARS.fd \
  -drive file=slackware64-15.0.qcow2,format=qcow2,if=virtio \
  -nic user,model=virtio-net-pci \
  -boot order=c

首次启动后,在 /etc/slackpkg/mirrors 中选择一个仓库,并应用稳定版补丁:

sh
slackpkg update gpg
slackpkg update
slackpkg upgrade-all

安装后验证 #

使用 adduser 创建非特权账户,并且只授予本地策略要求的管理组访问权限。通过 ls -l /etc/rc.d/ 检查已启用的启动脚本。Slackware 会在对应脚本具有可执行权限时启动服务,因此应通过移除执行权限来禁用未使用的服务,而不是删除软件包提供的文件。

在将磁盘映像视为可复用基础之前,验证已安装系统的启动和网络状态:

sh
findmnt /
swapon --show
ip address
ip route
efibootmgr --verbose
uname -a

efibootmgr 需要访问 UEFI 变量,因此只有当客户机通过带有可写变量存储的 OVMF 启动时,才能报告有用的数据。在复制或创建 qcow2 映像快照前,正常关闭客户机。

评论

在 GitHub 上阅读或评论(发表评论需要登录)