




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Redhat 重构初探简介GNU/Linux开源,这个意义实在是非常的广泛,目前在distrowatch上表现活跃的300个发行版代表了GNU/Linux的主流,然而细心的Linux爱好者会发现CentOS-based distribution designed 、based on Slackware Linux、a distribution built from source software packages for Red Hat Enterprise Linux、a user-friendly Ubuntu-based distribution、an Debian-based distribution等关键词汇,目前大多数的发行版基本上都是源于Redhat、Debian/Ubuntu, Suse, Slackware等版本的衍生态,而构建Based Distribution的目的有很多,不乏有技术交流、功能完善、以及管理、更新Bug软件包等需求,同样这些Based Distribution也为Linux爱好者构建自己的Linux发行版本提供了很好的参照。本文作为独辟蹊径的系列文章,将带领大家初探基于Cenotos 5.2的Linux发行版构建方式,为进一步深入研究提供一个基础。Linux 启动过程要实现基于Centos的Linux发行版本的构建,首先需要了解一下Linux启动过程以及Linux启动文件相关的了解,同时要对Linux发行版本的光盘结构以及软件包的结构进行了解分析。从主机加电到系统服务加载运行,Linux的启动(Linux安装的过程雷同)大致需要经历如下的过程:第一阶段:加载bios的硬件信息,并获取第一个启动的设备的代号;读取第一个启动设备的mbr的引导加载程序(lilo或grub)的启动信息;加载核心操作系统的核心信息,核心开始解压缩,并且尝试驱动所有硬件设备;分析此阶段是很有价值的,即便是Linux系统的安装也需要加载内核并解压内核、加载各类外设的驱动信息,构建一个最小化的Linux的文件系统以执行第二阶段的进程。第二阶段:核心执行init程序并获取运行信息;init执行/etc/rc.d/rc.sysinit文件;启动核心的外挂模块(/etc/modprobe.conf);init执行运行的各个批处理文件(Scripts);init执行/etc/rc.d/rc.local文件;执行/bin/login程序,等待用户登陆;登陆之后开始以shell控制主机。Linux 安装程序架构通俗的一个说法,Linux的光盘安装就是在第一阶段由stage2.img 构建产生的最小化的Linux文件系统之上运行anaconda之类的安装程序,完成Linux系统的安装过程。在Linux安装过程中第二阶段就是运行anaconda并配合系统安装预设选项完成对系统安装。构建Base Centos Distribution的Linux发行版可以简单分为两种方式,第一种是通过结合Kickstart安装预配置文件对Centos系统安装的软件包并结合Kickstart的post及pre的脚本对安装的系统进行初始化的配置;第二种方式是通过添加修改stage2.img所生成的Linux文件系统达到定制内核、在安装过程添加定义的向导信息等。第一种方式实现便捷、Kickstart有X界面工具操作也相对简单,如要略去光盘中不安装不需要的软件包,并添加第三方的rpm或者tar.gz源码包,就需要深入研究repodata中的comps.xml的基于yum的软件包依赖关系的定义,并能够有基本的shell脚本的累加能力,将要安装的软件包及设置通过脚本实现。相对第二种方式的不足之处就是还是使用Centos的系统并没有对内核或其他参数做明确的发布调整,故此第二种方式就深入修改stage2.img及anaconda相关的配置实现,以达到发布独立有别于Base Centos Distribution的Linux版本。基于Cenotos的Linux发行版的目的是为了在系统中能够快速,正确地建立Linux系统环境。实现的方式以分析Centos的安装光盘为起点,在掌握对应的技巧方法,同时建立相应的测试环境。Centos 5.2 光盘架构以centos 5.2的DVD介质为例,光盘中包含的主要与定制相关的目录如下:isolinux目录存放光盘启动时的安装界面信息repodata目录是与RPM包安装相关的依赖信息images目录包括了必要启动映像文件CentOS目录存放安装软件包信息.discinfo文件是安装介质的识别信息,此文件不可缺少。下面将重点剖析一下images与isolinux的目录中的文件及其作用,相对Centos与repodata的目录在深度定制时的意义要大得多。images文件夹包含了引导启动的映像文件,主要的为boot.iso文件其中包含信息如下:|-vmlinuz Linux内核 |-ldlinux.sys 引导Linux的系统文件 |-syslinux.cfg Linux内核引导参数配置文件 |-initrd.img 内存虚拟文件系统映像文件 |-*.msg文件 引导时的各种提示信息文件 其中,initrd.img为Linux ext2文件系统,构成如下: initrd.img |-/bin |-/dev |-/etc |-/module |-/sbin - loader 安装程序装载器 |-/tmp |-/var 可执行文件/sbin/loader的任务是判断安装介质的有效性,并从中执行安装程序。在系统启动时被执行后在内存建立起了Linux内核,并根据配置文件syslinux.cfg装载虚拟文件系统,形成了完整的Linux 系统,为后续的工作提供了必要的操作系统环境。可以通过如下命令查看boot.iso中的文件:#mount -o loop boot.iso /mnt#cd /mnt# tree.|- TRANS.TBL- isolinux|- TRANS.TBL|- boot.cat|- boot.msg|- general.msg|- initrd.img|- isolinux.bin|- isolinux.cfg|- memtest|- options.msg|- param.msg|- rescue.msg|- splash.lss- vmlinuzimages文件夹的stage2.img 是当安装介质为CD-ROM时的安装程序映像文件。这里主要讨论stage2.img的内容 stage2.img |-/etc |-/modules |-/proc |-/usr-/bin-anaconda 安装程序主执行文件 | |-/lib-/anaconda 安装程序脚本文件目录 | |-/installclasses | |-/iw | |-/texttw | |-*.py | |-/share-/anaconda 安装程序资源文件目录 | |-/help | |-/pixmaps 安装引导图形资源目录,包括安装过程中使用到的所有位图,图标,可以通过GMIP等工具修改stage2.img映像文件中的主要部分是安装程序anaconda,它的主执行体是/usr/bin下的anaconda,由其调用的大量例程分布在/usr/lib/anaconda下,而安装过程中要用到的资源文件分布在/usr/share/anaconda下。可以通过执行如下命令具体查看stage2.img中的内容:#mount -o loop -t squashfs stage2.img /mnt#cd /mnt#lsetc lib modules proc usr var顺带说一下anaconda安装程序,主要用Python语言写成,它是一种解释性的,面向对象的脚本语言,在其源码目录中有很多py的文件就是。要全面完成基于Centos的Linux发行版,使用和学习shell、Python是很有必要的,:-Danaconda|-/bootdisk 启动盘目录|-/docs 文档目录|-/help 安装过程帮助系统目录|-/installclasses 安装类型分类目录,常由四个文件workstation.py , server.py , laptop.py和custom.py来描述workstation(工作站)安装类型,server(服务器)安装类型,laptop(膝上型电脑)安装类型和custom(自定义)安装类型。|-/iw 安装各步骤响应目录,子目录中各文件定义了在图形界面安装状态时各步骤对Next和Prev的响应函数。 |-/loader 安装程序装载器目录|-/pixmap 图形资源目录,包括安装过程中使用到的所有位图,图标。|-/utils 安装程序实用工具目录|-*.py 各Python脚本文件 基于Centos的Linux发行版构建流程定制centos linux 发行版本实例(confernce安装盘)通过上面的内容分析,接下来具体定制一个基于Centos的Linux发行版本的实践过程,并通过脚本安装Infowarelab conference。第一步:导入yum原验证密码信息导入Centos yum源的验证密码信息,并安装必要的软件包#rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY*#yum -y install anaconda anaconda-runtime #yum -y install createrepo第二步:复制镜像到硬盘将Centos DVD光盘镜像文件复制到硬盘Centos5制作目录中#mkdir /CentOS5#mount -o loop /home/CentOS-5.2-i386-bin-DVD.iso /mnt#cp -ar /mnt/* . 操作结束需要检查.discinfo是否复制#tar -cf - .|(cd /CentOS5; tar -xvpf -)第三步:根据install.log生成comps.xml依据完整的安装日志 /root/install.log记录的软件包信息,结合shell脚本将rpm软件包复制到构建目录CentOS中,通过createrepo 生成comps.xml。根据目标主机的install.log文件生成package.list软件包清单#cat install.log | grep Installing | sed s/Installing /g packages.list第四步:生成rpm目录,复制rpm软件包建立RPM目录,临时存放复制需要rpm软件包,#mkdir /RPMcprpm.sh脚本清单cat cprpm.sh#!/bin/bashDEBUG=0DVD_CD=/mntALL_RPMS_DIR=/mnt/CentOSDVD_RPMS_DIR=/RPMpackages_list=/root/packages.listnumber_of_packages=cat $packages_list | wc -li=1while $i -le $number_of_packages ; doline=head -n $i $packages_list | tail -n -1name=echo $line | awk print $1version=echo $line | awk print $3 | cut -f 2 -d :if $DEBUG -eq 1 ; thenecho $i: $lineecho $nameecho $versionfiif $DEBUG -eq 1 ; thenls $ALL_RPMS_DIR/$name-$version*if $? -ne 0 ; thenecho cp $ALL_RPMS_DIR/$name-$version* fielseecho cp $ALL_RPMS_DIR/$name-$version* $DVD_RPMS_DIR/cp $ALL_RPMS_DIR/$name-$version* $DVD_RPMS_DIR/# in case the copy failedif $? -ne 0 ; thenecho cp $ALL_RPMS_DIR/$name-$version* cp $ALL_RPMS_DIR/$name* $DVD_RPMS_DIR/fifii=expr $i + 1done执行脚本将目标系统必要的rpm复制到/Centos5/CentOS目录#rm -rf /CentOS5/CentOS#cp -a /myRPM/* /CentOS5/CentOS返回到/CentOS5 目录下,执行createrepo程序生成repodata下的comps.xml文件 #cd /CentOS5#createrepo -g repodata/comps.xml .第五步:kickstart使用Kickstart,创建一个包含自动应答信息的典型的安装配置脚本。结合使用Kickstart文件中的%post安装后的脚本,可以通过默认的shell脚本语法实现文件的下载、软件包的编译等工作,进一步达到发布定制的需求。建立Kickstart文件并命名为ks.cfg# Kickstart file automatically generated by anaconda.lang en_USlangsupport zh_CN -default=en_USkeyboard usmousetimezone -utc GMTrootpw apowerofftextinstallcdrombootloader -location=mbrzerombr yesclearpart -allpart /boot -fstype ext3 -size 100 -asprimarypart / -fstype ext3 -size 10480 -asprimarypart swap -size 2048 -asprimarypart /ericsson -fstype ext3 -grow -size 1 -asprimaryauth -useshadow -enablemd5network -bootproto=static -ip=192.168.1.1 -netmask=255.255.255.0 -gateway=192.168.1.1 -nameserver=192.168.1.1 -device=eth0 -hostname localhost.localdomainfirewall -disabledselinux -disabledskipx#Package install information%packages -ignoredeps -ignoremissing development-tools legacy-software-development chinese-supportelinksemacsexpectiptrafnmapntpscreensysstatnet-snmpnet-snmp-libsnet-snmp-utilsvim-enhanced%post -log=/root/install-post.log/bin/mount /dev/cdrom /media/bin/sh /media/Conference/ConferenceInstall.sh/usr/bin/ejectsleep 1将confernce安装程序aConferenceinstall.sh放入光盘的conference目录,#!/bin/bash#author : King.huang#Version : box3.2-ericsson#Date : 2010-04-06# -f /etc/profile & . /etc/profile -f /.bashrc & . /.bashrcBASEDIR=dirname $0OPENSSL=$BASEDIR/pkts/openssl-0.9.7g.x86_64.tar.bz2APR=$BASEDIR/pkts/apr-1.2.7-x86_64.tar.bz2APPDIR=$BASEDIR/application.zipUPDATEIP=$BASEDIR/scripts/ip.shSCRIPT=$BASEDIR/scriptsPATCH=$BASEDIR/patch#step 1: unzip app package,copy scripts, set exec permission#unzip $APPDIR -d / /root/.install_unzip 2&1rsync -av $PATCH/getlicense.sh /ericsson/webconsole/local/rt/chmod +x /ericsson/webconsole/local/rt/getlicense.shchmod -R +x /ericsson/webconsole/*chmod -R +x /ericsson/conference/*chmod -R +x /ericsson/scripts/*#step 2: unzip sys package;#rpm -qa | grep openssl-devel | grep 0.9.7g | rpm -e -nodeps openssl-devel -d /usr/local/openssl & rm -rf /usr/local/openssltar -jxvf $OPENSSL -C / -d /usr/local/apr & rm -rf /usr/local/aprtar -jxvf $APR -C / -f /lib64/libssl.so.0.9.7 & rm -f libssl.so.0.9.7ln -s /usr/local/openssl/lib/libssl.so.0.9.7 /lib64 -f /lib64/libcrypto.so.0.9.7 & rm -f /lib/libcrypto.so.0.9.7ln -s /usr/local/openssl/lib/libcrypto.so.0.9.7 /lib64#update cronolog#rsync -av $BASEDIR/pkts/crono* /usr/local/sbinchmod +4755 /usr/local/sbin/crono*rsync -av $BASEDIR/pkts/boxcron /etc/cron.d/#add user for mysql#groupadd mysql & useradd -g mysql mysqlrpm -ivh $BASEDIR/pkts/mysql-libs-5.0.68-1.el4_6.x86_64.rpm#install sun kernerpm -ivh $BASEDIR/pkts/sun-pci-e-gigabit-kernel-7.6.5.1-1.src.rpmcd /usr/src/redhat/SOURCES/tar zxf sun-pci-e-gigabit-kernel-7.6.5.1.tar.gzcd sun-pci-e-gigabit-kernel-7.6.5.1/srcmakemake installcd - /dev/null#install usbdaemon#interfacersync -av $BASEDIR/interface/libboxmenu.so /lib64rsync -av $BASEDIR/interface/mingetty /sbin/rsync -av $BASEDIR/interface/login /bin/cat /root/.bashrc/dev/null 2&1; thencd /ericsson/interface/ & ./menu_gencdfialias vi=vimEOF ! -d /root/.ssh/ & mkdir -p /root/.sshrsync -av $BASEDIR/pkts/id_dsa* /root/.ssh/chmod 600 /root/.ssh/id_dsachmod 644 /root/.ssh/id_dsa.pubcat /root/.ssh/id_dsa.pub /root/.ssh/authorized_keyscat /root/.bashrc/etc/hosts/etc/profile/usr/bin/boxmenu/dev/null 2/tmp/err.log /usr/bin/make #/dev/null 2/tmp/err.log /usr/bin/make install #/dev/null 2/tmp/err.log cd -/dev/nulldone#add version file #add version file mkdir -p /ericsson/.versionrsync -av $BASEDIR/version /ericsson/.version/versionchmod 644 /ericsson/apache2/conf/passwd/passwords#copy file siteinfo.txtrsync -av $BASEDIR/config_file/siteinfo.txt /root#set open filesecho fs.file-max=10240 /etc/sysctl.confecho * - nofile 10240 /etc/security/limits.conf#install grub image -f /boot/grub/splash.xpm.gz & rm -f /boot/grub/splash.xpm.gzrsync -av $BASEDIR/pkts/splash.xpm.gz /boot/grub#finish#第六步:isolinux.cfg将ks.cfg添加进入到isolinux.cfg,已实现定制的Kickstart脚本能够被正确的执行。default allprompt 1#timeout 600display boot.msg#F1 boot.msg#F2 options.msg#F3 general.msg#F4 param.msg#F5 rescue.msg#F7 snake.msglabel all kernel vmlinuz append ks=cdrom:/ks.cfg initrd=initrd.img ramdisk_size=8192label linux kernel vmlinuz append initrd=initrd.img ramdisk_size=8192label text kernel vmlinuz append initrd=initrd.img text ramdisk_size=8192label expert kernel vmlinuz append expert initrd=initrd.img ramdisk_size=8192label lowres kernel vmlinuz append initrd=initrd.img lowres ramdisk_size=8192label local localboot 1label memtest86 kernel memtest append -第七步:定制开机启动界面方式启动画面用的是一种比较奇怪的格式lss16,它限制图片使用16种颜色,除去前景和背景色只能有14种颜色。我们需要ppmtolss16 giftopnm等程序,系统一般默认都安装了。一般用gimp生成一个index模式的gif图形,颜色限制为14, 然后通过如下的办法进行转:安装yum -y inst
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年项目协调员面试技巧与实战模拟题
- 武汉商学院《智能应用技术》2024-2025学年第一学期期末试卷
- 巴中职业技术学院《群论基础》2024-2025学年第一学期期末试卷
- 广东创新科技职业学院《无线互联网技术》2024-2025学年第一学期期末试卷
- 家具导购理论知识培训总结
- 江海职业技术学院《计量经济及Stata应用》2024-2025学年第一学期期末试卷
- 2025年市场营销招聘考试必-备知识点梳理
- 辽东学院《大学计算机文化基础》2024-2025学年第一学期期末试卷
- 2025年英语听说读写能力提高技巧及模拟试题集
- 2025年外贸业务员面试必-备问题与答案解析
- 核心素养背景下的小学音乐课“大单元教学设计”方法分析
- GB/T 2423.17-1993电工电子产品基本环境试验规程试验Ka:盐雾试验方法
- GB/T 10228-2015干式电力变压器技术参数和要求
- 染色打样的步骤
- FZ/T 07014-2021绿色设计产品评价技术规范聚酯涤纶
- 新型敷料的特性及选择
- 膝关节体格检查专家讲座
- 江苏城市规划收费标准
- 花生膜下滴灌技术
- 第4章 动车组车体检修动车组维护与检修
- 某某公司省长市长质量奖申报自述材料
评论
0/150
提交评论