一、准备工作
1、系统安装
使用CentOS7.1光盘最小化安装系统到U盘A。

2、磁盘分区与格式化
在完整系统下,插入U盘B,用fdisk
命令对其进行分区,例如创建一个20G的分区用于存放编译过程中的软件和中间文件,再创建一个10G的分区用于安装最终的Linux系统,假设设备名为/dev/sdb
,对/dev/sdb
进行分区操作,创建两个分区/dev/sdb1
和/dev/sdb2
,并将它们分别格式化为合适的文件系统,如ext4或xfs等。
3、挂载分区
在/mnt
目录下新建boot
和sysroot
文件夹,然后将/dev/sdb1
挂载到/mnt/boot
,/dev/sdb2
挂载到/mnt/sysroot
。
二、裁剪步骤
1、复制系统文件
将U盘A中的部分必要系统文件复制到U盘B的相应分区中,将内核文件vmlinuz
和初始化内存盘文件initrd.img
从U盘A的/boot
目录复制到U盘B的/mnt/boot
目录;将一些必要的命令、库文件等从U盘A的根文件系统复制到U盘B的/mnt/sysroot
目录。

可以使用rsync
命令进行复制,排除不需要的文件和目录,如rsync a exclude "Packages" /mnt/iso /mnt/yyiso/
(此命令用于同步镜像文件时排除Packages文件夹及其下的RPM)。
2、配置引导程序
安装GRUB引导程序到U盘B的启动分区,指定其为系统启动盘,如grubinstall rootdirectory=/mnt /dev/sdb1
。
编写grub.conf
文件,在/mnt/boot/grub/
目录下新建该文件,并添加合适的配置内容,如下:
- default=0
- timeout=5
- title tiny linux
- root (hd0,0)
- kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash
- initrd /initramfs.img
注意其中的设备名称和参数需要根据实际情况进行调整。
3、配置裁剪系统
根据需求配置裁剪后的系统,如设置网络、用户、软件环境等,可以修改/mnt/sysroot/etc
目录下的相关配置文件来实现这些配置。
修改网络配置文件/mnt/sysroot/etc/sysconfig/networkscripts/ifcfgeth0
来配置网卡的IP地址、子网掩码、网关等信息;编辑/mnt/sysroot/etc/passwd
和/mnt/sysroot/etc/shadow
文件来创建用户账号和设置密码等。
4、生成裁剪后的系统镜像
可以使用工具如mkisofs
等将U盘B中的系统制作成ISO镜像文件,方便后续的使用和分发,在终端中执行类似mkisofs o /path/to/output.iso /mnt/sysroot
的命令来生成镜像(具体命令参数根据实际需求和工具版本进行调整)。
三、FAQs
1、Q:裁剪后的CentOS系统无法启动,提示找不到根文件系统,可能是什么原因?
A:可能是grub.conf
文件中的内核参数配置错误,导致系统无法正确找到根文件系统所在的分区,需要检查grub.conf
文件中的root
参数是否与实际的分区情况相符,以及分区的挂载是否正确,也有可能是在复制系统文件时遗漏了某些关键的文件或目录,导致系统无法正常启动。
2、Q:如何在裁剪后的CentOS系统中添加新的软件包或功能?
A:由于裁剪后的系统可能已经移除了很多不必要的软件包和依赖,直接使用常规的包管理工具可能会遇到问题,一种方法是手动下载所需软件包的RPM文件,然后使用rpm ivh
命令进行安装,并注意解决可能出现的依赖关系问题,另一种方法是重新运行之前用于裁剪系统的脚本或工具,选择添加所需的软件包或功能组件后再重新生成系统。