Chinaunix首页 | 论坛 | 博客
  • 博客访问: 51227
  • 博文数量: 23
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-05 15:34
个人简介

linux c++开发

文章分类

全部博文(23)

文章存档

2013年(23)

我的朋友

分类: LINUX

2013-12-05 15:38:19

原文地址:Linux发行版制作指南(二) 作者:mxcai2005

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) |
给主人留下些什么吧!~~