制作自己的Linux发行版_linux发行版制作指南

其他范文 时间:2020-02-27 21:45:47 收藏本文下载本文
【www.daodoc.com - 其他范文】

制作自己的Linux发行版由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“linux发行版制作指南”。

制作自己的Linux发行版

1、安装linux系统(如CentOS),安装完后在/root/下有anaconda-ks.cfg、install.log、install.log.syslog文件

2、在某目录下(如:/root/zhenglei/)创建目录(如:isotest)存放linux发行版所需文件

#cd /root/zhenglei/ #mkdir isotest3、挂载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)挂载完成后,进入/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--.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--.root root 4052 Sep 23 08:50 TRANS.TBL-r--r--r--.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.rpm6、进入/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 mkisofs7、创建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 #cd /root/zhenglei/isotest/isolinux/ #vi isolinux.cfg default ks #prompt 1 timeout 600

display boot.msg

label linux

menu label ^Install or upgrade an existing system

kernel vmlinuz

append initrd=initrd.img label vesa

menu label Install system with ^basic video driver

kernel vmlinuz

append initrd=initrd.img xdriver=vesa nomodeset label rescue

menu label ^Rescue installed system

kernel vmlinuz

append initrd=initrd.img rescue label ks

kernel vmlinuz

append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img label local

menu label Boot from ^local drive

localboot 0xffff label memtest86

menu label ^Memory test

kernel memtest

append –

8、进入/root/zhenglei/isotest/下,用mkisofs发布iso文件。新建一个release文件夹来存放发布的iso文件 #cd /root/zhenglei/isotest/ #mkdir release #mkisofs-R-J-T-r-l-d-allow-multidot-allow-leading-dots-no-bak-o /root/zhenglei/isotest/release/test.iso-b isolinux/isolinux.bin-c isolinux/boot.cat-no-emul-boot-boot-load-size 4-boot-info-table.若出现genisoimage: Error:./repodata/xxx-xxx-minimal-x86_64.xml.gz and./repodata/xxx-minimal-x86_64.xml.gz have the same Joliet name错误,则需在repodata下用rm命令删掉命名较短的那个文件(即rm –rf xxx-minimal-x86_64.xml.gz或者在-allow-multidot前添加-joliet-long)完成后再/root/release/下就会有制作的test.iso文件了。

9、在/root/zhenglei/isotest/release/下用sz命令拷贝test.iso文件到windows上,若使用VMware安装成功,则说明iso制作成功。

安装过程可能会出现提示需要一些包的依赖包,只需将这些依赖包添到Packages目录下,修改ks.cfg文件把新填包的名字加进去即可。

温馨提示:可以将制作iso的上述步骤写成一个脚本,这样就避免了每次制作iso时都进行重复的操作。

小技巧:

在CentOS系统安装完成之后,会将所有rpm包的安装信息记录在/root/目录下的install.log文件中,我们可以将这个文件输出为我们想要的格式,在通过一些脚本,将需要的rpm包复制到/rice/CentOS/目录下。

#cd /root/

#cat install.log | grep Installing | sed 's/Installing //g'|sed 's/^[0-9]+://g' > packages.list //生成packages.list,以便之后复制rpm包。

创建自动提取相关rpm脚本:

#vi cprpms.sh

#!/bin/bash DEBUG=0 LT_CD=/mnt/cdrom ALL_RPMS_DIR=/mnt/cdrom/CentOS #挂载光盘存放的目录 LT_RPMS_DIR=/rice/CentOS #存放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

执行以上脚本将定制ltos必要的rpm复制到/rice/CentOS目录

#./cprpms.sh //若无法执行,使用chmod +x cprpms.sh为该脚本添加执行权限。

复制rpm包完成。

下载制作自己的Linux发行版word格式文档
下载制作自己的Linux发行版.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文