制作自己的Linux发行版
- 格式:docx
- 大小:23.86 KB
- 文档页数:6
制作自己的Linux发行版
1、 安装linux系统(如CentOS),安装完后在/root/下有anaconda-ks.cfg、install.log、install.log.syslog文件
2、 在某目录下(如:/root/zhenglei/)创建目录(如:isotest)存放linux发行版所需文件
#cd /root/zhenglei/
#mkdir isotest
3、 挂载iso文件到linux上。挂载前,先在/mnt/下创建cdrom目录,用来挂载
#mkdir /mnt/cdrom/
#mount –t iso9660 –o loop /xxx/test.iso /mnt/cdrom/
此处的xxx是test.iso文件所在的绝对路径
4、 利用tar命令将iso文件中的所有文件复制到/root/zhenglei/isotest/下
#cd /mnt/cdrom/
#tar -cf - . | ( cd /root/zhenglei/isotest/ ; tar –xvpf - )
挂载完成后,进入/root/zhenglei/isotest/下,ls –al查看一下:
[root@cluster2 isotest]# ls -al
total 152
dr-xr-xr-x. 9 root root 4096 Sep 23 08:50 .
drwxr-xr-x. 5 root root 4096 Sep 24 09:58 ..
dr-xr-xr-x. 2 root root 4096 Sep 22 11:30 [BOOT]
-r--r--r--. 1 root root 14 Sep 22 11:29 CentOS_BuildTag
-r--r--r--. 1 root root 33 Sep 22 11:29 .discinfo
dr-xr-xr-x. 3 root root 4096 Sep 22 11:29 EFI
-r--r--r--. 1 root root 212 Sep 22 11:29 EULA
-r--r--r--. 1 root root 18009 Sep 22 11:29 GPL
-r--r--r--. 1 root root 9591 Sep 23 08:48 icfs_ks_auto_partition.cfg
dr-xr-xr-x. 3 root root 4096 Sep 22 11:29 images
dr-xr-xr-x. 2 root root 4096 Sep 22 15:19 isolinux
dr-xr-xr-x. 2 root root 49152 Sep 23 08:47 Packages
-r--r--r--. 1 root root 1354 Sep 22 11:30 RELEASE-NOTES-en-US.html
dr-xr-xr-x. 3 root root 4096 Sep 23 08:50 repodata
-r--r--r--. 1 root root 1706 Sep 22 11:30 RPM-GPG-KEY-CentOS-6
-r--r--r--. 1 root root 1730 Sep 22 11:30 RPM-GPG-KEY-CentOS-Debug-6
-r--r--r--. 1 root root 1730 Sep 22 11:30 RPM-GPG-KEY-CentOS-Security-6
-r--r--r--. 1 root root 1734 Sep 22 11:30 RPM-GPG-KEY-CentOS-Testing-6
dr-xr-xr-x. 6 root root 4096 Sep 22 11:29 .svn
-r--r--r--. 1 root root 4052 Sep 23 08:50 TRANS.TBL
-r--r--r--. 1 root root 276 Sep 22 11:29 .treeinfo
用命令rm删除不必要的文件,删除Packages文件夹下所有内容,保留Packages目录,再ls –al查看一下:
[root@cluster2 isotest]# ls -al
total 40
dr-xr-xr-x. 7 root root 4096 Sep 24 10:23 . drwxr-xr-x. 5 root root 4096 Sep 24 09:58 ..
-r--r--r--. 1 root root 33 Sep 22 11:29 .discinfo
dr-xr-xr-x. 3 root root 4096 Sep 22 11:29 images
dr-xr-xr-x. 2 root root 4096 Sep 22 15:19 isolinux
drwxr-xr-x. 2 root root 4096 Sep 24 10:23 Packages
dr-xr-xr-x. 3 root root 4096 Sep 23 08:50 repodata
-r--r--r--. 1 root root 4052 Sep 23 08:50 TRANS.TBL
-r--r--r--. 1 root root 276 Sep 22 11:29 .treeinfo
文件看起来就舒服多了。
5、 复制所需rpm包到packages文件夹中。在CentOS系统安装完成后,会将所有rpm包的安装信息记录在/root/install.log文件中,我们可以将这个文件输出为自己想要的格式,再通过脚本,将所需rpm包复制到/root/zhenglei/isotest/Packages/下。
#cd /root/
//生成packages.list,以便之后复制rpm包
#cat install.log | grep Installing | sed 's/Installing //g' | sed 's/^[0-9]\+://g' > packages.list
//创建自动提取相关rpm脚本
#vim cprpms.sh
DEBUG=0
LT_CD=/mnt/cdrom
ALL_RPMS_DIR=/mnt/cdrom/Packages #挂载iso存放的目录
LT_RPMS_DIR=/root/zhenglei/isotest/Packages #存放rpm包的目录
packages_list=/root/packages.list
number_of_packages=`cat $packages_list | wc -l`
i=1
while [ $i -le $number_of_packages ] ; do
line=`head -n $i $packages_list | tail -n -1`
name=`echo $line | awk '{print $1}'`
version=`echo $line | awk '{print $3}' | cut -f 2 -d :`
if [ $DEBUG -eq "1" ] ; then
echo $i: $line
echo $name
echo $version
fi
if [ $DEBUG -eq "1" ] ; then
ls $ALL_RPMS_DIR/$name-$version*
if [ $? -ne 0 ] ; then
echo "cp $ALL_RPMS_DIR/$name-$version* "
fi
else
echo "cp $ALL_RPMS_DIR/$name-$version* $LT_RPMS_DIR/"
cp $ALL_RPMS_DIR/$name-$version* $LT_RPMS_DIR/ # in case the copy failed
if [ $? -ne 0 ] ; then
echo "cp $ALL_RPMS_DIR/$name-$version* "
cp $ALL_RPMS_DIR/$name* $LT_RPMS_DIR/
fi
fi
i=`expr $i + 1`
done
执行cprpms.sh脚本将所需的rpm包复制到/root/zhenglei/isotest/Packages/下。
#sh cprpms.sh //若无法执行,使用chmod +x cprpms.sh为该脚本添加执行权限。
进入到/root/zhenglei/isotest/Packages/下,ls查看一下:(rpm包太多,仅列出几个)
[root@inspur isotest]# ls /root/zhenglei/isotest/Packages/
aic94xx-firmware-30-2.el6.noarch.rpm libevent-1.4.13-4.el6.x86_64.rpm
atmel-firmware-1.3-7.el6.noarch.rpm libffi-3.0.5-3.2.el6.x86_64.rpm
attr-2.4.44-7.el6.x86_64.rpm libgcc-4.4.7-4.el6.x86_64.rpm
6、 进入/root/zhenglei/isotest/下,执行createrepo程序生成repodata目录下相对应的压缩文件
#cd /root/zhenglei/isotest/
#createrepo -g repodata/*minimal*.xml . //此处的*minimal*.xml为repodata目录下的一个文件,参考自己repodata目录来写。
若出现createrepo命令找不到,则需安装相应软件,用CentOS的yum来安装即可
# yum -y install anaconda-runtime createrepo yum-utils anaconda anaconda-help
busybox-anaconda mkisofs
7、 创建kickstart脚本,通过anaconda-ks.cfg来完成对kickstart脚本的定制
#cd //进入/root/下
#cp anaconda-ks.cfg zhenglei/isotest/isolinux/ks.cfg //将anaconda-ks.cfg复制到/root/zhenglei/isotest/isolinux/下,并将其改名为ks.cfg,用vi命令按需修改ks.cfg文件。修改完ks.cfg文件后,需修改linux的默认安装方式,即修改/root/zhenglei/isotest/isolinux/isolinux.cfg文件,这个文件是只读的,想要修改,需要为其赋予可写权限:
#chmod +w /root/zhenglei/isotest/isolinux/isolinux.cfg