分类: LINUX
2014-07-16 10:52:39
系统环境:centos 6.5 x64
虚拟机:vmwave workstatio 10.0
将centos_6.5_x64_dvd 挂载到 /media下名为CentOS_6.5_Final, 利用虚拟机挂载。
Centos 6.5 光盘内容
文件/目录名 |
作用 |
CentOS_BuildTag |
Centos 的编译标记 |
EFI |
EFI 引导的相关文件 |
EULA |
用户协议文件 |
GPL |
GPL协议文件 |
images |
目录包括了必要的启动映像文件 |
isolinux |
目录存放光盘启动时的安装界面信息 |
Packages |
目录存放安装软件包及信息 |
repodata |
|
RELEASE-NOTES-en-US.html |
发行说明(英文版) |
RPM-GPG-KEY-CentOS-6 |
Gpg key |
RPM-GPG-KEY-CentOS-Debug-6 |
Gpg key |
RPM-GPG-KEY-CentOS-Security-6 |
Gpg key |
RPM-GPG-KEY-CentOS-Testing-6 |
Gpg key |
TRANS.TBL |
光盘中所有的文件类型信息说明 |
.discinfo |
安装介质的识别信息 |
1. 建立环境
# cd //回到$HOME
# mkdir myos
# mkdir -p myos/Packages
同步光盘内的文件到 myos,Packages 目录除外
# rsync –av --exclude=Packages /media/CentOS_6.5_Final myos
安装相应的工具软件
# yum -y install anaconda-runtime createrepo yum-utils anaconda anaconda-help busybox-anaconda mkisofs
2. 获取所需的软件包
A) 将 anaconda-ks.cfg , install.log 复制到$HOME。
Centos系统安装完成以后(我这里是以先安装centos(选择mini类型)的生成文件来做),在系统里会产生日志。日文文件存放在/root/install.log。会产生kickstart 安装配置文件,此配置存放在 /root/anaconda-ks.cfg
install.log 记录本系统安装了的软件包,anaconda-ks.cfg 为系统的安装配置文件。
B) 根据install.log 复制出我们所需要的软件包
根据install.log 生成软件包列表文件
# cat install.log | grep Installing | sed 's/Installing //g' > packages.list
依据packages.list把相应的软件包从/media/CentOS_6.5_Final/Packages 复制到 ~/myos/Packages。 脚本如下:
#!/bin/bash
DEBUG=0
ALL_RPMS_DIR=/media/CentOS_6.5_Final/Packages
LT_RPMS_DIR=./myos/Packages
pkg_list=./packages.list
num_of_pkg=`cat $pkg_list | wc -l`
#echo $num_of_pkg
i=1
while [ $i -le $num_of_pkg ] ; do
line=`head -n $i $pkg_list | tail -n -1`
name=`echo $line | awk '{print $1}'`
if [ $DEBUG -eq "1" ] ; then
echo $i: $line
echo name:$name
fi
if [ $DEBUG -eq "1" ]; then
ls $ALL_RPMS_DIR/$name*
if [ $? -eq 0 ] ; then
echo "cp $ALL_RPMS_DIR/$name* "
fi
else
echo "cp $ALL_RPMS_DIR/$name* $LT_RPMS_DIR "
cp $ALL_RPMS_DIR/$name* $LT_RPMS_DIR/
if [ $? -eq 0 ] ; then
echo "cp $ALL_RPMS_DIR/$name* "
cp $ALL_RPMS_DIR/$name* $LT_RPMS_DIR/
fi
fi
i=`expr $i + 1`
done
C) 编写.cfg文件
将anaconda-ks.cfg 复制到 ~/myos/isolinux/ks.cfg
Ks.cfg 的内容如下(.cfg 的详细语法见参考 [3]):
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
#text
cdrom
#设置安装语言
#lang en_US.UTF-8
lang zh_CN.UTF-8
keyboard us
#skip the X configuration
skipx
network --onboot no --device eth0 --bootproto dhcp --noipv6
#设置root密码,此处为:centos
rootpw --iscrypted $6$q4pbJVjqD7ZmOEEq$f7C0H8gIBf3rlKXqVn0UOVfOYqYIG8kFU2yBghH5lc0uVjmU0mFTSgHe4MwZGuXvHWZOyXxhnBoIK9yIuDBt20
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Chongqing
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --linux --drives=sda
#volgroup VolGroup --pesize=4096 pv.008002
#logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200
#logvol swap --name=lv_swap --vgname=VolGroup --grow --size=1984 --maxsize=1984
#part /boot --fstype=ext4 --size=500
#part pv.008002 --grow --size=1
#clearpart --linux --drives=sda
#clearpart --all --initlabel
clearpart --all --drives=sda
#此处设置分区
part /boot --fstype=ext4 --size=300
part /home --fstype=ext4 --grow --size=3000
part /opt --fstype=ext4 --size=3000
part /var --fstype=ext4 --size=2000
part / --fstype=ext4 --size=8000
part swap --recommended
#repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100 #这句一定要注释掉不然会提示找不到名为CentOS 的有效的repo
#要安装的软件包@ 开头的为group,也可写单个包名如 vim
%packages
@core
@server-policy
@workstation-policy
%end
#%post --nochroot
#mount cdrom
#/bin/mkdir -p /mnt/cdrom
#/bin/mount -r -t iso9660 /tmp/cdrom /mnt/cdrom
#umount cdrom
#/bin/umount /mnt/cdrom
%post #这部分是安装完系统之后执行的步骤,可自定义
/bin/echo "mount -n -o remount,ro /" >> /etc/rc.local
/bin/echo "tmpfs /tmp tmpfs defaults 0 0" >> /etc/fstab
%end
#--Reboot the host after installation is done
reboot
D) 修改 isolinux.cfg
修改后的如下(主要是添加蓝色部分的语句):
default auto
#default vesamenu.c32
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.5!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label auto
kernel vmlinuz
append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img
label linux
menu label ^Install or upgrade an existing system
menu default
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 local
menu label Boot from ^local drive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
append -
3. 制作 iso 文件
A) 更新 comps.xml //如不执行此步骤会提示找不到软件包,要求插入磁盘1
# cd myos
# declare -x discinfo=`head -1 .discinfo`
# createrepo -u "media://$discinfo" -g repodata/*-comps.xml ./
Spawning worker 0 with 217 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
B) 生成制作iso
# cd myos
# mkisofs -R -J -T -r -l -d -joliet-long -allow-multidot -allow-leading-dots -no-bak -o ../myos-0.1-x86.iso \
-b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ./
附录:
一键制作脚本见 onekey 目录下的onekey.sh。onekey.zip
onekey.sh
点击(此处)折叠或打开
cprpms.sh
点击(此处)折叠或打开
参考链接:
[1]. 于CentOS 6.2制作自己的发行版-niao5929-ChinaUnix博客
http://blog.chinaunix.net/uid-20104120-id-4025146.html
[2]. 定制CentOS 6.0精简的自动安装版 - 聆听未来 - 51CTO技术博客
http://kerry.blog.51cto.com/172631/646549/
[3]. Anaconda/Kickstart - FedoraProject
[4]. 独辟蹊径网络安装系列之Redhat衍生版重构初探[09年3月刊] - 电子杂志 - 技术新知 Linux时代 - 开源、自由、共享 - 中国最大的Linux技术社区
[5]. createrepo 与 repodata 数据库
[6]. RepoCreate - yum - Trac
[7]. createrepo - Trac