活动公告

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

Rocky Linux源码安装实战教程 轻松构建个性化Linux系统环境

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-17 17:30:05 | 显示全部楼层 |阅读模式

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

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

x
引言

Rocky Linux是一个社区支持的企业级操作系统,作为CentOS的替代品,由CentOS创始人Gregory Kurtzer领导开发,旨在与Red Hat Enterprise Linux (RHEL)保持二进制兼容。通过源码安装Rocky Linux,用户可以更深入地了解系统的工作原理,同时获得更高的自定义性和优化空间。

源码安装相比二进制安装有以下优势:

• 完全控制系统的组件和功能
• 可以针对特定硬件进行优化
• 移除不必要的组件,提高系统效率
• 学习Linux系统内部工作原理的绝佳机会

本教程将详细介绍如何从源码安装Rocky Linux,并构建一个个性化的Linux系统环境。

准备工作

在开始源码安装之前,我们需要确保满足以下条件:

系统要求

• CPU:64位处理器(x86_64或ARM64)
• 内存:至少4GB RAM(推荐8GB或更多)
• 存储空间:至少20GB可用空间(推荐50GB或更多)
• 网络:稳定的互联网连接(用于下载源码和依赖包)

必要工具

你需要一个现有的Linux系统来编译Rocky Linux。可以使用任何主流的Linux发行版,如Ubuntu、Fedora或已有的Rocky Linux系统。

首先,安装必要的编译工具和依赖:
  1. # 对于基于RHEL的系统(如CentOS、Fedora)
  2. sudo dnf groupinstall "Development Tools"
  3. sudo dnf install wget curl git ncurses-devel openssl-devel bc bison flex elfutils-libelf-devel
  4. # 对于基于Debian的系统(如Ubuntu)
  5. sudo apt update
  6. sudo apt install build-essential wget curl git libncurses-dev libssl-dev bc bison flex libelf-dev
复制代码

创建工作目录

创建一个专门的工作目录来存放源码和编译文件:
  1. mkdir -p ~/rocky-linux-build
  2. cd ~/rocky-linux-build
复制代码

获取Rocky Linux源码

Rocky Linux的源码可以从其官方Git仓库获取。以下是获取源码的步骤:

克隆Rocky Linux源码仓库
  1. # 克隆主要的Rocky Linux源码仓库
  2. git clone https://github.com/rocky-linux/rocky.git
  3. # 如果需要特定的版本,可以检出对应的标签
  4. cd rocky
  5. git checkout -b R8 origin/R8 # 对于Rocky Linux 8
  6. # 或者
  7. git checkout -b R9 origin/R9 # 对于Rocky Linux 9
复制代码

获取必要的SRPM包

Rocky Linux使用SRPM(Source RPM)包来分发源码。我们需要获取这些SRPM包并解压它们:
  1. # 创建存放SRPM的目录
  2. mkdir -p ~/rocky-linux-build/srpms
  3. cd ~/rocky-linux-build/srpms
  4. # 使用dnf下载SRPM包
  5. sudo dnf install yum-utils
  6. yumdownloader --source rocky-release
  7. # 解压SRPM包
  8. rpm -ivh rocky-release-*.src.rpm
复制代码

编译环境的配置

在开始编译之前,我们需要配置编译环境。这包括设置编译选项、安装必要的依赖和准备构建工具链。

安装mock构建工具

Mock是一个用于构建RPM包的工具,它可以在隔离的环境中构建软件包,确保构建过程的纯净和一致性。
  1. # 安装mock
  2. sudo dnf install mock
  3. # 将用户添加到mock组
  4. sudo usermod -a -G mock $USER
  5. # 重新登录以使组更改生效
  6. newgrp mock
复制代码

配置mock

创建一个自定义的mock配置文件:
  1. # 创建自定义mock配置
  2. cp /etc/mock/rocky-8-x86_64.cfg ~/rocky-linux-build/custom-rocky.cfg
  3. # 编辑配置文件
  4. nano ~/rocky-linux-build/custom-rocky.cfg
复制代码

在配置文件中,你可以根据需要调整各种选项,例如:
  1. config_opts['root'] = 'rocky-8-x86_64'
  2. config_opts['target_arch'] = 'x86_64'
  3. config_opts['legal_host_arches'] = ('x86_64',)
  4. config_opts['chroot_setup_cmd'] = 'install @buildsys-build'
  5. config_opts['dist'] = 'el8'  # 对于Rocky Linux 8
  6. config_opts['releasever'] = '8'
  7. config_opts['package_manager'] = 'dnf'
  8. config_opts['use_nspawn'] = False
复制代码

准备构建根文件系统

使用mock初始化构建环境:
  1. # 初始化构建环境
  2. mock -r ~/rocky-linux-build/custom-rocky.cfg init
  3. # 更新构建环境中的软件包
  4. mock -r ~/rocky-linux-build/custom-rocky.cfg update
复制代码

源码编译过程详解

现在我们开始编译Rocky Linux的源码。这个过程可能需要一些时间,具体取决于你的系统性能。

编译核心系统包

首先,我们需要编译核心系统包,这些包构成了Rocky Linux的基础。
  1. # 创建构建目录
  2. mkdir -p ~/rocky-linux-build/rpmbuild/{SOURCES,SPECS,SRPMS,RPMS,BUILD,BUILDROOT}
  3. # 进入源码目录
  4. cd ~/rocky-linux-build/rocky
  5. # 开始编译核心包
  6. mock -r ~/rocky-linux-build/custom-rocky.cfg --rebuild rocky-release-*.src.rpm
复制代码

编译内核

Linux内核是系统的核心,我们需要单独编译它:
  1. # 获取内核源码
  2. cd ~/rocky-linux-build
  3. git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
  4. cd linux
  5. # 检出稳定版本
  6. git checkout linux-5.15.y # 或者其他稳定版本
  7. # 配置内核
  8. make mrproper
  9. cp /boot/config-$(uname -r) .config  # 使用当前内核配置作为起点
  10. make menuconfig  # 可选:手动调整内核选项
  11. # 编译内核
  12. make -j$(nproc)  # 使用所有可用的CPU核心进行编译
  13. # 安装内核模块
  14. sudo make modules_install
  15. # 安装内核
  16. sudo make install
复制代码

编译系统工具和库

接下来,我们需要编译系统工具和库:
  1. # 创建一个脚本来批量编译包
  2. cat > ~/rocky-linux-build/build-packages.sh << 'EOF'
  3. #!/bin/bash
  4. # 定义要编译的包列表
  5. PACKAGES=(
  6.     "filesystem"
  7.     "setup"
  8.     "glibc"
  9.     "zlib"
  10.     "openssl"
  11.     "systemd"
  12.     "bash"
  13.     "coreutils"
  14.     "rpm"
  15.     "dnf"
  16. )
  17. # 创建日志目录
  18. mkdir -p ~/rocky-linux-build/logs
  19. # 编译每个包
  20. for package in "${PACKAGES[@]}"; do
  21.     echo "Building $package..."
  22.     mock -r ~/rocky-linux-build/custom-rocky.cfg --rebuild $package-*.src.rpm > ~/rocky-linux-build/logs/$package.log 2>&1
  23.     if [ $? -eq 0 ]; then
  24.         echo "$package built successfully."
  25.     else
  26.         echo "Error building $package. Check the log file for details."
  27.     fi
  28. done
  29. echo "All packages built."
  30. EOF
  31. # 使脚本可执行
  32. chmod +x ~/rocky-linux-build/build-packages.sh
  33. # 运行脚本
  34. ./build-packages.sh
复制代码

系统安装步骤

编译完成后,我们需要安装系统。这包括创建分区、复制文件和配置引导加载程序。

准备安装介质

首先,我们需要创建一个可启动的安装介质:
  1. # 创建一个目录来存放安装文件
  2. mkdir -p ~/rocky-linux-build/install-media
  3. cd ~/rocky-linux-build/install-media
  4. # 复制编译好的RPM包
  5. cp ~/rocky-linux-build/custom-rocky.cfg/result/*.rpm .
  6. # 创建一个简单的initramfs
  7. mkdir -p initramfs/{bin,sbin,etc,proc,sys,usr/bin,usr/sbin}
  8. # 复制必要的二进制文件
  9. cp /bin/bash initramfs/bin/
  10. cp /bin/sh initramfs/bin/
  11. cp /sbin/init initramfs/sbin/
  12. cp /usr/bin/dmesg initramfs/usr/bin/
  13. cp /usr/bin/mount initramfs/usr/bin/
  14. cp /usr/bin/umount initramfs/usr/bin/
  15. cp /usr/sbin/chroot initramfs/usr/sbin/
  16. # 复制库文件
  17. for bin in $(find initramfs -type f -executable); do
  18.     ldd $bin | grep -o "/lib[^ ]*" | xargs -I {} cp -v {} initramfs$(dirname {})
  19. done
  20. # 创建init脚本
  21. cat > initramfs/init << 'EOF'
  22. #!/bin/bash
  23. # 挂载必要的文件系统
  24. mount -t proc proc /proc
  25. mount -t sysfs sysfs /sys
  26. mount -t devtmpfs devtmpfs /dev
  27. # 找到并挂载根文件系统
  28. # 这里需要根据实际情况调整
  29. mkdir /rootfs
  30. mount /dev/sda2 /rootfs
  31. # 切换到新系统
  32. exec chroot /rootfs /sbin/init
  33. EOF
  34. chmod +x initramfs/init
  35. # 创建initramfs镜像
  36. cd initramfs
  37. find . | cpio -o -H newc | gzip > ../initramfs.cpio.gz
  38. cd ..
  39. # 创建内核和initramfs的ISO镜像
  40. mkdir -p iso/isolinux
  41. cp /boot/vmlinuz-* iso/vmlinuz
  42. cp initramfs.cpio.gz iso/
  43. cp /usr/share/syslinux/isolinux.bin iso/isolinux/
  44. cp /usr/share/syslinux/ldlinux.c32 iso/isolinux/
  45. # 创建isolinux配置文件
  46. cat > iso/isolinux/isolinux.cfg << 'EOF'
  47. default rocky
  48. timeout 100
  49. label rocky
  50.   linux vmlinuz
  51.   append initrd=initramfs.cpio.gz root=/dev/sda2
  52. EOF
  53. # 创建ISO镜像
  54. mkisofs -o rocky-linux-install.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table iso/
复制代码

分区和格式化磁盘

在安装系统之前,我们需要对磁盘进行分区和格式化:
  1. # 假设我们要安装到/dev/sda
  2. # 使用fdisk进行分区
  3. sudo fdisk /dev/sda << EOF
  4. o # 创建新的空DOS分区表
  5. n # 新建分区
  6. p # 主分区
  7. 1 # 分区号
  8.   # 默认起始扇区
  9. +512M # 512MB用于/boot分区
  10. n # 新建分区
  11. p # 主分区
  12. 2 # 分区号
  13.   # 默认起始扇区
  14.   # 默认结束扇区(使用剩余空间)
  15. w # 写入更改并退出
  16. EOF
  17. # 格式化分区
  18. sudo mkfs.ext4 /dev/sda1 # /boot分区
  19. sudo mkfs.ext4 /dev/sda2 # 根分区
  20. # 挂载分区
  21. sudo mkdir -p /mnt/rocky
  22. sudo mount /dev/sda2 /mnt/rocky
  23. sudo mkdir /mnt/rocky/boot
  24. sudo mount /dev/sda1 /mnt/rocky/boot
复制代码

安装系统文件

现在我们可以安装系统文件了:
  1. # 创建RPM数据库
  2. sudo rpm --root /mnt/rocky --initdb
  3. # 安装RPM包
  4. cd ~/rocky-linux-build/install-media
  5. sudo rpm --root /mnt/rocky -ivh *.rpm
  6. # 安装内核
  7. sudo cp /boot/vmlinuz-* /mnt/rocky/boot/vmlinuz
  8. sudo cp ~/rocky-linux-build/initramfs.cpio.gz /mnt/rocky/boot/initramfs.cpio.gz
  9. # 配置fstab
  10. cat << EOF | sudo tee /mnt/rocky/etc/fstab
  11. /dev/sda1 /boot ext4 defaults 0 0
  12. /dev/sda2 / ext4 defaults 0 0
  13. EOF
  14. # 配置网络
  15. cat << EOF | sudo tee /mnt/rocky/etc/sysconfig/network-scripts/ifcfg-eth0
  16. DEVICE=eth0
  17. BOOTPROTO=dhcp
  18. ONBOOT=yes
  19. EOF
  20. # 设置root密码
  21. sudo chroot /mnt/rocky passwd
复制代码

配置引导加载程序

最后,我们需要配置引导加载程序:
  1. # 安装GRUB
  2. sudo chroot /mnt/rocky grub2-install /dev/sda
  3. # 生成GRUB配置
  4. sudo chroot /mnt/rocky grub2-mkconfig -o /boot/grub2/grub.cfg
  5. # 卸载分区
  6. sudo umount /mnt/rocky/boot
  7. sudo umount /mnt/rocky
复制代码

个性化配置

现在我们已经完成了基本的系统安装,接下来可以进行个性化配置。

系统服务配置
  1. # 启用必要的服务
  2. sudo systemctl enable NetworkManager
  3. sudo systemctl enable sshd
  4. # 禁用不必要的服务
  5. sudo systemctl disable postfix
  6. sudo systemctl disable avahi-daemon
复制代码

桌面环境安装(可选)

如果你需要图形界面,可以安装一个桌面环境:
  1. # 安装X Window System
  2. sudo dnf groupinstall "X Window System"
  3. # 安装GNOME桌面环境
  4. sudo dnf groupinstall "GNOME Desktop Environment"
  5. # 或者安装KDE桌面环境
  6. sudo dnf groupinstall "KDE Plasma Workspaces"
  7. # 设置图形界面为默认启动目标
  8. sudo systemctl set-default graphical.target
复制代码

用户和权限配置
  1. # 创建新用户
  2. sudo useradd -m -G wheel your_username
  3. sudo passwd your_username
  4. # 配置sudo权限
  5. echo "%wheel ALL=(ALL) ALL" | sudo tee -a /etc/sudoers
复制代码

软件源配置
  1. # 备份原有的软件源配置
  2. sudo cp /etc/yum.repos.d/Rocky-BaseOS.repo /etc/yum.repos.d/Rocky-BaseOS.repo.bak
  3. # 编辑软件源配置
  4. sudo nano /etc/yum.repos.d/Rocky-BaseOS.repo
复制代码

在配置文件中,你可以添加或修改软件源,例如:
  1. [baseos]
  2. name=Rocky Linux $releasever - BaseOS
  3. mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever
  4. gpgcheck=1
  5. enabled=1
  6. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
复制代码

内核参数调优
  1. # 编辑GRUB配置
  2. sudo nano /etc/default/grub
  3. # 修改GRUB_CMDLINE_LINUX,添加或调整参数
  4. GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap rhgb quiet"
  5. # 更新GRUB配置
  6. sudo grub2-mkconfig -o /boot/grub2/grub.cfg
复制代码

系统安全加固
  1. # 安装防火墙
  2. sudo dnf install firewalld
  3. sudo systemctl enable --now firewalld
  4. # 配置防火墙规则
  5. sudo firewall-cmd --add-service=ssh --permanent
  6. sudo firewall-cmd --reload
  7. # 安装SELinux管理工具
  8. sudo dnf install setroubleshoot-server
  9. # 检查SELinux状态
  10. sestatus
  11. # 如果需要,可以调整SELinux模式
  12. sudo setenforce 1
复制代码

常见问题及解决方案

在源码安装过程中,你可能会遇到一些常见问题。以下是一些问题及其解决方案:

编译错误

问题:编译过程中出现错误,提示缺少依赖库。

解决方案:
  1. # 安装缺失的依赖
  2. sudo dnf builddep <package_name>
  3. # 或者手动安装
  4. sudo dnf install <missing_library>
复制代码

内核启动失败

问题:系统无法启动,出现内核恐慌。

解决方案:
  1. # 检查内核配置
  2. make menuconfig
  3. # 确保必要的驱动程序已编译进内核或作为模块
  4. # 重新编译内核
  5. make -j$(nproc)
  6. make modules_install
  7. make install
复制代码

包依赖问题

问题:安装RPM包时出现依赖错误。

解决方案:
  1. # 使用--nodeps选项强制安装(不推荐)
  2. sudo rpm -ivh --nodeps <package_name>
  3. # 或者解决依赖问题
  4. sudo dnf install <missing_dependency>
复制代码

引导加载程序问题

问题:GRUB无法正确安装或配置。

解决方案:
  1. # 重新安装GRUB
  2. sudo grub2-install /dev/sda
  3. # 重新生成GRUB配置
  4. sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  5. # 检查/etc/fstab是否正确
  6. cat /etc/fstab
复制代码

总结

通过本教程,你已经学会了如何从源码安装Rocky Linux,并构建一个个性化的Linux系统环境。源码安装虽然比二进制安装更复杂,但它提供了更高的自定义性和优化空间。

源码安装的主要优势包括:

• 完全控制系统的组件和功能
• 可以针对特定硬件进行优化
• 移除不必要的组件,提高系统效率
• 学习Linux系统内部工作原理的绝佳机会

随着你对Linux系统的深入了解,你可以进一步优化和定制你的系统,例如:

• 编译特定版本的软件以满足你的需求
• 调整内核参数以提高系统性能
• 添加或删除系统服务以满足你的使用场景

希望本教程能帮助你构建一个符合你需求的个性化Rocky Linux系统。如果你有任何问题或需要进一步的帮助,请参考Rocky Linux官方文档或社区论坛。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

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

本版积分规则