FreeBSD 15 系统挂载本地 ISO 做软件源教程

FreeBSD 15 系统挂载本地 ISO 做软件源教程

📖 概述

本教程演示在 **FreeBSD 15** 上如何将本地 ISO 镜像挂载为 `pkg` 软件源,实现离线或局域网环境下的快速软件包管理。优势包括:

  • 🚀 加速软件包下载
  • 💾 减少对外部网络依赖
  • 🛡️ 在离线环境中进行系统维护
  • 🎯 在局域网内共享软件源
  • 🔄 统一管理内部软件包

🛠️ 系统准备

前置条件

  • ✅ 已安装并正常启动的 FreeBSD 15 系统
  • ✅ root 权限(或能使用 `su` 获取)
  • ✅ 已下载对应版本的 ISO(包括 `base`, `doc`, `src` 等目录)
  • ✅ 至少 10 GB 可用磁盘空间
  • ✅ 初始网络连接(用于系统更新)

系统更新

# 更新 pkg 索引并升级系统
sudo pkg update && sudo pkg upgrade -y

# 安装常用工具
sudo pkg install -y curl wget gnupg2 ca_root_nss

📁 ISO 文件准备

下载 ISO(示例)

# 下载 FreeBSD 15.0 DVD ISO(完整镜像)
wget https://download.freebsd.org/ftp/releases/ISO-IMAGES/15.0/FreeBSD-15.0-RELEASE-amd64-disc1.iso

校验 ISO 完整性

# 官方提供的 SHA256 校验值可在下载页面查看
sha256sum FreeBSD-15.0-RELEASE-amd64-disc1.iso

🎯 挂载 ISO 文件

创建挂载点

sudo mkdir -p /mnt/freebsd-iso
sudo chmod 755 /mnt/freebsd-iso

使用 mdconfig 挂载(只读)

# 将 ISO 关联为 md 设备(这里使用 md0)
sudo mdconfig -a -t vnode -f FreeBSD-15.0-RELEASE-amd64-disc1.iso -u 0

# 挂载为只读 ISO9660 文件系统
sudo mount -t cd9660 /dev/md0 /mnt/freebsd-iso

验证挂载

mount | grep /mnt/freebsd-iso
ls -l /mnt/freebsd-iso

🔧 配置本地 `pkg` 软件源

备份原有仓库配置

sudo cp -r /usr/local/etc/pkg /usr/local/etc/pkg.backup

创建本地仓库配置文件

sudo tee /usr/local/etc/pkg/repos/FreeBSD-15-local.conf > /dev/null <<'EOF'
FreeBSD: {
    url: "pkg+file:///mnt/freebsd-iso/FreeBSD-15.0-RELEASE-amd64",
    enabled: yes,
    signature_type: "none",
    mirror_type: "none"
}
EOF

> **说明**:`url` 必须指向 ISO 中 `packages` 目录所在路径。FreeBSD DVD 镜像在根目录下已经包含 `packages`,所以直接使用根路径即可。

生成仓库元数据(如 ISO 中缺少 `pkg` 包)

# 进入挂载点的根目录
cd /mnt/freebsd-iso
# 创建 pkg 仓库元数据(如果已经有则可跳过)
sudo pkg repo .

清理缓存并强制刷新

sudo pkg clean -y
sudo pkg update -f

验证本地源是否生效

pkg search bash

如果返回的结果中包含 `pkg+file:///mnt/freebsd-iso/…`,说明已成功使用本地 ISO 作为软件源。

🛡️ 防火墙(可选)

如果服务器启用了 `pf`,本地文件系统不受防火墙影响。若要通过网络共享 ISO,请放行相应端口:

# 允许 HTTP/HTTPS(用于 Web 共享)
sudo pfctl -e
sudo echo "pass in on em0 proto tcp from any to any port {80, 443}" | sudo pfctl -f -

🌐 网络共享(可选)

通过 Apache 提供 HTTP 访问

sudo pkg install -y apache24
sudo sysrc apache24_enable=YES
sudo service apache24 start
# 创建符号链接供网页访问
sudo ln -s /mnt/freebsd-iso /usr/local/www/apache24/data/freebsd-iso

通过 NFS 共享(适用于局域网多台机器)

sudo pkg install -y nfs-utils
# 配置导出目录
sudo tee /etc/exports > /dev/null <<'EOF'
/mnt/freebsd-iso 192.168.1.0/24(rw,sync,no_subtree_check)
EOF
# 启动 NFS 服务
sudo sysrc nfs_server_enable=YES
sudo service nfsd start
sudo service mountd start

🔍 测试与验证

检查仓库配置

pkg -vv | grep url

应显示 `url: pkg+file:///mnt/freebsd-iso/FreeBSD-15.0-RELEASE-amd64`。

安装测试软件包

sudo pkg install -y bash
bash --version

🔄 开机自动挂载 ISO

在 `/etc/fstab` 中添加条目(假设使用 md0)

# /etc/fstab 示例行
/dev/md0    /mnt/freebsd-iso    cd9660    ro    0   0

在 `/etc/rc.conf` 中自动加载 mdconfig

sysrc mdconfig_load=YES
sysrc mdconfig_devices="md0"
sysrc mdconfig_md0="-a -t vnode -f /path/to/FreeBSD-15.0-RELEASE-amd64-disc1.iso"

系统启动时会自动创建 md 设备并挂载 ISO。

📊 性能优化

  • **本地缓存**:`pkg cachedir` 指向本地磁盘,避免重复下载。
  • **定期清理**:`sudo pkg clean -y` 删除旧缓存。
  • **磁盘监控**:`df -h /mnt/freebsd-iso` 查看空间使用情况。

🐛 故障排查

1. 挂载失败

# 检查 ISO 是否完整
file FreeBSD-15.0-RELEASE-amd64-disc1.iso
# 查看已加载的 md 设备
mdconfig -l
# 重新挂载示例
sudo mdconfig -d -u 0   # 卸载旧的 md0(如果存在)
sudo mdconfig -a -t vnode -f FreeBSD-15.0-RELEASE-amd64-disc1.iso -u 0
sudo mount -t cd9660 /dev/md0 /mnt/freebsd-iso

2. `pkg` 找不到软件包

# 检查 repo 配置文件路径与内容
cat /usr/local/etc/pkg/repos/FreeBSD-15-local.conf
# 强制刷新缓存
sudo pkg update -f

3. NFS/Apache 访问受限

  • 确认防火墙规则(`pf` 或 `ipfw`)已放行对应端口。
  • 检查导出目录权限 `chmod -R 755 /mnt/freebsd-iso`。

✅ 完成

现在您已经掌握了在 FreeBSD 15 上使用本地 ISO 作为 `pkg` 软件源的完整流程,包括挂载、配置、验证、自动挂载、网络共享以及常见问题排查。祝使用愉快!

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容