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













暂无评论内容