定制LINUX发行版本

 
2007-04-06 16:35:59
以前研究的东西了,最近看到网上有很多人为了制作自己的发行版,苦苦挣扎而不得其道,所以把自己的笔记拿出来与大家一起分享!

注:其中路径/data/disk是我的制作光盘路径,各位可以根据自己的环境进行修改。

=======================================================

基本过程:

定制RPM包
修改 comps.xml
重编comps.rpm
重新生成hdlist
建立pkglist
利用buildinstall处理安装程序
利用mkisofs制作安装映象

------------------------------------------------
母系统是centos4.3,为了软件最新,先升级自己的系统相关软件
rpm --import http://mirror.be10.com/centos/4.3/os/i386/RPM-GPG-KEY-centos4
rpm --import /usr/share/doc/centos-release-4/RPM-GPG-KEY >> /dev/null
yum -y update

以下为制作安装光盘必须的包
yum install pump-devel gtk2-devel booty bogl-devel bogl-bterm elfutils-devel beecrypt-devel dietlibc
yum install anaconda anaconda-runtime busybox-anaconda

=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
anaconda                i386       10.1.1.37-1.centos4.2  base              4.3 M
anaconda-runtime        i386       10.1.1.37-1.centos4.2  base              526 k
busybox-anaconda        i386       1.00.rc1-5       base              177 k
Installing for dependencies:
anaconda-help           noarch     10.1.0-1.centos4  base              800 k
bogl                    i386       0.1.18-4         base               93 k
booty                   i386       0.44.3-1         base               85 k
pyparted                i386       1.6.8-2          base               22 k



检查RPM包依赖关系
cd /data/disk/EServer/RPMS
mkdir /tmp/testdb
rpm --initdb --dbpath /tmp/testdb
rpm --test --dbpath /tmp/testdb -Uvh *.rpm

以下是具体步骤:
1.设置python的系统环境变量
export PYTHONPATH=/usr/lib/anaconda
export PATH="$PATH:/usr/lib/anaconda-runtime"

2.更新光盘的文件树
genhdlist --productpath=EServer /data/disk


3.生成下一步需要的pkgfile文件
pkgorder --product EServer /data/disk/ EServer > /data/pkgfile

4.编译生成光盘引导文件和图形安装界面镜像
buildinstall --pkgorder /data/pkgfile /
--version "1.2" /
--product "EServer" /
--release "Beta" /
--prodpath EServer /data/disk

5.制作 ISO

mkisofs -r -T -J -V "EServer 1.2" -b isolinux/isolinux.bin /
-c isolinux/boot.cat -no-emul-boot -boot-load-size 4 /
-boot-info-table -x "lost+found" /
-o /data/EServer.iso /data/disk


文件isolinux/boot.cat 会由mkisofs 程序随后产生
----------------------------------------------------

为光盘生成md5验证值
implantisomd5 /data/EServer.iso
Inserting md5sum into iso image...
md5 = b49c693f83c23d7e746dfe0f81a56016
Setting supported flag to 0



如果想将图形界面修改成个性化的界面,需要修改stage2.img(光盘引导镜像,如果硬盘安装,需要修改其他img文件……)

附注:
anaconda资源修改:

mkdir /data/anaconda
mount -o loop /data/disk/EServer/base/stage2.img /data/anaconda
cd /data/anaconda
tar -cvf /data/stage2.tar .
mkdir /data/stage2
cd /data/stage2
tar -xvf /data/stage2.tar
chmod +w -R ../stage2
#-----------修改资源-----------------#
.....
....
#重新打包img镜像
cd /data
mkcramfs stage2/ stage2.img.new
cp /data/stage2.img.new /data/disk/EServer/base/stage2.img




光盘启动画面修改:

yum -y install syslinux

The graphic is in a somewhat odd format, called LSS16. As the name indicates, it is limited to 16 colors. To edit the graphic, first convert it to a PPM:

lss16toppm < splash.lss > splash.ppm

Next, edit the file using The Gimp. Save the resulting file as an indexed gif with no more than 14 colors (plus black and white, for a total of 16). Then, convert the file to a pnm/ppm:

giftopnm < splash.gif | ppmtolss16 > splash.lss
cp splash.lss /data/disk/isolinux/splash.lss


yum install gcc xorg-x11-devel
编译gif2lss-0.4.tar.gz


保证光盘里面rpm目录下有以下包,这些包是图形化界面制作所必须的,没有他们,buildinstall将会报错。

anaconda
anaconda-runtime
anaconda-help
anaconda-product
busybox
busybox-anaconda
memtest86+
fonts-xorg-base
xorg-x11
joe
kernel*

附注:
rpm -qpi #显示rpm包的信息
rpm -Uvh #安装rpm包
rpm -qpl #列rpm包内的文件


上面这些步骤,是经过实践之后的笔记,所以一般都能够成功,还有一些细节部分,如comps.xml的修改,语法,就不多介绍了。

如果发现有什么问题,欢迎跟帖。
  
<think>我们正在讨论Linux发行版本及其体系结构。根据用户的问题,他想要了解Linux发行版本及版本体系介绍。结合之前的回答和引用内容,我们可以这样组织:1.首先明确Linux发行版的概念(引用[1]提到:发行版是以Linux为核心的操作系统软件包)2.介绍主要的发行版家族(Debian系、RedHat系、Slackware系、独立分支)及其代表3.详细说明不同发行版的特点,包括包管理、版本发布策略等(引用[2]提到ArchLinux的滚动更新和KISS原则)4.讨论发行版的体系结构(通常包括Linux内核、GNU工具、桌面环境、包管理系统等)5.提供选择建议和查看版本的方法同时,我们注意到引用[3]提到Linux内核的发展历程,引用[4]则是一本Linux书籍的广告,参考价值有限。因此,我们构建如下回答:#Linux发行版本及体系结构详解##一、Linux发行版定义Linux发行版(Distribution)是以**Linux内核**为核心,整合了GNU工具链、桌面环境、应用软件和包管理系统的完整操作系统[^1]。其核心组件包括:1.**Linux内核**-负责硬件交互和资源调度2.**GNU工具集**-提供基础命令行工具(如bash,grep)3.**软件包管理系统**-实现软件的安装/更新(APT/RPM/Pacman)4.**桌面环境**-用户图形界面(GNOME/KDE/Xfce)##二、发行版家族分类###1.Debian系|特性|说明||---------------------|-------------------------------||包格式|`.deb`||包管理工具|`APT`(AdvancedPackageTool)||代表发行版|Debian,Ubuntu,LinuxMint||版本策略|Ubuntu每6个月发布常规版,每2年发布LTS版(5年支持)[^4]|###2.RedHat系|特性|说明||---------------------|-------------------------------||包格式|`.rpm`||包管理工具|`YUM`/`DNF`||代表发行版|RHEL,Fedora,CentOS||企业支持|RHEL提供10年安全更新|###3.独立分支-**ArchLinux**采用滚动更新机制,无固定版本号[^2]设计哲学:KISS(KeepItSimple,Stupid)包管理器:`pacman`用户群体:高级用户/开发者-**Gentoo**源码编译安装,极致优化包管理器:`Portage`##三、发行版体系结构```mermaidgraphTDA[Linux内核]-->B[系统守护进程]A-->C[GNU核心工具]B-->D[网络服务]C-->E[Shell环境]D-->F[桌面环境]E-->G[应用软件]```1.**基础层**-内核:处理进程调度、内存管理-初始化系统:systemd/SysVinit2.**中间层**-设备管理:udev-网络配置:NetworkManager3.**应用层**-图形服务:Xorg/Wayland-桌面环境:提供完整用户界面##四、版本标识解析1.**内核版本号**`主版本.次版本.修订号-后缀`示例:`5.15.0-76-generic`-`generic`:通用内核(默认配置)-`rt`:实时内核(低延迟优化)2.**发行版版本**-Ubuntu:`年份.月份`(如22.04)-RHEL:`主版本.次版本`(如9.2)>**查看版本命令**>```bash>#查看内核版本>uname-r>#查看发行版信息>lsb_release-a>```##五、选择建议|使用场景|推荐发行版|优势||----------------|---------------------|---------------------------||服务器|UbuntuServerLTS|免费+5年支持||开发工作站|Fedora|最新开发工具链||嵌入式设备|AlpineLinux|轻量级(仅5MB内存占用)||桌面日常使用|LinuxMint|开箱即用的多媒体支持|>注:截至2024年,CentOS已转向CentOSStream滚动更新模式,不再提供稳定版[^4]。##六、演进趋势1.**容器化优化**-CoreOS→Flatcar:专为Kubernetes设计-UbuntuCore:原子化更新2.**不可变系统**-FedoraSilverblue:通过OSTree实现系统只读3.**AI支持**Ubuntu24.04LTS内置NVIDIAAI驱动栈§§相关问题§§1.如何理解ArchLinux的滚动更新机制与Ubuntu固定版本发布的优劣?2.在服务器部署场景中,RHEL订阅制与Ubuntu免费模式如何选择?3.Linux发行版的初始化系统(如systemd)如何影响系统启动性能?4.为什么AlpineLinux在容器镜像中比Ubuntu更受欢迎?5.不同Linux发行版之间的软件包兼容性如何解决?(例如在Ubuntu上安装RPM包)</think>### Linux 发行版本及版本体系详解 #### 一、核心概念:发行版(Distribution) Linux 发行版是以 **Linux 内核**为核心,集成 **GNU 工具链**、**软件包管理系统**、**桌面环境**和**预装应用**的完整操作系统[^1]。与单纯的内核不同,发行版提供开箱即用的体验,例如: - **Ubuntu** = Linux 内核 + GNOME 桌面 + APT 包管理 + Firefox 等应用 - **RHEL** = Linux 内核 + YUM/DNF 包管理 + 企业级安全工具 > 📌 **关键区别**: > - **Linux 内核**:由 Linus Torvalds 维护,仅负责硬件交互和资源调度(版本号如 `6.6.12`) > - **发行版**:基于内核构建的完整操作系统(版本号如 `Ubuntu 24.04 LTS`) --- #### 二、发行版四大体系及代表 根据技术路线和包管理机制分类: | **体系分支** | **代表发行版** | **核心特性** | **包管理工具** | |----------------|-------------------|------------------------------------------|--------------| | **Debian 系** | Ubuntu, Linux Mint| 社区驱动,稳定性优先;每 2 年发布 LTS 版 | APT (`.deb`) | | **Red Hat 系** | RHEL, Fedora | 企业级支持;RHEL 提供 10 年安全更新 | YUM/DNF (`.rpm`) | | **Arch 系** | Arch Linux | 滚动更新,极简主义;用户高度定制化 | Pacman | | **独立分支** | openSUSE, Alpine | openSUSE 强于配置工具;Alpine 为容器优化 | Zypper (RPM) / APK | **典型场景对比**: - **服务器**:RHEL(商业支持) / Ubuntu LTS(免费) - **开发桌面**:Fedora(前沿技术) / Arch(自定义性强) - **容器/轻量化**:Alpine Linux(仅 5MB 内存占用) --- #### 三、版本结构解析 1. **内核版本号** 格式:`主版本.次版本.修订号-后缀` - **次版本奇偶性**: - 奇数(如 `5.15`) → **开发版内核**(不稳定) - 偶数(如 `6.6`) → **稳定版内核**(生产环境推荐) - **后缀含义**: - `generic`:通用兼容内核(默认) - `rt`:实时内核(低延迟场景,如工业控制) 2. **发行版版本号** - **Ubuntu**:`年份.月份`(如 `24.04` = 2024年4月发布) - **RHEL**:`主版本.次版本`(如 `9.2`) - **滚动更新版**(如 Arch):无固定版本号,持续更新 --- #### 四、核心组件架构 所有发行版均包含以下层级: ```mermaid graph LR A[Linux 内核] --> B[系统守护进程<br>(systemd/init)] A --> C[GNU 核心工具<br>(bash, coreutils)] B --> D[网络服务<br>(sshd, httpd)] C --> E[Shell 环境<br>(zsh, fish)] D --> F[桌面环境<br>(GNOME/KDE)] E --> G[应用软件<br>(LibreOffice, Firefox)] ``` > 🔍 **查看系统信息命令**: > ```bash > uname -r # 查看内核版本(例:6.6.12-generic) > lsb_release -a # 查看发行版信息(例:Ubuntu 24.04) > cat /etc/os-release # 查看详细系统标识 > ``` --- #### 五、演进趋势(2024) 1. **容器化优化** - Alpine Linux 成为 Docker 镜像首选(轻量 + musl libc 优化) 2. **不可变系统** - Fedora Silverblue:系统分区只读,通过 OSTree 原子更新 3. **边缘计算** - Ubuntu Core:专为 IoT 设备设计的精简版 --- #### 六、选择建议 | **场景** | **推荐发行版** | **理由** | |----------------|-------------------|-----------------------------| | 企业服务器 | RHEL / Rocky Linux| 10 年安全更新 + SLA 支持 | | 个人开发 | Fedora / Arch | 最新开发工具链 + 定制自由 | | 老旧硬件 | Lubuntu | LXQt 桌面,内存 < 1GB | | 云原生/容器 | Alpine Linux | 极简镜像(< 5MB) | > ⚠️ **注意**:CentOS 已转向 **CentOS Stream**(RHEL 上游测试版),替代传统稳定版[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值