活动公告

系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

Fedora 35镜像制作完全指南 从基础配置到高级定制技巧详解 助你轻松打造个性化系统安装盘

SunJu_FaceMall

3万

主题

3038

科技点

3万

积分

执行版主

碾压王

积分
32876

塔罗立华奏

执行版主 发表于 2025-9-28 14:50:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

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. 管理员权限(用于执行安装和配置命令)

安装必要的软件包:
  1. sudo dnf install -y livemedia-creator spin-kickstarts lorax libguestfs-tools
复制代码

3. 基础配置步骤

3.1 下载官方镜像

首先,我们需要从Fedora官方网站下载基础镜像。可以使用wget命令直接下载:
  1. 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 创建工作目录

创建一个工作目录来存放所有相关文件:
  1. mkdir -p ~/fedora-customization
  2. cd ~/fedora-customization
复制代码

3.3 挂载ISO镜像

创建一个挂载点并挂载下载的ISO镜像:
  1. mkdir mnt
  2. sudo mount -o loop Fedora-Workstation-Live-x86_64-35-1.2.iso mnt
复制代码

3.4 提取ISO内容

将ISO内容提取到工作目录:
  1. mkdir iso-extracted
  2. cp -r mnt/* iso-extracted/
  3. sudo umount mnt
复制代码

3.5 创建可写目录树

创建一个可写的目录树,用于修改镜像内容:
  1. mkdir squashfs-root
  2. sudo unsquashfs -d squashfs-root iso-extracted/LiveOS/squashfs.img
复制代码

3.6 修改镜像内容

现在,我们可以开始修改镜像内容。例如,我们可以添加自定义软件包:
  1. # 创建一个自定义软件包目录
  2. mkdir -p custom-packages
  3. # 下载需要的软件包
  4. cd custom-packages
  5. 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
  6. cd ..
  7. # 将软件包复制到镜像中
  8. sudo cp custom-packages/* squashfs-root/Packages/
复制代码

3.7 重建软件包数据库

重建软件包数据库以确保系统识别新添加的软件包:
  1. sudo chroot squashfs-root rpm --rebuilddb
复制代码

3.8 创建新的squashfs镜像

创建新的squashfs镜像:
  1. sudo mksquashfs squashfs-root iso-extracted/LiveOS/squashfs.img -noappend
复制代码

3.9 创建新的ISO镜像

最后,创建新的ISO镜像:
  1. 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):
  1. # Version
  2. version=DEVEL
  3. # System authorization information
  4. auth --enableshadow --passalgo=sha512
  5. # Use CDROM installation media
  6. cdrom
  7. # Use graphical install
  8. graphical
  9. # Run the Setup Agent on first boot
  10. firstboot --enable
  11. # Keyboard layouts
  12. keyboard --vckeymap=us --xlayouts='us'
  13. # System language
  14. lang en_US.UTF-8
  15. # Network information
  16. network  --bootproto=dhcp --device=link --activate --hostname=fedora35-custom
  17. # Root password
  18. rootpw --iscrypted $6$longhashedpasswordstring
  19. # System services
  20. services --enabled="chronyd"
  21. # System timezone
  22. timezone America/New_York --isUtc
  23. # System bootloader configuration
  24. bootloader --location=mbr --boot-drive=sda
  25. # Partition clearing information
  26. clearpart --all --initlabel --drives=sda
  27. # Disk partitioning information
  28. part / --fstype="xfs" --ondisk=sda --size=8000
  29. part /home --fstype="xfs" --ondisk=sda --size=1 --grow
  30. part swap --fstype="swap" --ondisk=sda --size=2000
  31. # Custom packages
  32. %packages
  33. @base-x
  34. @core
  35. @desktop-environment
  36. @fonts
  37. @input-methods
  38. @multimedia
  39. @workstation-product
  40. vim-enhanced
  41. git
  42. htop
  43. %end
  44. # Post-installation script
  45. %post --log=/root/ks-post.log
  46. #!/bin/bash
  47. # Set up custom user
  48. useradd -m -G wheel customuser
  49. echo "customuser:password" | chpasswd
  50. # Install additional software
  51. dnf install -y terminator neofetch
  52. # Custom wallpaper
  53. mkdir -p /usr/share/backgrounds/custom
  54. wget https://example.com/custom-wallpaper.jpg -O /usr/share/backgrounds/custom/custom-wallpaper.jpg
  55. %end
复制代码

4.2 使用LiveMedia-Creator创建自定义镜像

LiveMedia-Creator是Fedora提供的工具,用于创建自定义的Live镜像。以下是一个使用示例:
  1. sudo livemedia-creator \
  2. --make-iso \
  3. --iso=Fedora-Workstation-Live-x86_64-35-1.2.iso \
  4. --ks=custom.ks \
  5. --resultdir=/var/tmp/live-iso \
  6. --no-virt \
  7. --project="Custom Fedora 35" \
  8. --releasever="35"
复制代码

4.3 添加自定义软件仓库

如果您有自定义的软件仓库,可以将其添加到镜像中。创建一个自定义仓库文件:
  1. sudo tee squashfs-root/etc/yum.repos.d/custom.repo <<EOF
  2. [custom-repo]
  3. name=Custom Repository
  4. baseurl=http://example.com/repo/fedora35
  5. enabled=1
  6. gpgcheck=0
  7. EOF
复制代码

4.4 预装第三方软件

有些软件可能不在官方仓库中,您可以手动下载并安装:
  1. # 下载Google Chrome
  2. sudo wget https://dl.google.com/linux/direct/google-chrome-stable-current_x86_64.rpm -O squashfs-root/tmp/google-chrome.rpm
  3. # 创建一个安装脚本来在首次启动时安装Chrome
  4. sudo tee squashfs-root/usr/local/bin/install-chrome.sh <<EOF
  5. #!/bin/bash
  6. dnf install -y /tmp/google-chrome.rpm
  7. rm /tmp/google-chrome.rpm
  8. rm /usr/local/bin/install-chrome.sh
  9. EOF
  10. sudo chmod +x squashfs-root/usr/local/bin/install-chrome.sh
  11. # 添加到systemd服务以在首次启动时运行
  12. sudo tee squashfs-root/etc/systemd/system/install-chrome.service <<EOF
  13. [Unit]
  14. Description=Install Google Chrome
  15. After=network.target
  16. [Service]
  17. Type=oneshot
  18. ExecStart=/usr/local/bin/install-chrome.sh
  19. [Install]
  20. WantedBy=multi-user.target
  21. EOF
  22. sudo ln -s squashfs-root/etc/systemd/system/install-chrome.service squashfs-root/etc/systemd/system/multi-user.target.wants/
复制代码

4.5 自定义桌面环境和主题

您可以通过修改桌面配置文件来自定义桌面环境和主题:
  1. # 创建自定义主题目录
  2. sudo mkdir -p squashfs-root/usr/share/themes/custom-theme
  3. # 复制主题文件
  4. sudo cp -r /path/to/theme-files/* squashfs-root/usr/share/themes/custom-theme/
  5. # 设置默认主题
  6. sudo tee squashfs-root/etc/dconf/db/local.d/00-custom-theme <<EOF
  7. [org/gnome/desktop/interface]
  8. gtk-theme='custom-theme'
  9. icon-theme='custom-icon-theme'
  10. cursor-theme='custom-cursor-theme'
  11. font-name='Custom Font 11'
  12. document-font-name='Custom Document Font 11'
  13. monospace-font-name='Custom Monospace Font 11'
  14. EOF
  15. # 更新dconf数据库
  16. sudo chroot squashfs-root dconf update
复制代码

4.6 添加自定义启动画面和品牌

要添加自定义启动画面和品牌元素:
  1. # 创建自定义Plymouth主题目录
  2. sudo mkdir -p squashfs-root/usr/share/plymouth/themes/custom-splash
  3. # 复制Plymouth主题文件
  4. sudo cp /path/to/plymouth-theme/* squashfs-root/usr/share/plymouth/themes/custom-splash/
  5. # 设置默认Plymouth主题
  6. sudo chroot squashfs-root plymouth-set-default-theme -R custom-splash
  7. # 替换GRUB背景
  8. sudo cp /path/to/grub-background.jpg squashfs_root/boot/grub2/splash.jpg
  9. # 创建自定义GRUB主题
  10. sudo mkdir -p squashfs-root/boot/grub2/themes/custom-grub
  11. sudo cp /path/to/grub-theme-files/* squashfs-root/boot/grub2/themes/custom-grub/
  12. # 配置GRUB使用自定义主题
  13. sudo tee -a squashfs-root/etc/default/grub <<EOF
  14. GRUB_THEME="/boot/grub2/themes/custom-grub/theme.txt"
  15. EOF
  16. # 更新GRUB配置
  17. sudo chroot squashfs-root grub2-mkconfig -o /boot/grub2/grub.cfg
复制代码

5. 使用Lorax构建定制镜像

Lorax是一个用于构建安装镜像的工具,它提供了更高级的定制选项。以下是一个使用Lorax构建定制镜像的示例:

5.1 创建Lorax模板文件

创建一个Lorax模板文件(例如lorax-template.py):
  1. from pylorax import ArchData
  2. from pylorax.sysutils import joinpaths
  3. from pylorax.installer import novirt_install
  4. # 设置架构
  5. arch = ArchData.get_arch()
  6. # 设置基本配置
  7. installroot = "/var/tmp/installroot"
  8. outputdir = "/var/tmp/lorax-output"
  9. repos = [
  10.     {
  11.         "name": "fedora",
  12.         "baseurl": "https://download.fedoraproject.org/pub/fedora/linux/releases/35/Everything/x86_64/os/",
  13.         "enabled": 1
  14.     },
  15.     {
  16.         "name": "updates",
  17.         "baseurl": "https://download.fedoraproject.org/pub/fedora/linux/updates/35/Everything/x86_64/",
  18.         "enabled": 1
  19.     }
  20. ]
  21. # 软件包列表
  22. packages = [
  23.     "@base-x",
  24.     "@core",
  25.     "@desktop-environment",
  26.     "@fonts",
  27.     "@input-methods",
  28.     "@multimedia",
  29.     "@workstation-product",
  30.     "vim-enhanced",
  31.     "git",
  32.     "htop",
  33.     "terminator",
  34.     "neofetch"
  35. ]
  36. # 排除的软件包
  37. exclude_packages = [
  38.     "fedora-workstation-backgrounds"
  39. ]
  40. # 执行安装
  41. novirt_install(
  42.     arch=arch,
  43.     installroot=installroot,
  44.     outputdir=outputdir,
  45.     repos=repos,
  46.     packages=packages,
  47.     exclude_packages=exclude_packages,
  48.     ks="/path/to/kickstart.ks"
  49. )
复制代码

5.2 运行Lorax

运行Lorax来构建镜像:
  1. sudo lorax \
  2.     --product="Custom Fedora" \
  3.     --version="35" \
  4.     --release="1" \
  5.     --isfinal \
  6.     --volid="Custom-Fedora-35" \
  7.     --macboot \
  8.     --nomacboot \
  9.     --repo="https://download.fedoraproject.org/pub/fedora/linux/releases/35/Everything/x86_64/os/" \
  10.     --source="https://download.fedoraproject.org/pub/fedora/linux/releases/35/Everything/source/tree/" \
  11.     --variant="Custom" \
  12.     --bugurl="https://example.com/bugs" \
  13.     --tmpfs="/var/tmp/lorax" \
  14.     --logfile="/var/tmp/lorax.log" \
  15.     --set="gpgcheck=0" \
  16.     --add-template="/path/to/lorax-template.py" \
  17.     --resultdir="/var/tmp/lorax-output" \
  18.     "/var/tmp/lorax-work"
复制代码

6. 使用Pungi构建多架构镜像

Pungi是Fedora项目用于构建官方镜像的工具,它支持多架构镜像的构建。以下是一个使用Pungi构建多架构镜像的示例:

6.1 创建Pungi配置文件

创建一个Pungi配置文件(例如pungi.conf):
  1. [general]
  2. release_name = Custom Fedora
  3. release_short = Custom-Fedora
  4. release_version = 35
  5. release_is_layered = False
  6. # 构建选项
  7. greedy_method = all
  8. check_deps = False
  9. resolve_deps = True
  10. bootable = True
  11. gather_source = comps
  12. gather_method = deps
  13. multilib_method = devel
  14. sigkeys =
  15. # 仓库配置
  16. [repo-fedora]
  17. name = fedora
  18. baseurl = https://download.fedoraproject.org/pub/fedora/linux/releases/35/Everything/$basearch/os/
  19. excludepkgs =
  20. includepkgs =
  21. [repo-updates]
  22. name = updates
  23. baseurl = https://download.fedoraproject.org/pub/fedora/linux/updates/35/Everything/$basearch/
  24. excludepkgs =
  25. includepkgs =
  26. # 构建阶段
  27. [createrepo]
  28. enabled = True
  29. # createrepo_c
  30. enabled = True
  31. # productmd
  32. enabled = True
  33. # rpmmd
  34. enabled = True
  35. # 镜像阶段
  36. [image-x86_64]
  37. format = iso, dvd
  38. arch = x86_64
  39. kickstart = /path/to/kickstart.ks
  40. ksurl =
  41. repo_from =
  42. install_tree_from =
  43. distro = Fedora-35
  44. variant = Custom
  45. [image-armhfp]
  46. format = iso, dvd
  47. arch = armhfp
  48. kickstart = /path/to/kickstart.ks
  49. ksurl =
  50. repo_from =
  51. install_tree_from =
  52. distro = Fedora-35
  53. variant = Custom
复制代码

6.2 运行Pungi

运行Pungi来构建多架构镜像:
  1. sudo pungi-koji --config=pungi.conf --target-dir=/var/tmp/pungi-output
复制代码

7. 测试自定义镜像

在完成镜像制作后,您应该测试镜像以确保其正常工作。以下是几种测试方法:

7.1 使用QEMU进行虚拟机测试
  1. # 安装QEMU
  2. sudo dnf install -y qemu-kvm
  3. # 使用QEMU启动镜像
  4. qemu-system-x86_64 -m 2048 -smp 2 -enable-kvm -hda custom-fedora35.iso
复制代码

7.2 使用VirtualBox进行虚拟机测试
  1. # 安装VirtualBox
  2. sudo dnf install -y VirtualBox
  3. # 使用VBoxManage创建虚拟机并启动
  4. VBoxManage createvm --name "Fedora 35 Test" --register
  5. VBoxManage modifyvm "Fedora 35 Test" --memory 2048 --cpus 2 --acpi on --boot1 dvd
  6. VBoxManage storagectl "Fedora 35 Test" --name "IDE Controller" --add ide
  7. VBoxManage storageattach "Fedora 35 Test" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium custom-fedora35.iso
  8. VBoxManage startvm "Fedora 35 Test"
复制代码

7.3 使用USB进行物理机测试
  1. # 安装Fedora Media Writer
  2. sudo dnf install -y mediawriter
  3. # 使用Fedora Media Writer将镜像写入USB
  4. 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/
  1. sudo ls -la iso-extracted/isolinux/
复制代码
  1. sudo file iso-extracted/isolinux/isolinux.bin
复制代码
  1. 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>
  1. dnf repoquery --requires <package-name>
复制代码
  1. %packages
  2. <package-name>
  3. <dependency-1>
  4. <dependency-2>
  5. %end
复制代码
  1. 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.
  1. 增加磁盘空间或使用外部存储设备:sudo mount /dev/sdb1 /mnt/external
  2. sudo lorax --resultdir=/mnt/external/lorax-output [其他选项]
复制代码
  1. sudo dnf clean all
  2. sudo rm -rf /var/tmp/*
复制代码
  1. sudo lorax --tmpfs=/var/tmp/lorax [其他选项]
复制代码
  1. sudo mount /dev/sdb1 /mnt/external
  2. 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
  1. %packages
  2. -<unnecessary-package-1>
  3. -<unnecessary-package-2>
  4. %end
复制代码

使用压缩选项减小镜像大小:sudo mksquashfs squashfs-root iso-extracted/LiveOS/squashfs.img -noappend -comp xz
  1. sudo mksquashfs squashfs-root iso-extracted/LiveOS/squashfs.img -noappend -comp xz
复制代码

创建双层DVD镜像或使用USB作为安装介质:
  1. # 创建双层DVD镜像
  2. growisofs -Z /dev/dvd -R -J -V "Custom Fedora 35" -iso-level 3 iso-extracted/
复制代码

9. 实际案例:创建开发者定制版Fedora 35

让我们通过一个实际案例来综合运用前面介绍的技术,创建一个专为开发者定制的Fedora 35镜像。

9.1 创建Kickstart文件

首先,创建一个针对开发者需求的Kickstart文件:
  1. cat > developer-ks.cfg <<EOF
  2. # Version
  3. version=DEVEL
  4. # System authorization information
  5. auth --enableshadow --passalgo=sha512
  6. # Use CDROM installation media
  7. cdrom
  8. # Use graphical install
  9. graphical
  10. # Run the Setup Agent on first boot
  11. firstboot --enable
  12. # Keyboard layouts
  13. keyboard --vckeymap=us --xlayouts='us'
  14. # System language
  15. lang en_US.UTF-8
  16. # Network information
  17. network  --bootproto=dhcp --device=link --activate --hostname=developer-fedora
  18. # Root password
  19. rootpw --iscrypted $6$longhashedpasswordstring
  20. # System services
  21. services --enabled="chronyd"
  22. # System timezone
  23. timezone America/New_York --isUtc
  24. # System bootloader configuration
  25. bootloader --location=mbr --boot-drive=sda
  26. # Partition clearing information
  27. clearpart --all --initlabel --drives=sda
  28. # Disk partitioning information
  29. part / --fstype="xfs" --ondisk=sda --size=10240
  30. part /home --fstype="xfs" --ondisk=sda --size=1 --grow
  31. part swap --fstype="swap" --ondisk=sda --size=4096
  32. # Developer packages
  33. %packages
  34. @base-x
  35. @core
  36. @development-tools
  37. @development-libs
  38. @python-science
  39. @web-server
  40. @databases
  41. @container-management
  42. vim-enhanced
  43. git
  44. tmux
  45. zsh
  46. docker
  47. podman
  48. flatpak
  49. python3-pip
  50. nodejs
  51. golang
  52. rust
  53. java-latest-openjdk
  54. maven
  55. intellij-idea-community
  56. visual-studio-code
  57. postman
  58. dbeaver-ce
  59. mysql-workbench-community
  60. virtualbox
  61. wireshark
  62. %end
  63. # Post-installation script
  64. %post --log=/root/ks-post.log
  65. #!/bin/bash
  66. # Set up developer user
  67. useradd -m -G wheel,docker,vboxusers developer
  68. echo "developer:developer" | chpasswd
  69. # Install Oh My Zsh
  70. sudo -u developer sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
  71. # Set up Git configuration
  72. sudo -u developer git config --global user.name "Developer"
  73. sudo -u developer git config --global user.email "developer@example.com"
  74. # Install VS Code extensions
  75. sudo -u developer code --install-extension ms-python.python
  76. sudo -u developer code --install-extension ms-vscode.go
  77. sudo -u developer code --install-extension rust-lang.rust
  78. sudo -u developer code --install-extension ms-vscode.vscode-typescript-next
  79. sudo -u developer code --install-extension ms-azuretools.vscode-docker
  80. # Install Python packages
  81. sudo -u developer pip3 install --user numpy pandas matplotlib jupyter ipython
  82. # Install Node.js packages
  83. sudo -u developer npm install -g @angular/cli typescript ts-node
  84. # Set up Docker registry mirror
  85. mkdir -p /etc/docker
  86. cat > /etc/docker/daemon.json <<EOD
  87. {
  88.   "registry-mirrors": ["https://mirror.gcr.io"]
  89. }
  90. EOD
  91. # Enable and start Docker
  92. systemctl enable --now docker
  93. # Create development projects directory
  94. sudo -u developer mkdir -p /home/developer/projects
  95. # Set up custom terminal profile
  96. mkdir -p /etc/skel/.config/xfce4/terminal
  97. cat > /etc/skel/.config/xfce4/terminal/terminalrc <<EOD
  98. [Configuration]
  99. FontName=Monospace 12
  100. ColorForeground=#ffffff
  101. ColorBackground=#2d2d2d
  102. ColorPalette1=#2d2d2d
  103. ColorPalette5=#f92672
  104. ColorBoldUseDefault=FALSE
  105. EOD
  106. %end
  107. EOF
复制代码

9.2 使用LiveMedia-Creator创建镜像

使用LiveMedia-Creator和Kickstart文件创建自定义镜像:
  1. sudo livemedia-creator \
  2. --make-iso \
  3. --iso=Fedora-Workstation-Live-x86_64-35-1.2.iso \
  4. --ks=developer-ks.cfg \
  5. --resultdir=/var/tmp/developer-iso \
  6. --no-virt \
  7. --project="Developer Fedora 35" \
  8. --releasever="35" \
  9. --volid="Developer-Fedora-35"
复制代码

9.3 添加自定义品牌和主题

为了使镜像更具个性化,我们可以添加自定义品牌和主题:
  1. # 提取ISO内容
  2. mkdir -p /mnt/developer-iso
  3. sudo mount -o loop /var/tmp/developer-iso/Developer-Fedora-35.iso /mnt/developer-iso
  4. mkdir -p developer-iso-extracted
  5. cp -r /mnt/developer-iso/* developer-iso-extracted/
  6. sudo umount /mnt/developer-iso
  7. # 提取squashfs镜像
  8. mkdir -p developer-squashfs
  9. sudo unsquashfs -d developer-squashfs developer-iso-extracted/LiveOS/squashfs.img
  10. # 添加自定义品牌
  11. sudo mkdir -p developer-squashfs/usr/share/backgrounds/developer
  12. sudo cp /path/to/developer-wallpaper.jpg developer-squashfs/usr/share/backgrounds/developer/developer-wallpaper.jpg
  13. # 创建自定义主题
  14. sudo mkdir -p developer-squashfs/usr/share/themes/developer-theme
  15. sudo cp -r /path/to/theme-files/* developer-squashfs/usr/share/themes/developer-theme/
  16. # 设置默认主题
  17. sudo tee developer-squashfs/etc/dconf/db/local.d/00-developer-theme <<EOF
  18. [org/gnome/desktop/background]
  19. picture-uri='file:///usr/share/backgrounds/developer/developer-wallpaper.jpg'
  20. primary-color='#000000'
  21. secondary-color='#000000'
  22. [org/gnome/desktop/interface]
  23. gtk-theme='Adwaita-dark'
  24. icon-theme='Adwaita'
  25. font-name='Cantarell 11'
  26. document-font-name='Cantarell 11'
  27. monospace-font-name='Monospace 11'
  28. EOF
  29. # 更新dconf数据库
  30. sudo chroot developer-squashfs dconf update
  31. # 添加自定义Plymouth主题
  32. sudo mkdir -p developer-squashfs/usr/share/plymouth/themes/developer-splash
  33. sudo cp /path/to/plymouth-theme/* developer-squashfs/usr/share/plymouth/themes/developer-splash/
  34. # 设置默认Plymouth主题
  35. sudo chroot developer-squashfs plymouth-set-default-theme -R developer-splash
  36. # 重建squashfs镜像
  37. sudo mksquashfs developer-squashfs developer-iso-extracted/LiveOS/squashfs.img -noappend
  38. # 创建最终的ISO镜像
  39. 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 测试镜像

最后,让我们测试创建的镜像:
  1. # 使用QEMU测试
  2. qemu-system-x86_64 -m 4096 -smp 4 -enable-kvm -hda Developer-Fedora-35-Branded.iso
  3. # 或者使用VirtualBox
  4. VBoxManage createvm --name "Developer Fedora 35 Test" --register
  5. VBoxManage modifyvm "Developer Fedora 35 Test" --memory 4096 --cpus 4 --acpi on --boot1 dvd
  6. VBoxManage storagectl "Developer Fedora 35 Test" --name "IDE Controller" --add ide
  7. VBoxManage storageattach "Developer Fedora 35 Test" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium Developer-Fedora-35-Branded.iso
  8. 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旅程中提供有价值的参考。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则