|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. Fedora 35简介
Fedora 35是Red Hat赞助的社区驱动的Linux发行版,以其前沿技术和创新特性而闻名。作为Fedora项目的第35个版本,它带来了许多新功能和改进,包括GNOME 41桌面环境、Linux 5.14内核、以及更新的软件包集合。
Fedora 35不仅适合桌面用户使用,也适合开发者和系统管理员。其强大的定制能力使用户能够根据自己的需求创建个性化的系统安装盘,无论是用于个人使用、企业部署还是特定用途的系统。
2. 镜像制作基础知识
2.1 什么是系统镜像
系统镜像是一个包含完整操作系统安装文件的文件,通常以ISO格式存在。这个镜像文件可以被刻录到DVD或写入USB闪存驱动器,然后用于安装操作系统。Fedora 35的官方镜像包含了基本的系统组件和安装程序。
2.2 镜像类型
Fedora 35提供多种镜像类型,包括:
• 工作站版(Workstation):面向桌面用户,预装GNOME桌面环境。
• 服务器版(Server):面向服务器环境,提供最小化安装和服务器管理工具。
• Everything版:包含所有软件包,适合需要离线安装的用户。
• Spins版:提供不同桌面环境的变体,如KDE Plasma、Xfce等。
• ** Labs版**:针对特定用途的定制版本,如科学计算、设计等。
2.3 准备工作
在开始制作Fedora 35镜像之前,需要准备以下工具和环境:
1. 一台运行Linux系统的计算机(推荐使用Fedora或其他基于RPM的发行版)
2. 足够的磁盘空间(至少20GB可用空间)
3. 网络连接(用于下载软件包和更新)
4. 管理员权限(用于执行安装和配置命令)
安装必要的软件包:
- sudo dnf install -y livemedia-creator spin-kickstarts lorax libguestfs-tools
复制代码
3. 基础配置步骤
3.1 下载官方镜像
首先,我们需要从Fedora官方网站下载基础镜像。可以使用wget命令直接下载:
- wget https://download.fedoraproject.org/pub/fedora/linux/releases/35/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-35-1.2.iso
复制代码
3.2 创建工作目录
创建一个工作目录来存放所有相关文件:
- mkdir -p ~/fedora-customization
- cd ~/fedora-customization
复制代码
3.3 挂载ISO镜像
创建一个挂载点并挂载下载的ISO镜像:
- mkdir mnt
- sudo mount -o loop Fedora-Workstation-Live-x86_64-35-1.2.iso mnt
复制代码
3.4 提取ISO内容
将ISO内容提取到工作目录:
- mkdir iso-extracted
- cp -r mnt/* iso-extracted/
- sudo umount mnt
复制代码
3.5 创建可写目录树
创建一个可写的目录树,用于修改镜像内容:
- mkdir squashfs-root
- sudo unsquashfs -d squashfs-root iso-extracted/LiveOS/squashfs.img
复制代码
3.6 修改镜像内容
现在,我们可以开始修改镜像内容。例如,我们可以添加自定义软件包:
- # 创建一个自定义软件包目录
- mkdir -p custom-packages
- # 下载需要的软件包
- cd custom-packages
- wget https://download.fedoraproject.org/pub/fedora/linux/releases/35/Everything/x86_64/os/Packages/v/vim-enhanced-8.2.3512-1.fc35.x86_64.rpm
- cd ..
- # 将软件包复制到镜像中
- sudo cp custom-packages/* squashfs-root/Packages/
复制代码
3.7 重建软件包数据库
重建软件包数据库以确保系统识别新添加的软件包:
- sudo chroot squashfs-root rpm --rebuilddb
复制代码
3.8 创建新的squashfs镜像
创建新的squashfs镜像:
- sudo mksquashfs squashfs-root iso-extracted/LiveOS/squashfs.img -noappend
复制代码
3.9 创建新的ISO镜像
最后,创建新的ISO镜像:
- mkisofs -o custom-fedora35.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -V "Custom Fedora 35" -T iso-extracted/
复制代码
4. 高级定制技巧
4.1 使用Kickstart自动化安装
Kickstart是一种自动化安装方法,允许您预先定义安装过程中的所有选择。创建一个Kickstart文件(例如custom.ks):
- # Version
- version=DEVEL
- # System authorization information
- auth --enableshadow --passalgo=sha512
- # Use CDROM installation media
- cdrom
- # Use graphical install
- graphical
- # Run the Setup Agent on first boot
- firstboot --enable
- # Keyboard layouts
- keyboard --vckeymap=us --xlayouts='us'
- # System language
- lang en_US.UTF-8
- # Network information
- network --bootproto=dhcp --device=link --activate --hostname=fedora35-custom
- # Root password
- rootpw --iscrypted $6$longhashedpasswordstring
- # System services
- services --enabled="chronyd"
- # System timezone
- timezone America/New_York --isUtc
- # System bootloader configuration
- bootloader --location=mbr --boot-drive=sda
- # Partition clearing information
- clearpart --all --initlabel --drives=sda
- # Disk partitioning information
- part / --fstype="xfs" --ondisk=sda --size=8000
- part /home --fstype="xfs" --ondisk=sda --size=1 --grow
- part swap --fstype="swap" --ondisk=sda --size=2000
- # Custom packages
- %packages
- @base-x
- @core
- @desktop-environment
- @fonts
- @input-methods
- @multimedia
- @workstation-product
- vim-enhanced
- git
- htop
- %end
- # Post-installation script
- %post --log=/root/ks-post.log
- #!/bin/bash
- # Set up custom user
- useradd -m -G wheel customuser
- echo "customuser:password" | chpasswd
- # Install additional software
- dnf install -y terminator neofetch
- # Custom wallpaper
- mkdir -p /usr/share/backgrounds/custom
- wget https://example.com/custom-wallpaper.jpg -O /usr/share/backgrounds/custom/custom-wallpaper.jpg
- %end
复制代码
4.2 使用LiveMedia-Creator创建自定义镜像
LiveMedia-Creator是Fedora提供的工具,用于创建自定义的Live镜像。以下是一个使用示例:
- sudo livemedia-creator \
- --make-iso \
- --iso=Fedora-Workstation-Live-x86_64-35-1.2.iso \
- --ks=custom.ks \
- --resultdir=/var/tmp/live-iso \
- --no-virt \
- --project="Custom Fedora 35" \
- --releasever="35"
复制代码
4.3 添加自定义软件仓库
如果您有自定义的软件仓库,可以将其添加到镜像中。创建一个自定义仓库文件:
- sudo tee squashfs-root/etc/yum.repos.d/custom.repo <<EOF
- [custom-repo]
- name=Custom Repository
- baseurl=http://example.com/repo/fedora35
- enabled=1
- gpgcheck=0
- EOF
复制代码
4.4 预装第三方软件
有些软件可能不在官方仓库中,您可以手动下载并安装:
- # 下载Google Chrome
- sudo wget https://dl.google.com/linux/direct/google-chrome-stable-current_x86_64.rpm -O squashfs-root/tmp/google-chrome.rpm
- # 创建一个安装脚本来在首次启动时安装Chrome
- sudo tee squashfs-root/usr/local/bin/install-chrome.sh <<EOF
- #!/bin/bash
- dnf install -y /tmp/google-chrome.rpm
- rm /tmp/google-chrome.rpm
- rm /usr/local/bin/install-chrome.sh
- EOF
- sudo chmod +x squashfs-root/usr/local/bin/install-chrome.sh
- # 添加到systemd服务以在首次启动时运行
- sudo tee squashfs-root/etc/systemd/system/install-chrome.service <<EOF
- [Unit]
- Description=Install Google Chrome
- After=network.target
- [Service]
- Type=oneshot
- ExecStart=/usr/local/bin/install-chrome.sh
- [Install]
- WantedBy=multi-user.target
- EOF
- sudo ln -s squashfs-root/etc/systemd/system/install-chrome.service squashfs-root/etc/systemd/system/multi-user.target.wants/
复制代码
4.5 自定义桌面环境和主题
您可以通过修改桌面配置文件来自定义桌面环境和主题:
- # 创建自定义主题目录
- sudo mkdir -p squashfs-root/usr/share/themes/custom-theme
- # 复制主题文件
- sudo cp -r /path/to/theme-files/* squashfs-root/usr/share/themes/custom-theme/
- # 设置默认主题
- sudo tee squashfs-root/etc/dconf/db/local.d/00-custom-theme <<EOF
- [org/gnome/desktop/interface]
- gtk-theme='custom-theme'
- icon-theme='custom-icon-theme'
- cursor-theme='custom-cursor-theme'
- font-name='Custom Font 11'
- document-font-name='Custom Document Font 11'
- monospace-font-name='Custom Monospace Font 11'
- EOF
- # 更新dconf数据库
- sudo chroot squashfs-root dconf update
复制代码
4.6 添加自定义启动画面和品牌
要添加自定义启动画面和品牌元素:
- # 创建自定义Plymouth主题目录
- sudo mkdir -p squashfs-root/usr/share/plymouth/themes/custom-splash
- # 复制Plymouth主题文件
- sudo cp /path/to/plymouth-theme/* squashfs-root/usr/share/plymouth/themes/custom-splash/
- # 设置默认Plymouth主题
- sudo chroot squashfs-root plymouth-set-default-theme -R custom-splash
- # 替换GRUB背景
- sudo cp /path/to/grub-background.jpg squashfs_root/boot/grub2/splash.jpg
- # 创建自定义GRUB主题
- sudo mkdir -p squashfs-root/boot/grub2/themes/custom-grub
- sudo cp /path/to/grub-theme-files/* squashfs-root/boot/grub2/themes/custom-grub/
- # 配置GRUB使用自定义主题
- sudo tee -a squashfs-root/etc/default/grub <<EOF
- GRUB_THEME="/boot/grub2/themes/custom-grub/theme.txt"
- EOF
- # 更新GRUB配置
- sudo chroot squashfs-root grub2-mkconfig -o /boot/grub2/grub.cfg
复制代码
5. 使用Lorax构建定制镜像
Lorax是一个用于构建安装镜像的工具,它提供了更高级的定制选项。以下是一个使用Lorax构建定制镜像的示例:
5.1 创建Lorax模板文件
创建一个Lorax模板文件(例如lorax-template.py):
- from pylorax import ArchData
- from pylorax.sysutils import joinpaths
- from pylorax.installer import novirt_install
- # 设置架构
- arch = ArchData.get_arch()
- # 设置基本配置
- installroot = "/var/tmp/installroot"
- outputdir = "/var/tmp/lorax-output"
- repos = [
- {
- "name": "fedora",
- "baseurl": "https://download.fedoraproject.org/pub/fedora/linux/releases/35/Everything/x86_64/os/",
- "enabled": 1
- },
- {
- "name": "updates",
- "baseurl": "https://download.fedoraproject.org/pub/fedora/linux/updates/35/Everything/x86_64/",
- "enabled": 1
- }
- ]
- # 软件包列表
- packages = [
- "@base-x",
- "@core",
- "@desktop-environment",
- "@fonts",
- "@input-methods",
- "@multimedia",
- "@workstation-product",
- "vim-enhanced",
- "git",
- "htop",
- "terminator",
- "neofetch"
- ]
- # 排除的软件包
- exclude_packages = [
- "fedora-workstation-backgrounds"
- ]
- # 执行安装
- novirt_install(
- arch=arch,
- installroot=installroot,
- outputdir=outputdir,
- repos=repos,
- packages=packages,
- exclude_packages=exclude_packages,
- ks="/path/to/kickstart.ks"
- )
复制代码
5.2 运行Lorax
运行Lorax来构建镜像:
- sudo lorax \
- --product="Custom Fedora" \
- --version="35" \
- --release="1" \
- --isfinal \
- --volid="Custom-Fedora-35" \
- --macboot \
- --nomacboot \
- --repo="https://download.fedoraproject.org/pub/fedora/linux/releases/35/Everything/x86_64/os/" \
- --source="https://download.fedoraproject.org/pub/fedora/linux/releases/35/Everything/source/tree/" \
- --variant="Custom" \
- --bugurl="https://example.com/bugs" \
- --tmpfs="/var/tmp/lorax" \
- --logfile="/var/tmp/lorax.log" \
- --set="gpgcheck=0" \
- --add-template="/path/to/lorax-template.py" \
- --resultdir="/var/tmp/lorax-output" \
- "/var/tmp/lorax-work"
复制代码
6. 使用Pungi构建多架构镜像
Pungi是Fedora项目用于构建官方镜像的工具,它支持多架构镜像的构建。以下是一个使用Pungi构建多架构镜像的示例:
6.1 创建Pungi配置文件
创建一个Pungi配置文件(例如pungi.conf):
- [general]
- release_name = Custom Fedora
- release_short = Custom-Fedora
- release_version = 35
- release_is_layered = False
- # 构建选项
- greedy_method = all
- check_deps = False
- resolve_deps = True
- bootable = True
- gather_source = comps
- gather_method = deps
- multilib_method = devel
- sigkeys =
- # 仓库配置
- [repo-fedora]
- name = fedora
- baseurl = https://download.fedoraproject.org/pub/fedora/linux/releases/35/Everything/$basearch/os/
- excludepkgs =
- includepkgs =
- [repo-updates]
- name = updates
- baseurl = https://download.fedoraproject.org/pub/fedora/linux/updates/35/Everything/$basearch/
- excludepkgs =
- includepkgs =
- # 构建阶段
- [createrepo]
- enabled = True
- # createrepo_c
- enabled = True
- # productmd
- enabled = True
- # rpmmd
- enabled = True
- # 镜像阶段
- [image-x86_64]
- format = iso, dvd
- arch = x86_64
- kickstart = /path/to/kickstart.ks
- ksurl =
- repo_from =
- install_tree_from =
- distro = Fedora-35
- variant = Custom
- [image-armhfp]
- format = iso, dvd
- arch = armhfp
- kickstart = /path/to/kickstart.ks
- ksurl =
- repo_from =
- install_tree_from =
- distro = Fedora-35
- variant = Custom
复制代码
6.2 运行Pungi
运行Pungi来构建多架构镜像:
- sudo pungi-koji --config=pungi.conf --target-dir=/var/tmp/pungi-output
复制代码
7. 测试自定义镜像
在完成镜像制作后,您应该测试镜像以确保其正常工作。以下是几种测试方法:
7.1 使用QEMU进行虚拟机测试
- # 安装QEMU
- sudo dnf install -y qemu-kvm
- # 使用QEMU启动镜像
- qemu-system-x86_64 -m 2048 -smp 2 -enable-kvm -hda custom-fedora35.iso
复制代码
7.2 使用VirtualBox进行虚拟机测试
- # 安装VirtualBox
- sudo dnf install -y VirtualBox
- # 使用VBoxManage创建虚拟机并启动
- VBoxManage createvm --name "Fedora 35 Test" --register
- VBoxManage modifyvm "Fedora 35 Test" --memory 2048 --cpus 2 --acpi on --boot1 dvd
- VBoxManage storagectl "Fedora 35 Test" --name "IDE Controller" --add ide
- VBoxManage storageattach "Fedora 35 Test" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium custom-fedora35.iso
- VBoxManage startvm "Fedora 35 Test"
复制代码
7.3 使用USB进行物理机测试
- # 安装Fedora Media Writer
- sudo dnf install -y mediawriter
- # 使用Fedora Media Writer将镜像写入USB
- fedora-media-writer
复制代码
8. 常见问题及解决方案
8.1 镜像无法启动
问题:创建的镜像无法启动,显示引导错误。
解决方案:
1. 检查引导配置是否正确:sudo ls -la iso-extracted/isolinux/
2. 确保引导文件存在且未损坏:sudo file iso-extracted/isolinux/isolinux.bin
3. 重新创建ISO镜像,确保引导参数正确:mkisofs -o custom-fedora35.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -V "Custom Fedora 35" -T iso-extracted/
- sudo ls -la iso-extracted/isolinux/
复制代码- sudo file iso-extracted/isolinux/isolinux.bin
复制代码- mkisofs -o custom-fedora35.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -V "Custom Fedora 35" -T iso-extracted/
复制代码
8.2 软件包依赖问题
问题:在添加自定义软件包时遇到依赖问题。
解决方案:
1. 使用dnf命令检查依赖关系:dnf repoquery --requires <package-name>
2. 在Kickstart文件中添加所有必要的依赖包:%packages
<package-name>
<dependency-1>
<dependency-2>
%end
3. 使用--alldeps选项自动解决依赖关系:dnf install -y --alldeps <package-name>
- dnf repoquery --requires <package-name>
复制代码- %packages
- <package-name>
- <dependency-1>
- <dependency-2>
- %end
复制代码- dnf install -y --alldeps <package-name>
复制代码
8.3 磁盘空间不足
问题:在构建镜像时遇到磁盘空间不足的问题。
解决方案:
1. 清理不需要的文件和缓存:sudo dnf clean all
sudo rm -rf /var/tmp/*
2. 使用--tmpfs选项将构建过程放在内存中:sudo lorax --tmpfs=/var/tmp/lorax [其他选项]
3. - 增加磁盘空间或使用外部存储设备:sudo mount /dev/sdb1 /mnt/external
- sudo lorax --resultdir=/mnt/external/lorax-output [其他选项]
复制代码- sudo dnf clean all
- sudo rm -rf /var/tmp/*
复制代码- sudo lorax --tmpfs=/var/tmp/lorax [其他选项]
复制代码- sudo mount /dev/sdb1 /mnt/external
- sudo lorax --resultdir=/mnt/external/lorax-output [其他选项]
复制代码
8.4 镜像大小超过标准DVD容量
问题:自定义镜像大小超过标准DVD容量(4.7GB)。
解决方案:
1. 移除不必要的软件包:%packages
-<unnecessary-package-1>
-<unnecessary-package-2>
%end
2. 使用压缩选项减小镜像大小:sudo mksquashfs squashfs-root iso-extracted/LiveOS/squashfs.img -noappend -comp xz
3. 创建双层DVD镜像或使用USB作为安装介质:# 创建双层DVD镜像
growisofs -Z /dev/dvd -R -J -V "Custom Fedora 35" -iso-level 3 iso-extracted/
移除不必要的软件包:%packages
-<unnecessary-package-1>
-<unnecessary-package-2>
%end
- %packages
- -<unnecessary-package-1>
- -<unnecessary-package-2>
- %end
复制代码
使用压缩选项减小镜像大小:sudo mksquashfs squashfs-root iso-extracted/LiveOS/squashfs.img -noappend -comp xz
- sudo mksquashfs squashfs-root iso-extracted/LiveOS/squashfs.img -noappend -comp xz
复制代码
创建双层DVD镜像或使用USB作为安装介质:
- # 创建双层DVD镜像
- growisofs -Z /dev/dvd -R -J -V "Custom Fedora 35" -iso-level 3 iso-extracted/
复制代码
9. 实际案例:创建开发者定制版Fedora 35
让我们通过一个实际案例来综合运用前面介绍的技术,创建一个专为开发者定制的Fedora 35镜像。
9.1 创建Kickstart文件
首先,创建一个针对开发者需求的Kickstart文件:
9.2 使用LiveMedia-Creator创建镜像
使用LiveMedia-Creator和Kickstart文件创建自定义镜像:
- sudo livemedia-creator \
- --make-iso \
- --iso=Fedora-Workstation-Live-x86_64-35-1.2.iso \
- --ks=developer-ks.cfg \
- --resultdir=/var/tmp/developer-iso \
- --no-virt \
- --project="Developer Fedora 35" \
- --releasever="35" \
- --volid="Developer-Fedora-35"
复制代码
9.3 添加自定义品牌和主题
为了使镜像更具个性化,我们可以添加自定义品牌和主题:
- # 提取ISO内容
- mkdir -p /mnt/developer-iso
- sudo mount -o loop /var/tmp/developer-iso/Developer-Fedora-35.iso /mnt/developer-iso
- mkdir -p developer-iso-extracted
- cp -r /mnt/developer-iso/* developer-iso-extracted/
- sudo umount /mnt/developer-iso
- # 提取squashfs镜像
- mkdir -p developer-squashfs
- sudo unsquashfs -d developer-squashfs developer-iso-extracted/LiveOS/squashfs.img
- # 添加自定义品牌
- sudo mkdir -p developer-squashfs/usr/share/backgrounds/developer
- sudo cp /path/to/developer-wallpaper.jpg developer-squashfs/usr/share/backgrounds/developer/developer-wallpaper.jpg
- # 创建自定义主题
- sudo mkdir -p developer-squashfs/usr/share/themes/developer-theme
- sudo cp -r /path/to/theme-files/* developer-squashfs/usr/share/themes/developer-theme/
- # 设置默认主题
- sudo tee developer-squashfs/etc/dconf/db/local.d/00-developer-theme <<EOF
- [org/gnome/desktop/background]
- picture-uri='file:///usr/share/backgrounds/developer/developer-wallpaper.jpg'
- primary-color='#000000'
- secondary-color='#000000'
- [org/gnome/desktop/interface]
- gtk-theme='Adwaita-dark'
- icon-theme='Adwaita'
- font-name='Cantarell 11'
- document-font-name='Cantarell 11'
- monospace-font-name='Monospace 11'
- EOF
- # 更新dconf数据库
- sudo chroot developer-squashfs dconf update
- # 添加自定义Plymouth主题
- sudo mkdir -p developer-squashfs/usr/share/plymouth/themes/developer-splash
- sudo cp /path/to/plymouth-theme/* developer-squashfs/usr/share/plymouth/themes/developer-splash/
- # 设置默认Plymouth主题
- sudo chroot developer-squashfs plymouth-set-default-theme -R developer-splash
- # 重建squashfs镜像
- sudo mksquashfs developer-squashfs developer-iso-extracted/LiveOS/squashfs.img -noappend
- # 创建最终的ISO镜像
- mkisofs -o Developer-Fedora-35-Branded.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -V "Developer Fedora 35" -T developer-iso-extracted/
复制代码
9.4 测试镜像
最后,让我们测试创建的镜像:
- # 使用QEMU测试
- qemu-system-x86_64 -m 4096 -smp 4 -enable-kvm -hda Developer-Fedora-35-Branded.iso
- # 或者使用VirtualBox
- VBoxManage createvm --name "Developer Fedora 35 Test" --register
- VBoxManage modifyvm "Developer Fedora 35 Test" --memory 4096 --cpus 4 --acpi on --boot1 dvd
- VBoxManage storagectl "Developer Fedora 35 Test" --name "IDE Controller" --add ide
- VBoxManage storageattach "Developer Fedora 35 Test" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium Developer-Fedora-35-Branded.iso
- VBoxManage startvm "Developer Fedora 35 Test"
复制代码
10. 总结
通过本指南,我们详细介绍了如何制作自定义的Fedora 35镜像,从基础配置到高级定制技巧。我们学习了:
1. 镜像制作的基础知识和准备工作
2. 如何提取和修改ISO镜像内容
3. 使用Kickstart自动化安装过程
4. 使用LiveMedia-Creator创建自定义镜像
5. 使用Lorax和Pungi构建更复杂的镜像
6. 如何添加自定义软件、主题和品牌
7. 测试镜像的方法和常见问题解决方案
这些技术可以帮助您创建完全个性化的Fedora 35系统安装盘,无论是用于个人使用、企业部署还是特定用途的系统。通过自定义镜像,您可以预装必要的软件、配置系统设置、添加品牌元素,从而节省安装和配置时间,提高效率。
随着您对Fedora镜像制作技术的掌握,您可以进一步探索更高级的定制选项,如创建多架构镜像、集成特定领域的工具集,或者构建用于特定部署场景的专用镜像。Fedora的灵活性和强大功能使其成为定制化系统的理想选择。
希望本指南能帮助您成功创建符合您需求的Fedora 35自定义镜像,并在您的Linux旅程中提供有价值的参考。 |
|