http://blogold.chinaunix.net/u/2984/showart_83185.html
2.3对安装步骤的简化
在对RPM 包的剪裁进行之前,还要对原有的安装步骤做出简化,去掉一些与系统需求大致无关的项目,使安装者可以集中精力地配置Sensor的主要参数,忽略诸如对键盘,鼠标,和多国语言的配置。具体的如下所示:
原有的安装步骤有:
1.安装语言选择
2.键盘配置
3.鼠标配置
4.欢迎信息
5.安装类型选择(包括安装或升级,安装部分又包括workstation,server,laptop,custom四种类型)
6.选择分区方式(自动分区,手动分区,专业分区)
7.选择以上部分或全部分区格式化
8.Lilo操作系统引导器配置
9.网卡及网络配置
10.防火墙配置
11.语言配置
12.时区配置
13.账户配置
14.认证配置
15.包组及单RPM包选择
16.包独立性检查
17.X-Window配置
18.安装前确认
19.安装过程
20.制作启动盘
21.安装完毕确认
在这些安装步骤中很多都是在确定了RPM包组及调试完成后不必要存在的,所以去掉第1,2,3,4,7,8,10,11,14,16,17和第20项安装步骤,所有去掉步骤的相关设置都采取默认的设置值,如第7步 采取分区全部格式化的方案,第8步,采取Lilo放置在MBR上,default boot 为Linux的设置等等,并修改第5步,去掉升级类型和安装类型中的所有4种既定类型,添加IDS sensor类型。修改完成以后的安装步骤如下所示:
1.安装类型选择(现有的为IDS sensor一种)
2.选择分区方式(自动分区,手动分区,专业分区)
3.网卡及网络配置
4.时区配置
5.账户配置
6.包组及单RPM包选择
7.安装过程
8.安装完毕确认
为此,需要修改Python脚本语言
● 在安装程序运行之初,需要先禁止掉安装语言选择,键盘配置,鼠标配置和欢迎信息,在anaconda中在判断语言是否有效之前即Line491 if lang:之前加上以下四句:
instClass.addToSkipList("language");
instClass.addToSkipList("keyboard");
instClass.addToSkipList("mouse");
instClass.addToSkipList("welcome");
并在gui.py中的类class InstallInterface的run函数中注释掉Line371至Line371,即在commonSteps结构中除保留( InstallPathWindow, "installtype" )外,注释掉( LanguageWindow, "language" ),( KeyboardWindow, "keyboard" ),( MouseWindow, "mouse" )和( WelcomeWindow, "welcome" )
●对安装类型进行精简。在installclasses目录下去掉upgrateonly.py , workstation.py , server.py , laptop.py和custom.py即去掉升级类型和安装类型中的所有4种既定类型, 添加IDS sensor类型,即在目录中添加sensor.py文件,文件的具体内容请参考附录E。
除此之外,还要修改iw/installpath_gui.py脚本文件,以便在图形界面上不显示Install和Upgrate图标和选项,只显示IDS Sensor项目。具体的,注释掉Line223,Line 227,Line 233和Line 234代码,即在类class InstallPathWindow中的getScreen函数的最后部分不执行显示。
● 去掉其他多余步骤,主要修改iw/installpath_gui.py脚本文件。注释掉类class InstallPathWindow初始化函数__init__里结构self.installSteps中的( FormatWindow, "format" ) , ( FirewallWindow, "firewall" ) , ( LanguageSupportWindow, "languagesupport" ) , ( AuthWindow, "authentication" ) , ( UnresolvedDependenciesWindow, "dependencies" ) , ( XConfigWindow, "xconfig" ) , ( BootdiskWindow, "bootdisk" ),即对应着去掉的第7,10,11,14,16,17和第20步骤。
当这三步完成后,进行make和make install,重新编译程序,使修改生效,并把这些文件Copy至stage2.img中的相关位置,替换掉旧文件。这样就完成了对安装步骤的简化。
2.4对RPM 包的剪裁
对RPM包的裁剪依这次的需求进行。项目整体分析时已做出说明,制作目的是为了在系统前端Sensor 中能够快速,正确地建立运行Snort的Linux系统环境。所以只需保留Linux基本系统和运行snort所需的环境即可。
Linux基本系统的RPM包组成在comps文件中的base部分中有详细的描述,所以就以它为蓝本,去掉除base以外的所有component,并去掉base中以下不必要的RPM包:
apmd ash autoconfig dhcpcd
dosfstools ed eject gdm
gettext gpm gruff ksymoops
lokkit mailcap mailx man
mktemp mouseconfig ncurses
openldap popt procmail pump
raidtool readline redhat-logos
redhat-release rootfiles sendmail
syslinux utemper words
在comps文件中增加IDS Sensor component并在此组中添加必要的RPM包,如snort-1.8.1就需要snort , libpcap , mysql , openssl , openssl-clients , perl等RPM包,除此之外,为了方便调试,也保留了一些用于操作和诊断的RPM包,如tcpdump , iputils , zip等,完成的comps请参考附录C。
同时,在/RPM目录中依照上面所有确认保留的RPM包名称,删除不予保留的各RPM文件(文件后缀.rpm)。此时在/base中的comps文件和在/RPM中的各rpm文件都已剪裁完成,可以利用genhdlist生成hdlist和hdlist2文件了,genhdlist 在anaconda-7.1的源代码中的utils目录里。具体生成方法见附录D。
3. 存在的问题及今后目标
此次对NetCop Linux发布的制作是以RPM包作为裁剪单元进行的,所以必然存在很大缺陷,即对RPM包的内部毫无办法,无法去掉RPM包内部对需求无用的大量文件并且无法对内核,脚本文件等做出制定修改。所以,下一步所要做的工作,是逐一打开每一个候选的RPM包,依需求对包内的每一个文件做出修改或丢弃,这样才能做出真正适合sensor的Linux发布,无疑,工作量是巨大的。
4. 原始资料及参考文献
Bootdisk-HOWTO
CDROM-HOWTO
CD-Writing-HOWTO
Distribution-HOWTO
HP-HOWTO
KickStart-HOWTO
Linux-From-Scratch-HOWTO
RedHat-CD-HOWTO
RPM-HOWTO
~nob/ml/linuxppc-jp-dev/199902/msg00150.html
阅读(803) | 评论(0) | 转发(0) |