基于CentOS制作Linux发行版光盘
来源:互联网 发布:自动打电话软件 编辑:程序博客网 时间:2024/04/29 06:30
征程无限
基于CentOS制作Linux发行版光盘
Posted by
– 2011-12-28#############################################
# Custom Linux ISO Bulid
# Author: 楚霏
# Company: chengyongxu.com
# Date: 2011-04-28
# Update: 2011-12-23
# Env: CentOS 5.5 x86_64 && CentOS 6.2 x86_64
#############################################
一、安装制作发行版所需的基本软件包并创建工作目录
1
yum -y
install
anaconda-runtime createrepo yum-utils anacondaanaconda-help busybox-anaconda
mkisofs
2
mkdir
/os
3
mkdir
/mnt/cdrom
二、复制母盘文件
01
#挂载光盘镜像
02
mount
-t iso9660 -o loop /usr/
local
/src/CentOS-5.5-x86_64-bin-DVD-1of2.iso /mnt/cdrom
03
mount
-t iso9660 -o loop /usr/
local
/src/CentOS-6.2-x86_64-bin-DVD1.iso /mnt/cdrom
04
cd
/mnt/cdrom
05
#将光盘文件拷到工作目录
06
tar
-cf - . | (
cd
/os ;
tar
-xvpf - )
07
#删除无用的文件
08
cd
/os/
09
rm
RELEASE-NOTES-* -f
10
11
#centos5下是:
12
rm
-rf /os/CentOS/*
13
#centos6下是:
14
rm
-rf /os/Packages/*
三、定制package.list软件包清单
01
#以一台最小安装的线上服务器作为模板,将这台模板服务器安装时的/root/anaconda-ks.cfg拷贝到本地
02
#然后把这台模板服务器的RPM包信息导出拷贝到本地,导出方法是:
03
rpm -qa |
awk
-F-
'{print $1}'
>> packages.list
04
#可以统计一下条数
05
wc
-l /root/packages.list
06
#如果你指定了alias cp=cp -i,刚先取消
07
alias
cp
=
cp
08
09
#把需要的RPM包列表中的包从光盘镜像拷贝到目标目录的相应位置
10
#centos5下是:
11
for
i
in
`
cat
/root/packages.list`;
do
cp
-vrf /mnt/cdrom/CentOS/$i* /os/CentOS/;
done
12
#centos6下是:
13
for
i
in
`
cat
/root/packages.list`;
do
cp
-vrf /mnt/cdrom/Packages/$i* /os/Packages/;
done
14
15
#把想安装系统之后放入系统的源码包(chengyongxu.com.tar.gz)放入工作目录下
16
mv
chengyongxu.com.
tar
.gz /os/
17
#下载光盘镜像中没有,但又需要的RPM包,例如:
18
#centos5下是:
19
wget http://mirrors.163.com/centos/5.5/extras/x86_64/RPMS/mhash-0.9.9-1.el5.centos.x86_64.rpm
20
wget http://mirrors.163.com/centos/5.5/extras/x86_64/RPMS/mhash-devel-0.9.9-1.el5.centos.x86_64.rpm
21
22
#执行createrepo程序生成repodata下的comps.xml文件
23
cd
/os
24
#centos6下需要:
25
mv
repodata/*-comps.xml repodata/comps.xml
26
27
createrepo -g repodata/comps.xml .
四、配置kickstart
001
cd
/os
002
#把模板服务器上anaconda-ks.cfg拷贝到工作目录
003
#订制完光盘默认密码是模板服务器装系统时的密码
004
cp
anaconda-ks.cfg /os/ks.cfg
005
vi
/os/isolinux/ks.cfg 并修改脚本如下:
006
vi
ks.cfg
007
#CentOS 5的配置如下
008
#ks.cfg的详解请参考<a href="http://www.chengyongxu.com/blog/anaconda-ks-cfg%E8%AF%A6%E8%A7%A3/" title="ks.cfg详解" target="_blank">http://www.chengyongxu.com/blog/anaconda-ks-cfg%E8%AF%A6%E8%A7%A3/</a>
009
#----------------------------引用文字-开始----------------------------
010
# Kickstart file automatically generated by anaconda.
011
012
install
013
cdrom
014
lang en_US.UTF-8
015
keyboard us
016
network --device eth0 --bootproto dhcp --
hostname
localhost
017
rootpw --iscrypted $1$kAVanbBp$QjTH30VQgnj/.gYkQ6aN0
018
firewall --enabled --port=22:tcp
019
authconfig --enableshadow --enablemd5
020
selinux --enforcing
021
timezone --utc Asia/Shanghai
022
bootloader --location=mbr --driveorder=sda
023
# The following is the partition information you requested
024
# Note that any partitions you deleted are not expressed
025
# here so unless you clear all partitions first, this is
026
# not guaranteed to work
027
#clearpart --linux
028
clearpart --all --initlabel
029
part /boot --fstype ext3 --size=200 --asprimary
030
part / --fstype ext3 --size=40965
031
part swap --size=10245
032
part /data --fstype ext3 --size=1 --grow
033
034
%packages
035
@base
036
@core
037
@dialup
038
@editors
039
@text-internet
040
keyutils
041
trousers
042
fipscheck
043
device-mapper-multipath
044
autoconf
045
automake
046
bison
047
bzip2
-devel
048
compat-gcc-34-g77
049
compat-libstdc++-296
050
compat-libstdc++-33
051
curl
052
curl-devel
053
e2fsprogs-devel
054
flex
055
freetype-devel
056
gcc
057
gcc-c++
058
gettext-devel
059
krb5-devel
060
libidn-devel
061
libjpeg-devel
062
libpng-devel
063
libtiff-devel
064
libtool
065
libxml2
066
libxml2-devel
067
ncurses-devel
068
ntp
069
openssl-devel
070
pam-devel
071
sysstat
072
mhash-devel
073
zlib-devel
074
075
# chengyongxu.com System Install
076
%post --nochroot
077
078
# Mount CDROM
079
mkdir
-p /mnt/cdrom
080
mount
-r -t iso9660 /tmp/cdrom /mnt/cdrom
081
082
# Copy our files, extract it ,then move to right locations
083
cp
/mnt/cdrom/chengyongxu.com.
tar
.gz /mnt/sysimage/tmp/chengyongxu.com.
tar
.gz> /dev/null
084
cd
/mnt/sysimage/tmp/
085
tar
-zxvf chengyongxu.com.
tar
.gz > /dev/null
086
cp
-R /mnt/sysimage/tmp/src/* /mnt/sysimage/usr/
local
/src/ >/dev/null 2>/dev/null
087
088
# Umount CDROM
089
umount
/mnt/cdrom
090
091
%post
092
093
# ssh configration
094
sed
-i
's/#UseDNS yes/UseDNS no/g'
/etc/
ssh
/sshd_config
095
096
# Disable IPV6
097
sed
-i
's/\IPV6\=yes/\IPV6\=no/g'
/etc/sysconfig/network
098
echo
'
alias
net-pf-10 off
099
alias
ipv6 off' >> /etc/modprobe.conf
100
101
# Vim syntax on
102
VI_IN_BASH=`
grep
vim /root/.bashrc`
103
if
[ -z
"$VI_IN_BASH"
]
104
then
105
echo
"alias vi='vim'"
>> /root/.bashrc
106
source
/root/.bashrc
107
fi
108
109
# rsync configration
110
echo
"alias rsync='rsync -apur --partial -e \"ssh -p 22 -c arcfour\"'"
>> /root/.bashrc
111
112
# Show detail when use the "history" command
113
echo
"HISTTIMEFORMAT=\"%Y-%m-%d %H:%M:%S \""
>> /etc/profile
114
115
# Turn off unnecessary services
116
SERVICE_NEED=
"apmd|atd|auditd|cpuspeed|crond|mdmonitor|mdmpd|microcode-ctl|network|ntpd|readahed_early|readahead_later|smartd|sshd|syslog|irqbalance"
117
SERVICE_NONEED=`chkconfig --list|
awk
'{print $1}'
|
grep
-vE $SERVICE_NEED`
118
SERVICE_NEED_LIST=`
echo
$SERVICE_NEED|
sed
"s/|/ /g"
`
119
for
i
in
$SERVICE_NONEED;
do
chkconfig --level 2345 $i off; service $i stop;
done
120
for
i
in
$SERVICE_NEED_LIST;
do
chkconfig --level 2345 $i on; service $i start;
done
121
#----------------------------引用文字-结束----------------------------
122
123
#CentOS 6的配置如下
124
#----------------------------引用文字-开始----------------------------
125
# Kickstart file automatically generated by anaconda.
126
127
#version=RHEL6
128
install
129
cdrom
130
lang en_US.UTF-8
131
keyboard us
132
#network --device eth0 --bootproto dhcp --hostname localhost
133
rootpw --iscrypted $6$5q5hu2jMre1MaP4f$DUEVi7i0qo/4Vrh7iiuemzwLVv96pGWVO.T/SzRLE15qYDY9ZP/UfVNXpsoYTZsNLWrlce.yudFo.L7/BlG1
134
firewall --service=
ssh
135
authconfig --enableshadow --passalgo=sha512 --enablefingerprint
136
selinux --enforcing
137
timezone --utc Asia/Shanghai
138
bootloader --location=mbr --driveorder=sda --append=
"crashkernel=auto rhgb quiet"
139
# The following is the partition information you requested
140
# Note that any partitions you deleted are not expressed
141
# here so unless you clear all partitions first, this is
142
# not guaranteed to work
143
#clearpart --none --drives=sda
144
clearpart --all --initlabel
145
part /boot --fstype=ext4 --size=200 --asprimary
146
part / --fstype=ext4 --size=40965
147
part swap --size=10245
148
part /data --fstype=ext4 --size=1 --grow
149
150
repo --name=
"CentOS"
--baseurl=
file
:///mnt/
source
--cost=100
151
152
%packages
153
@base
154
@client-mgmt-tools
155
@console-internet
156
@core
157
@server-policy
158
autoconf
159
automake
160
bison
161
bzip2
-devel
162
cmake
163
compat-gcc-34-g77
164
compat-libstdc++-296
165
compat-libstdc++-33
166
curl
167
curl-devel
168
device-mapper-multipath
169
e2fsprogs-devel
170
flex
171
freetype-devel
172
ftp
173
gcc
174
gcc-c++
175
gettext-devel
176
htop
177
iptraf
178
krb5-devel
179
lftp
180
libidn-devel
181
libjpeg-devel
182
libpng-devel
183
libtiff-devel
184
libtool
185
libxml2
186
libxml2-devel
187
logwatch
188
lrzsz
189
make
190
ncurses-devel
191
ntp
192
openssl-devel
193
pam-devel
194
patch
195
sgpio
196
sysstat
197
trousers
198
mhash-devel
199
unix2dos
200
unzip
201
zlib-devel
202
%end
203
204
# chengyongxu.com System Install
205
# CentOS 6 Can not use post --nochroot
206
%post --nochroot
207
208
# Mount CDROM
209
mkdir
-p /mnt/cdrom
210
mount
-r -t iso9660 /dev/cdrom /mnt/cdrom
211
212
# Copy our files, extract it ,then move to right locations
213
cd
/mnt/cdrom/
214
tar
-zmxvf chengyongxu.com.
tar
.gz -C /mnt/sysimage/usr/
local
/src/ > /dev/null
215
cd
/mnt
216
217
# Umount CDROM
218
umount
/mnt/cdrom
219
220
%post
221
222
# ssh configration
223
sed
-i
's/#UseDNS yes/UseDNS no/g'
/etc/
ssh
/sshd_config
224
225
# Disable IPV6
226
echo
"NETWORKING_IPV6=no"
>> /etc/sysconfig/network
227
echo
'
alias
net-pf-10 off
228
options ipv6 disable=1' >> /etc/modprobe.d/ipv6-off.conf
229
230
# Vim syntax on
231
VI_IN_BASH=`
grep
vim /root/.bashrc`
232
if
[ -z
"$VI_IN_BASH"
]
233
then
234
echo
"alias vi='vim'"
>> /root/.bashrc
235
source
/root/.bashrc
236
fi
237
238
# rsync configration
239
echo
"alias rsync='rsync -apur --partial -e \"ssh -p 22 -c arcfour\"'"
>> /root/.bashrc
240
241
# Show detail when use the "history" command
242
echo
"HISTTIMEFORMAT=\"%Y-%m-%d %H:%M:%S \""
>> /etc/profile
243
244
# Add a crontab task
245
echo
"0 */8 * * * /usr/sbin/ntpdate 210.72.145.44"
>> /var/spool/
cron
/root
246
247
# If forget this, will output error : "sudo: sorry, you must have a tty to run sudo" on system boot
248
sed
-i
's/Defaults requiretty/#Defaults requiretty/g'
/etc/sudoers
249
250
# Install Nginx PHP MySQL Memcached GD Libxml Libmcrypt Libevent Sphinx Nrpe
251
tar
-zmxvf /usr/
local
/src/Etc_Init.d.
tar
.gz -C /etc/init.d/ > /dev/null
252
tar
-zmxvf /usr/
local
/src/my.cnf.
tar
.gz -C /etc/ > /dev/null
253
tar
-zmxvf /usr/
local
/src/Usr_Local.
tar
.gz -C /usr/
local
/ > /dev/null
254
255
# Add Users
256
groupadd www -g 88
257
useradd
-u 88 -g www www -m
258
useradd
mysql
259
useradd
nagios
260
261
# Add services
262
chkconfig --add nginx
263
chkconfig --add memcached
264
chkconfig --add mysqld
265
chkconfig --add nrpe
266
chkconfig --add sphinx
267
268
# Turn off unnecessary services
269
SERVICE_NEED=
"apmd|atd|auditd|cpuspeed|crond|irqbalance|memcached|mdmonitor|mdmpd|microcode-ctl|network|nginx|ntpd|nrpe|readahed_early|readahead_later|smartd|sphinx|sshd|syslog"
270
SERVICE_NONEED=`chkconfig --list|
awk
'{print $1}'
|
grep
-vE $SERVICE_NEED`
271
SERVICE_NEED_LIST=`
echo
$SERVICE_NEED|
sed
"s/|/ /g"
`
272
for
i
in
$SERVICE_NONEED;
do
chkconfig --level 2345 $i off; service $i stop;
done
273
for
i
in
$SERVICE_NEED_LIST;
do
chkconfig --level 2345 $i on; service $i start;
done
274
275
# By 楚霏 (yxcx@yahoo.cn<script type="text/javascript">
276
/* <![CDATA[ */
277
(
function
(){try{var s,a,i,j,r,c,l,b=document.getElementsByTagName(
"script"
);l=b[b.length-1].previousSibling;a=l.getAttribute(
'data-cfemail'
);
if
(a){s=
''
;r=parseInt(a.substr(0,2),16);
for
(j=2;a.length-j;j+=2){c=parseInt(a.substr(j,2),16)^r;s+=String.fromCharCode(c);}s=document.createTextNode(s);l.parentNode.replaceChild(s,l);}}catch(e){}})();
278
/* ]]> */
279
</script>)
280
#----------------------------引用文字-结束----------------------------
五、让系统从kickstart配置启动
01
#修改disk/isolinux/isolinux.cfg文件,如下是我的一个配置文件
02
vi
isolinux/isolinux.cfg
03
#把default选项改为ks
04
#append ks initrd=initrd.img改为append ks=cdrom:/ks.cfg initrd=initrd.img
05
#----------------------------引用文字-开始----------------------------
06
default ks
07
prompt 1
08
timeout 600
09
display boot.msg
10
F1 boot.msg
11
F2 options.msg
12
F3 general.msg
13
F4 param.msg
14
F5 rescue.msg
15
label linux
16
kernel vmlinuz
17
append initrd=initrd.img
18
label text
19
kernel vmlinuz
20
append initrd=initrd.img text
21
label ks
22
kernel vmlinuz
23
append ks=cdrom:/ks.cfg initrd=initrd.img
24
label
local
25
localboot 1
26
label memtest86
27
kernel memtest
28
append -
29
#----------------------------引用文字-结束----------------------------
30
31
#CentOS 6的配置如下
32
#----------------------------引用文字-开始----------------------------
33
default ks
34
prompt 1
35
timeout 60
36
37
display boot.msg
38
39
menu background splash.jpg
40
menu title Welcome to CentOS 6.2!
41
menu color border 0
#ffffffff #00000000
42
menu color sel 7
#ffffffff #ff000000
43
menu color title 0
#ffffffff #00000000
44
menu color tabmsg 0
#ffffffff #00000000
45
menu color unsel 0
#ffffffff #00000000
46
menu color hotsel 0
#ff000000 #ffffffff
47
menu color hotkey 7
#ffffffff #ff000000
48
menu color scrollbar 0
#ffffffff #00000000
49
50
label linux
51
menu label ^Install or upgrade an existing system
52
menu default
53
kernel vmlinuz
54
append initrd=initrd.img
55
label ks
56
kernel vmlinuz
57
append ks=cdrom:/ks.cfg initrd=initrd.img
58
label vesa
59
menu label Install system with ^basic video driver
60
kernel vmlinuz
61
append initrd=initrd.img xdriver=vesa nomodeset
62
label rescue
63
menu label ^Rescue installed system
64
kernel vmlinuz
65
append initrd=initrd.img rescue
66
label
local
67
menu label Boot from ^
local
drive
68
localboot 0xffff
69
label memtest86
70
menu label ^Memory
test
71
kernel memtest
72
append -
73
#----------------------------引用文字-结束----------------------------
六、生成光盘镜像
1
mkisofs
-R -J -T -V Boot --allow-multidot --allow-leading-dots -no-bak -input-charset UTF-8 -b isolinux/isolinux.bin -c isolinux/boot.
cat
-no-emul-boot --boot-load-size 4 --boot-info-table -o /tmp/chengyongxu.com-Linux-Release-20111223-x64.iso .
2
#可以计算一下md5并保存信息
3
md5sum /tmp/Chengyonxu.com-Linux-Release-20111223-x64.iso >> /tmp/md5.txt
七、参考文档
http://bbs.linuxtone.org/thread-2448-1-1.html
http://bbs.linuxtone.org/thread-1240-1-1.html
http://hi.baidu.com/zj8la8la/blog/item/8aac2b02b8fd5b85d53f7c7c.html
- 基于CentOS制作Linux发行版光盘
- 基于CentOS制作Linux发行版光盘
- 制作Linux发行版系统光盘的方法介绍
- 基于centos4.3的linux发行版制作过程
- 基于centos4.3的linux发行版制作过程
- Linux发行版制作总结
- Linux发行光盘(红旗 5.0 SP2发行版,已不使用仅参考)
- 《Linux安装》(三)发行版制作
- Remastersys制作自己的Linux发行版
- Linux(CentOS发行版)LAMP配置
- Linux发行版《CentOS》 安装步骤
- 制作Linux安装光盘
- 制作Linux安装光盘
- 制作Linux安装光盘
- 快速构建自己的linux发行光盘
- centos 发行版安装
- 使用mondorescue将本机linux centos 7服务器制作成光盘
- Linux发行版制作过程中的各个步骤
- C# Media Player控件
- Android应用程序的安装位置(二)
- 翻译:Panda3D Manual/V. Programming with Panda/G. Intervals
- jadclipse安装笔记
- 线程池的介绍及简单实现
- 基于CentOS制作Linux发行版光盘
- 对话Linus Torvalds:大多黑客甚至连指针都未理解
- 心累
- setsockopt函数详解
- 查找计算机视觉、模式识别、图像处理领域的国际会议和会议排名
- C# Kernel32 导出函数
- Wpf 遍历系统进程 C#
- .9图片讲解
- codeforces13C