为了自己重装系统方便,于是就制作了张自动安装光盘,现在把整个过程记录下来,以备将来查阅。
RHEL的自动安装原理其实很简单,其大致过程为: 现在下面来进一步描述整个光盘的制作过程: (一). kickstart文件 # Kickstart file automatically generated by anaconda. install cdrom key --skip lang en_US.UTF-8 keyboard us xconfig --startxonboot network --device eth0 --bootproto dhcp --hostname rhel53 rootpw --iscrypted $1$Qex91Fek$K.4waabbsrwUo4ONqhBz8/ firewall --enabled --port=22:tcp authconfig --enableshadow --enablemd5 selinux --enforcing timezone Asia/Shanghai bootloader --location=mbr --driveorder=hda --append="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 --all --drives=hda #part /boot --fstype ext3 --size=100 --ondisk=hda #part pv.6 --size=0 --grow --ondisk=hda #volgroup VolGroup00 --pesize=32768 pv.6 #logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow #logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=320 --grow #--maxsize=640 %packages @office @engineering-and-scientific @mysql @development-libs @editors @system-tools @gnome-software-development @text-internet @x-software-development @legacy-network-server @dns-server @gnome-desktop @dialup @core @authoring-and-publishing @base @ftp-server @network-server @games @legacy-software-development @java @java-development @openfabrics-enterprise-distribution @legacy-software-support @smb-server @base-x @chinese-support @graphics @web-server @ruby @printing @kde-software-development @kde-desktop @mail-server @server-cfg @sound-and-video @sql-server @admin-tools @news-server @development-tools @graphical-internet tetex-xdvi lapack lam pvm mod_auth_mysql mysql-devel qt-MySQL mysql-bench php-mysql perl-libxml-perl perl-XML-SAX tog-pegasus-devel perl-LDAP perl-Convert-ASN1 perl-DateManip perl-XML-Twig perl-XML-Grove perl-XML-Dumper python-imaging fipscheck-devel libstdc++43-devel perl-Crypt-SSLeay perl-Mozilla-LDAP perl-Archive-Zip perl-TimeDate perl-XML-NamespaceSupport emacs-nox emacs vim-X11 gnuplot-emacs nedit arpwatch adjtimex avahi-tools ktune rdesktop watchdog hwbrowser wireshark-gnome tog-pegasus lsscsi uucp dtach festival tsclient x3270 e4fsprogs gnutls-utils lslk arptables_jf am-utils uuidd createrepo mtx nmap-frontend tn5250 audit mrtg net-snmp-utils mc sblim-gather amanda-client sblim-wbemcli sysstat gnome-nettool iptraf mt-st vlock dstat libgnome-java gob2 libgtk-java libglade-java libgconf-java tftp epic lynx xorg-x11-xbitmaps mesa-libGLw-devel openmotif-devel icon-naming-utils mesa-libGLU-devel icon-slicer xorg-x11-server-sdk libXp-devel telnet-server talk-server rsh-server bootparamd rusers-server tftp-server rarpd gconf-editor gnome-bluetooth gnome-keyring-manager hal-gnome dasher tetex-xdvi keyutils openCryptoki brltty aide kexec-tools nfs4-acl-tools tpm-tools convmv iscsi-initiator-utils trousers bridge-utils authd fipscheck squashfs-tools star hardlink freeipmi x86info device-mapper-multipath hfsutils hesinfo cpufreq-utils edac-utils openswan xferstats ypserv openldap-servers-overlays openldap-servers amanda-server vnc-server quagga dhcpv6 dnsmasq radvd privoxy dhcp krb5-server freeradius gtk+ bsh-demo mvapich2 compat-dapl-static mpitests-mvapich ibsim mpitests-mvapich2 mstflint tvflash srptools qlvnictools mvapich opensm dapl-static compat-db openssl097a qt4 compat-readline43 compat-openldap compat-slang openmotif22 xorg-x11-utils xorg-x11-resutils xorg-x11-xfwp switchdesk xorg-x11-xsm xorg-x11-server-Xnest xorg-x11-xfs-utils xorg-x11-server-Xvfb bogl bogl-bterm gimp-help agg xfig libsane-hpaio gimp-data-extras gimp php-odbc tomcat5-admin-webapps php-pear mod_auth_kerb tomcat5-webapps mod_nss mod_auth_pgsql mod_auth_mysql mod_authz_ldap tomcat5 php-mysql php-pgsql eruby ruby-ri bluez-utils-cups wacomexpresskeys kdesdk-devel kdeadmin mailman postfix exim-doc exim squirrelmail cyrus-imapd cyrus-imapd-perl system-config-bind system-switch-mail-gnome system-config-boot dvgrab xcdroast mikmod postgresql-tcl unixODBC-kde qt-ODBC postgresql-contrib postgresql-pl postgresql-test libdbi-dbd-pgsql postgresql-jdbc postgresql-odbc postgresql-docs system-config-kickstart gcc43-c++ libgfortran43 dejagnu imake java-1.6.0-openjdk-devel gcc-objc ElectricFence python-docs gcc-gnat gcc43 java-1.6.0-openjdk expect gcc43-gfortran pexpect unifdef memtest86+ nasm gftp kdewebdev xchat (二). isolinux.cfg文件: default autoinstall prompt 1 timeout 50 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg label autoinstall label linux label text label ks label local label memtest86 与光盘的文件相比,主要是修改了等待时间,改为5秒(timeout 50),以及增加了三行: label autoinstall (三).生成光盘 # rm # chmod # mkisofs # cd .. # implantisomd5 implantisomd5程序,RHEL并不包含它,可以从如下地址下载译,并安装它。http://www.rocklinux.net/sources/misc/isomd5sum/
-R 参数开启Rock Ridge protocol支持。这个协议可以让iso9660支持一些linux文件系统的特
性,否则一些特殊文件名 的文件无法压制进iso镜像里面,比如说隐藏文件(不是很确定,我
这里实验是这样)。
-V 参数其实就是系统显示的光盘名,类似卷标。
-no-emul-boot 是声明这个iso为非虚拟iso(我不是很理解这个“虚拟”的意思),这样系统启动
后加载光盘不会去加载某些"虚拟光盘"方面的特性,这样有助 于提高光盘的性能(个人理
解)。
-boot-load-size no-emulation格式的iso,默认情况下一个逻辑扇区的大小是512 byte。同时,默
认情况下,系统会读取整个引导程序。如果不 指定默认读出的引导程序地址不超过4个逻辑扇
区,在一些BIOS上会出错。
-boot-info-table 如果指定这个参数,在压制iso文件的时候,会在引导程序的源文件第8个偏移
量开始打入56byte的引导信息(这个信息是干什么用的,我不知 道)。所以,请保证被引导程
序有备份。
-b 指定引导程序
-c 如果有的话,引导程序会给烧到这个文件里面指定的位置。
最后只要把iso烧录到光盘里面就可以了。
# dvdrecord ../RHEL-5.3-custom.iso
Shell自动化脚本实现
===============================
#!/bin/bash
mount -o loop /iso/RHEL6.0-20100922.1-Server-i386-DVD1.iso /mnt
TEMP_DIR=/tmp/$RANDOM
mkdir -p $TEMP_DIR
cp -rf /mnt/* $TEMP_DIR
cp -f /mnt/.discinfo $TEMP_DIR
cp -f /mnt/.treeinfo $TEMP_DIR
rm $TEMP_DIR/TRANS.TBL
chmod +w $TEMP_DIR/isolinux/*
wget http://xx.xx.xx.xx/~nzhang/cdrom/ks-rhel6-i386.cfg -O $TEMP_DIR/ks.cfg
sed -i -e 's/default vesamenu.c32/default autoinstall/' -e '/label linux/i\label autoinstall\n
mkisofs -o /boot/custom.iso -J -r -v -R -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "RHEL 6.0" $TEMP_DIR
rm -rf $TEMP_DIR
umount /mnt
(责任编辑:IT) |