Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2918223
  • 博文数量: 471
  • 博客积分: 10012
  • 博客等级: 上将
  • 技术积分: 5255
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-10 23:58
文章分类

全部博文(471)

文章存档

2011年(3)

2010年(61)

2009年(52)

2008年(212)

2007年(69)

2006年(74)

我的朋友

分类: LINUX

2010-06-11 23:10:16

献给linux初学者:定制自己的Linux系统安装盘

这几天很多朋友问我,U盘如何定制系统,我就贴出一些文档吧,与大家一切分享

以下是在虚拟机环境下进行的。


1、在VM安装linux系统

2、安装定制工具anaconda repodata createrepo mkisofs

关联太多采用yum安装//定制过程需要产生comps.xml文件以及生成iso


[root@localhost ~]# yum -y install anaconda repodata createrepo mkisofs


3、生成packages.list 所安装的RPM包文件清单

(由于install.log文件在root目录,所以该操作在root目录进行)


[root@localhost ~]# cat install.log | grep Installing | sed 's/Installing //g' > /root/packages.list




//生成后,需要仔细看该文件,一般会在某些文件开始部分如“1:”这样的字符,需要删除这些字符,否在后面执行copy动作会报错


4、建立定制Centos的源目录

[root@localhost ~]#mkdir /Disk                          //定制时要复制RPM包的目录;
[root@localhost ~]#mkdir /mnt/cdrom                      //
加载光驱目录
[root@localhost ~]#mount -o loop /dev/cdrom
/mnt/cdrom
     //将光盘内容加载到/mnt/cdrom中;


[root@localhost ~]#cp –R /mnt/cdrom/. /Disk


切记,要把光盘中的“.discinfo”文件拷贝过来,如果没有拷贝此文件,在用光盘安装时会提示如下错误:“The CentOS CD was not found in any of your CDROM drives. Please insert the CentOS CD and press OK to retry.”


[root@localhost ~]#rm –f /Disk/CentOS/*.rpm  //先删除所有RPM


5、通过脚本复制系统安装的包

(注意一定要Unix格式)


[root@localhost ~]#vi copyrpms.sh
#!/bin/bash
DEBUG=0
DVD_CD=/disk/CentOS                     


ALL_RPMS_DIR=/mnt/cdrom/CentOS/        
DVD_RPMS_DIR=$DVD_CD
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* $DVD_RPMS_DIR/"
                cp $ALL_RPMS_DIR/$name$version* $DVD_RPMS_DIR/
                # in case the copy failed
                if [ $? -ne 0 ] ; then
                        echo "cp $ALL_RPMS_DIR/$name$version* "
                        cp $ALL_RPMS_DIR/$name* $DVD_RPMS_DIR/
                fi
        fi
        i=`expr $i + 1`
done


将以上内容保存为copyrpms.sh


[root@localhost ~]#chmod 775 copyrpms.sh
[root@localhost ~]#./copyrpms.sh


经过一系列的复制就完成了你要定制的RPM包(在/Disk/CentOS/目录下)


6、定制安装控制文件ks.cfg

ks文件主要分为三个部分


1、系统安装及配置


2、自定义安装准备(%post --nochroot


3、用户自定义安装(%post


系统安装及配置一般写在ks.cfg文件最前面,定义系统安装设置,以%post –nochroot为结束标志,接着是用户自定义安装准备部分,以“%post --nochroot”作为开始,以“%post”作为结束,


自定义安装部分以“%post”作为开始。


一般方便可以直接由root下面的anaconda-ks.cfg修改


[root@localhost ~]#cp anaconda-ks.cfg /Disk/ks.cfg


样例内容如:


# Kickstart file automatically generated by anaconda.


install (指定开始全新安装系统)


cdrom
(系统安装方式,有很多种安装方式:


光驱方式:如果是光驱,这里可直接写成cdrom


http方式安装:可以写为“url --url ”在这个访问路径下,应该是已经解压的Centos系统的所有文件和目录。


硬盘安装方式:这里要写做“harddrive --partition=sda1 --dir=/iso,其中sda1是linux镜像文件所在的硬盘标识,/iso是镜像文件所在目录。)



lang en_US.UTF-8 (系统语言设定)


keyboard us 键盘设置)


xconfig --startxonboot (设置X桌面)


#network --device eth0 --bootproto static --ip 192.168.12.133 --netmask 255.255.255.0 --gateway 192.168.12.1 (设置系统的IP地址信息,可以根据情况进行指定)


rootpw --iscrypted $1$sXpmDpgD$IOEYOpdpXtxXgw7RmjtZS/ (经过加密的root密码)


firewall –disabled (关闭防火墙)


authconfig --enableshadow --enablemd5 系统验证方式,这里启用默认md5加密)


selinux –disabled (安装系统时关闭Selinux)


timezone Asia/Shanghai(系统时区设置)


bootloader --location=mbr(引导选项)


# 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 --all
--initlabel


#part / --fstype ext3 --size=3000


#part /boot --fstype ext3 --size=100


#part /usr --fstype ext3 --size=2000


#part /var --fstype ext3 --size=2000


#part /cicro --fstype ext3 --size=100
--grow


#part swap --size=1024



clearpart --all --initlabel (全部格式化系统磁盘所有分区,下面开始进行分区设置)


part / --bytes-per-inode=4096 --fstype="ext3" --size=15000


part /boot --bytes-per-inode=4096 --fstype="ext3" --size=100


part /var --bytes-per-inode=4096 --fstype="ext3" --size=5000


part /usr --bytes-per-inode=4096 --fstype="ext3" --size=10000


part swap --bytes-per-inode=4096 --fstype="swap" --size=8096


part /cicro --bytes-per-inode=4096 --fstype="ext3" --grow --size=1



reboot(这个reboot必须写在系统分区之后)



%pre (表示安装之前执行的命令,这个是系统安装前拷贝数据,由于光盘在进行安装系统前,会首先挂载到系统的/mnt/source目录下,因而下面操作是在这个路径下)


echo "Installing CWS "


mkdir /tmp/custom_data


cp /mnt/source/cws/cws_3.5.102_Linux_fixed.tar.gz /tmp/custom_data



Linux系统安装进程在系统安装完成后,会卸载光盘,因此,象复制安装介质中的文件或 RPM 之类的任务将不能被执行。此时就需要用“%post –nochroot”选项。


可以添加系统在安装完成后要运行的命令。这一节必须位于 kickstart 文件的结尾处,而且必须以 %post 命令开头。


%post --nochroot (系统安装完成后,要运行的脚步,--nochroot表示允许你指定你想在 chroot 环境之外运行的命令



cp /tmp/custom_data/cws_3.5.102_Linux_fixed.tar.gz
/mnt/sysimage/cicro


cd /mnt/sysimage/cicro


tar zxvf
/mnt/sysimage/cicro/cws_3.5.102_Linux_fixed.tar.gz



%post(系统安装完成后,要运行的脚步,--nochroot

在root环境下进行的操作,与在真实linux系统下进行操作完全一致。此时光盘已经被系统安装程序自动卸载)



echo "Configing Hostname"


echo "HOSTNAME=webserver" >> /etc/sysconfig/network


echo "# Do not remove the following line, or various programs" > /etc/hosts


echo "# that require network functionality will fail." >> /etc/hosts


echo "127.0.0.1
localhost" >> /etc/hosts


echo "127.0.0.1
webserver" >> /etc/hosts




echo "Config OS iso88591"



echo 'LANG="en_US.iso88591" '>/etc/sysconfig/i18n


echo 'SUPPORTED="en_US.iso885915:en_US:en" '>>/etc/sysconfig/i18n


echo 'SYSFONT="lat0-sun16" '>>/etc/sysconfig/i18n


echo 'SYSFONTACM="iso15" '>>/etc/sysconfig/i18n



echo "Truning OS And Starting Services"



chkconfig --level 35 sendmail off


/cicro/cws3/bin/startdb.sh


chown -R mysql:mysql /cicro/cws3/data/db/mysql


/cicro/cws3/bin/startas.sh



%packages (系统需要安装的软件包)


/*
%packages
有两个可用选项。

--resolvedeps
安装列举的软件包,并自动解决软件包依赖关系。如果该选项没有被指定,而软件包依赖关系却存在,自动安装就会暂停并提示用户。例如:
%packages --resolvedeps
--ignoredeps
忽略未解决的依赖关系,并安装所列举的没有依赖关系的软件包。例如:
%packages --ignoredeps
--ignoremissing[1]
忽略缺少的软件包或软件包组,而不是暂停安装来向用户询问是中止还是继续安装。例如:
%packages --ignoremissing

*/


@development-libs


@editors


@gnome-software-development


@x-software-development


@gnome-desktop


@dialup


@core


@base


@legacy-software-development


@java-development


@base-x


@ruby


@kde-software-development


@development-tools


@graphical-internet


mesa-libGLU-devel


device-mapper-multipath


xorg-x11-server-Xnest


xorg-x11-server-Xvfb


imake



7、修改isolinux.cfg文件

// /Disk/isolinu/目录下的isolinux.cfg文件第一行default linux修改成default linux ks=cdrom:/ks.cfg


样例文件如:


default linux ks=cdrom:/ks.cfg


prompt 1


timeout 60


display boot.msg


F1 boot.msg


F2 options.msg


F3 general.msg


F4 param.msg


F5 rescue.msg


label linux


  kernel vmlinuz


  append initrd=initrd.img


label text


  kernel vmlinuz


  append initrd=initrd.img text


label ks


  kernel vmlinuz


  append ks initrd=initrd.img


label local


  localboot 1


label memtest86


  kernel memtest


  append -


8、生成comps.xml

[root@localhost ~]# cd /Disk/                             


[root@localhost ~]# createrepo -g repodata/comps.xml /Disk/     


到此以上定制任务已经完成。


9、制作IOS文件

[root@localhost ~]#cd /Disk/


[root@localhost disk]#mkisofs -o MyCentOS.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T /Disk/




/Disk/ 目录下产生的MyCentOS.iso 生成的ISO文件。



测试定制版本

可以测试这个iso的正确性,通过VM的iso镜像安装即可测试定制系统的正确性。



自定义启动界面
isolinux里面有三个文件和自定义安装界面有关
boot.msg是定义启动界面如何显示
isolinux.cfg决定如何处理用户的输入,并执行对应的安装过程
splash.lss是启动界面的背景图片

1 boot.msgboot.msg内容大致如下:
^L
^Xsplash.lss

-
To install or upgrade in graphical mode, press the ^O0b^O07 key.


-
To install or upgrade in text mode, type: ^O0blinux text ^O07.


-
Use the function keys listed below for more information.

^O0f[F1-Main] [F2-Options] [F3-General] [F4-Kernel] [F5-Rescue]^O07

boot.msg中的^Xctrl+X输入
^Xsplash.lss表示使用splash.lss作为启动界面的背景图片
后面就是启动时界面下的提示信息^O0f^O07之间的内容作为高亮显示。

2splash.lsssplash.lss是启动界面的背景图片,该图形文件比较特殊,只能使用14色(标准16色除去黑白两色)的原始图片来生成。


首先创建一个16色(包含黑白两色)的gif文档,名为splash.gif,还可以通过Linux下的gimp工具编辑gif图片,在gimp 图像菜单中把模式改为索引色,数量为14,因为还有黑色和白色,加在一起一共是16种颜色。修改后,保存这个gif文件。
接着将该文件转换为lss格式
#giftopnm < splash.gif | ppmtolss16 > splash.lss
此步骤也可以分为两步完成:
#giftopnm splash.pnm
#ppmtolss16 splash.lss
Giftopnm工具需要netpbm工具包。可以通过yum install netpbm*安装即可,需要安装netpbm-progsnetpbm-develnetpbm三个包。

阅读(2282) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-06-20 11:24:54

你好!博客狠棒If you are looking for nike air max 2010 and kobe shoes. I will tell you that MBT Shoes is well-known for its positive effect to human body. MBT is one technology originally, MBT Shoes clearance sale, it began in Masai which is a tribe of Eastern Africa. 回复 | 举报