制作自己的Linux发行版
更新时间:2023-09-30 14:02:01 阅读量: 综合文库 文档下载
制作自己的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 \echo $i: $line echo $name echo $version fi
if [ $DEBUG -eq \
ls $ALL_RPMS_DIR/$name-$version* if [ $? -ne 0 ] ; then
echo \fi else
echo \cp $ALL_RPMS_DIR/$name-$version* $LT_RPMS_DIR/
# in case the copy failed if [ $? -ne 0 ] ; then
echo \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 #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 \echo $i: $line echo $name echo $version fi
if [ $DEBUG -eq \
ls $ALL_RPMS_DIR/$name-$version* if [ $? -ne 0 ] ; then
echo \fi else
echo \cp $ALL_RPMS_DIR/$name-$version* $LT_RPMS_DIR/ # in case the copy failed if [ $? -ne 0 ] ; then
echo \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发行版09-30
中共眉山市东坡区教育局委员会关于岳家军等同志任免职的通知01-15
全国2018年12月大学英语B,统考英语B,网络统考英语B复习资料(必过03-08
重庆市建设工程造价管理规定(2016)03-12
如何培养孩子的倾听能力05-03
中国汽车备胎架行业市场调查研究报告(目录) - 图文04-29
刑事诉讼中捕后轻刑案件情况分析及防治对策07-07
PAML一般使用操作03-06
马悦凌养生之道11-02
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 发行
- 制作
- 自己
- Linux
- 锅炉三冲量控制设计
- 人教版pep六年级英语上册第六单元基础检测试卷
- 基于波特五力模型分析生活用纸行业
- 应用文写作基础试题与答案 精品
- 水力学与桥涵水文教学日历2012-2013(2)
- 18秋学期(清考)《客户心理与沟通》在线作业1
- 浅谈数学在科学社会中的应用(自然辩证法)
- 旅游管理专业旅游学概论期末考试
- 新桥站道岔故障分析
- 2013初中数学经典四边形习题50道(附答案)
- 全国2003年10月高等教育自学考试社会保障概论试题
- 2012年湖南省邵阳市中考英语试题及答案
- 超外差调幅接收机5
- 日本道德教育
- 校园一角 教学设计
- 大班下学期第17周周计划表
- 2013年咨询工程师《项目组织与管理》CCB习题班16讲
- 浅谈公立医院医疗设备管理中存在的问题与建议
- 2015年4月25日雅思口语真题回忆
- 下面我来分析一下教学案的优缺点