免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 31480 | 回复: 22
打印 上一主题 下一主题

漫谈Linux系统的二次定制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-28 10:01 |只看该作者 |倒序浏览
拥有一个自己的Linux系统从内核到应用程序的定制这个对于使用Linux的用户和众多的Linux玩家来说在目前的Linux发展的技术成熟度下面已经不是梦想,完全是可以通过通俗的技术条件实现;Linux从开始就逐渐的分化为针对服务器环境应用的server 版本,这个版本基本上是因命令行方式与管理员进行交互,Linux的另外的一个重要的应用环境就是Desktop版本,这个版本完全以图形化的方式与使用者进行全部的鼠标点击操作;
Linux发行版本没有提供针对具体应用或服务的功能上的定制的版本,这个是很多的Linux用户需要反复的进行相同的操作配置,而通过Linux版本的定制可以便捷的在Linux主机安装完成后就可以直接使用某个选择或者是光盘中定制的服务的全部功能 ,无需二次的干预和配置操作;
当然能够实用的到的支持 二次定制的方式,一个是基于Desktop的 remaster 操作,这个可以将全部的环境进行iso打包组装,然后释放到新的磁盘上使用;一个是基于Server版本的方式实现;
下面的问题地址是现在的这个项目的原始ideas,大家可以参考一下
http://linux.chinaunix.net/bbs/thread-1095757-1-6.html独辟蹊径网络安装系列之Redhat衍生版重构初探[09年3月刊]
定制化的版本有很强的实用性,针对特定的应用场合使用,这个定制的方向应该是很多做SA的成长的过程。目前开源社区中针对Centos的定制应用到语音、邮件、监控等多个方面。
而相对e师傅多功能服务器试用http://bbs3.chinaunix.net/thread-1503543-1-1.html 活动链接
完全可以通过定制Centos实现全部的功能,通过一张安装介质的方式在不同的机器上实现此类服务的定制安装,安装后就可以直接使用。
这个不是标题党,完全可以实现的,而且定制后的centos 可以按照到任何一个pc上面或者是服务器上面(小型机除外)

选择定制的centos 5.3的系统
整合一套完全的基于yum 源的 支持 主流的支持ShopEX网上商店系统、ECShop网上商店系统、Discuz!论坛系统、ECMall电子商城系统、Moodle在线教学平台、SupeSite门户系统、X-Space博客系统、SupeV影视博客系统、C3CRM客户关系管理、PpExam在线考试平台、UCenter HOME社会化网络(SNS)软件、UCenter用户中心、项目管理工具Collabtive 运行环境的LAMP 或者是LEMP的结构,同时可以整合好上述系统的最新版本;

对于邮件系统可以直接将那个什么iredmaill整合进去 或者是简单的机遇postfix mysql 的邮件方式做集成,放上一个webmail 的合成 或者是extmail 也是可以作为选择的;

共享上网 这个相对linux是非常简单的 建议一个iptables的脚本 使用tc 做流量控制

同时可以使用 openldap做为sso的基础

NND 这个是不是已经超乎想象了

之前的那个pa什么go的 也是如此 呵呵

上面描述的  也可以再Ubuntu中完全实现
当然可以将操作系统的 issue修改 可以定制一个内核 (这样更加的有档次 OO)

e师傅多功能服务器试用 从描述上看是没有兼顾到开发应用
通过定制centos 整合cvs cvn 可以为开发提供源码管理 整理Bugzilla 可以进行BUG跟踪
同过定制系统是现在的经济环境下 很好的选择
同时也可以实现开源的存储解决方式

Linux系统的定制既包括server 具体的应用服务的安装设置,也涵括有Desktop的使用体验的设置。

这些是目前的一些方向性的畅谈。

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
2 [报告]
发表于 2009-07-28 10:05 |只看该作者
把你的那几篇独辟蹊径的文章,都转到这里来吧,呵呵
应该对新手有很多帮助的

论坛徽章:
0
3 [报告]
发表于 2009-07-28 10:12 |只看该作者

独辟蹊径网络安装系列Redhat衍生版系列 [09年2月刊]

http://linux.chinaunix.net/bbs/viewthread.php?tid=1064413

    此文章是Linux部署方式系列文章中的第三部分,回归到主流的Redhat衍生版体系以及描述对比PXE安装服务的实现及使用Kickstart在部署主机系统是的妙用。本文涉及的内容是对现有Redhat体系的网络安装方式的一个总结,重点是在讲述PXE安装服务器的核心内容实现方式并不限于Linux环境;结合Kickstart如何快速的实现安装主机的基本信息的配置,以及如何定制主要软件包,同样灵活应用Kickstarttftp可以具体指定那台主机安装那些配置好的参数,节省管理员的时间和精力,自动安装减少了人为出错的几率。好处自然是很多,这里就不过多描述了,下面开始本文的内容。主要针对目前的RHEL5.3版本以及Centos5.2版本为例。
  首先熟悉一下PXE网络安装服务器的架构。PXE安装分为两个阶段,第一个阶段是BOOTP阶段,此阶段完全由网卡自带的PXEROM芯片所决定,Linux主机将从tftpserver上获得PXELinux启动内核和initrd.img文件;第二个阶段是在PXELinux内核启动Linux主机网络安装进程阶段,Linux主机需要和安装服务器进行网络通信,需要通过DHCP服务获得IP地址,以便获得安装脚本和获得安装文件。从下图可以看到PXE网络安装服务器包含一个DHCPTFTP主要解决主机没有操作系统的BOOTP阶段获取必要的安装信息,就是通过加载vmlinuzinitrd.img进入Linux安装的引导过程。其次就是要准备一个安装的镜像服务器并通过nfsftphttp等协议将Redhat&Centos的安装源(安装目录树)发布供安装使用,同时简单的变动一下这个安装目录树同样可以成为一个本地的yum源。重要的一点就是要提通过KickstartScript配置文件实现安装的自动化。


图:PXE网络安装服务架构
  实际上为了保持这个架构的通用性,将分别讲述在Redhat&Centos中的实现方式以及在Windows环境中的实现方式。实际上借助一些简单的工具PXE网络安装往往可以成为一个便携的方式存在。
  在Redhat&Centos中安装tftpdhcp,通过yum完成,这个对与Centos5.2非常的便利,至于在redhat中的操作,可以看后文中描述的建议的yum源的实现。
                        yum                        -y install tftp-server  #完成tftp                        server的安装
                        yum                        -y install dhcp*       #完成dhcp                        server的安装
               
  实际上PXE安装中有疑问的部分就是配置一个tftp的目录、设置dhcptftp启动参数、建立Redhat&Centos的安装目录树。要清楚这些问题先要从tftp主目录/tftpboot下的目录和文件用途说起。
                        /tftpboot/pxelinux.0                          #文件
                        /tftpboot/*.msg                               #文件
                        /tftpboot/vmlinuz                             #文件
                        /tftpboot/initrd.img                          #文件
                        /tftpboot/pxelinux.cfg                        #目录
               

Redhat&Centos安装程序的内核vmlinuz/根文件系统文件initrd.imgPXE安装过程的第一步,正确引导后将看到boot.msg*.msg中的一个)提示信息,用户选择安装方式,pxelinux.0启动镜像文件在执行过程中,会读取配置文件以确定它应该载入什么Linux内核文件来运行。所有的配置文件都放在启动服务器的/tftpboot/pxelinux.cfg/目录下。
  明白了tftpboot目录下的文件和目录的作用就要弄清楚这些文件是从那里获取的,这些文件就在已经安装好的Redhat&Centos系统和安装光盘中。为了便于获取这些文件需要建立一个安装的目录树,具体操作也是很简单的mountDVD镜像,建议使用DVD镜像当然CD镜像也是可以的,然后可以通过如下的命令复制DVD镜像上的全部的内容到安装目录树中。
                        mkdir                        /InstallOs    #建立安装目录树文件夹                        InstallOs
                        mount                        -o loop /home/CentOS-5.2-i386-bin-DVD.iso /mnt                            #centosDVD镜像mount
                        cd                        /mnt  #进入镜像加载目录
                        tar                        cf - . |(cd  /InstallOs;tar xfp -)                         #DVD镜像文件全部复制到安装目录树文件夹InstallOs
               
  下面就从安装目录树文件夹和当前的系统中获取tftpboot目录中的文件和文件夹
                        cp                        /usr/lib/syslinux/pxelinux.0 /tftpboot/    #获取                        pxelinux.0文件
                        cp                        /InstallOs/isolinux/initrd.img /tftpboot      
cp                        /InstallOs/isolinux/vmlinuz /tftpboot
cp                        /InstallOs/isolinux/*.Msg /tftpboot

mkdir                        /tftpboot/pxelinux.cfg      #
建立pxelinux.cfg目录
cp                        /InstallOs/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/
mv                        /tftpboot/pxelinux.cfg/isolinux.cfg /tftpboot/pxelinux.cfg/default
                        
                        
               
  到此已经建立了一个基础的tftpboot目录机构和一个安装目录树。基础工作结束下面进入到tftpdhcp的服务参数设置过程。具体设置参考下列配置文件:

1dhcp配置文件cat/etc/dhcpd.conf中的蓝色部分是设置支持BOOTP的参数,注意其中的filename"pxelinux.0";如果缺少这个信息逻辑将无法获取到安装程序的内核vmlinuz/根文件系统文件initrd.img;红色的部分是dhcp客户端获取的ip子网的信息,注意保持设置的subnet信息的一致性。
                        #cat                        /etc/dhcpd.conf
                        ddns-update-style                        none;
                        ddns-updates                        off;
                        deny                        client-updates;
                        one-lease-per-client                        false;
                        allow                        bootp;
                        option                        T150 code 150 = string;
                        allow                        booting;
                        class                        "pxeclients"{
                                match                        if substring(option vendor-class-identifier,0,9) = "XEClient";
                                filename                        "pxelinux.0";
                                next-server                        172.16.1.9;
                        }
                        subnet                        172.16.0.0 netmask 255.255.0.0 {
                                option                        routers                  172.16.1.9;
                                option                        subnet-mask              255.255.0.0;
                                option                        nis-domain               "telecarenet.cn";
                                option                        domain-name              "lvs.local";
                                option                        domain-name-servers      172.16.1.9;
                                option                        time-offset              -18000; # Eastern Standard Time
                                range                        dynamic-bootp 172.16.1.160  172.16.1.230;
                                default-lease-time                        21600;
                                max-lease-time                        43200;
                                #                        we want the nameserver to appear at a fixed address
                                host                        diskless {
                                        next-server                        172.16.1.9;
                                        hardware                        ethernet 00:02:b3:ee:7b:74;
                                        fixed-address                        172.16.1.210;
                                        filename                        "pxelinux.0";
                                }
                        }
               
2tftp配置文件cat/etc/xinetd.d/tftp中的蓝色部分是需要注意的,实际上tftp是一个xinetd的超级守护进程。
                        #cat                        /etc/xinetd.d/tftp
                        service                        tftp
                        {
                                socket_type                                    = dgram
                                protocol                                       = udp
                                wait                                           = yes
                                user                                           = root
                                server                                         = /usr/sbin/in.tftpd
                                server_args                                    = -s /tftpboot
                                disable                                        = no
                                per_source                                     = 11
                                cps                                            = 100 2
                                flags                                          = IPv4
                        }
               
        启动tftpdhcp服务
                        /etc/init.d/xinetd                        restart    #启动tftp服务
                        /etc/init.d/dhcpd                        restart    #启动dhcp服务
               
  下面要实现的是针对安装目录树的网络发布,简单的是使用nfs配置文件只有一行就可以了,在/etc/exports文件中增加/InstallOs  *(ro)这么一行就可以了。但为了这个安装目录树的通用性,要同时将/InstallOs文件夹作为httpdftp站点发布出去,方法是在默认安装的apachevsftp的根目录中建立一个软连接。
                        ln                        -s /InstallOs /var/www/html/InstallOS    #建立apache的软连接
                        ln                        -s /InstallOs /var/ftp/InstallOS                 #建立vsftp                           的软连接
               
  这样就可以提供nfs/ftp/http三种网络安装协议的选择。
附上一个安装目录树的扩展价值,使其成为yum
                        cd                        /InstallOS
                        rpm                        -ivh ./Server/createrepo-0.4.11-3.el5.noarch.rpm
                        createrepo                        .    #创建yum仓库                                                
                        在主机/etc/yum.repos.d/目中删除现有的文件建立一个新的yum配置文件如下
[InstallOs]
name=InstallOs
baseurl=http://
安装服务器的ip地址/InstallOS/
enabled=1
gpgcheck=0

                        执行                        yum                        clean all然后就可以使用安装目录树的yum源进行软件包的管理了
               
  上述在Linux中的实现同样可以在Windows主机中通过3comtftpd32工具和Server-u工具实现,重点是要构将tftpboot和安装目录树在Windows主机中构建一份,可以将上面已经构建的文件夹复制到Windows主机中。参见下图中的设置部分要将pxelinux.0填写到Boot File中。将Server-U建立的ftp通过Kickstart整合起来,或者通过linuxaskmethod安装参数选择。


图:tftpd32设置

ok,现在就可以进行pxe的网络引导安装,前提要设置主机使用网卡的pxe进行引导。不过现在的pxe安装服务器还不是很智能,与使用光盘手动安装一步一步的操作是一样的,创新之处就是不用更换光盘。

Kickstart的功能,其主要目的是为了减少安装过程中的人机交互,提高安装效率。使用这种方法,只需事先定义好一个配置文件(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了繁琐的人机交互,实现无人值守的自动化安装。
  在Redhat&Centos的系统中提供了system-config-kickstart工具进行脚本文件的配置,如果能够有一个已经设置好的网络、磁盘分区、安装那些软件包的Kickstart脚本文件该多好。实际上在root目录下有一个anaconda-ks.cfg文件就是当前系统安装的Kickstart文件。一般用户可以通过修改这个文件,实现多个相同配置的主机脚本化安装。对于一个Kickstart文件分为命令部分、软件包选择部分%packages、脚本部分(%pre预安装脚本和%post安装后脚本),对于Kickstart文件,命令部分的语言、安装方式、设备规格、键盘设置、引导装载程序配置这些是不能缺少的。anaconda-ks.cfg中蓝颜色不会是磁盘分区信息,此文件显示的是从CD介质进行安装,并在安装过程中设置了网络参数信息,并可以看到安装后的软件包组信息,具体是那装了那些rpm文件需要看root帐户的根文件夹下的install.log文件。
                        cat                        anaconda-ks.cfg
                        #                        Kickstart file automatically generated by anaconda.
                        #以下的内容是kickstart文件的命令部分主要设置安装方式、语言、键盘、                        引导装载程#序配置等不可缺少的信息
                        install
                        cdrom
                        lang                        en_US.UTF-8
                        keyboard                        us
                        xconfig                        --startxonboot
                        network                        --device eth0 --bootproto static --ip 192.168.1.59 --netmask                        255.255.255.0 --gateway 192.168.1.1 --nameserver 221.11.12.14                        --hostname tes
                        rootpw                        --iscrypted $1$aKhtFLuj$gn/LxPNxVXUekzLcgAnJz1
                        firewall                        --enabled --port=22:tcp
                        authconfig                        --enableshadow --enablemd5
                        selinux                        --enforcing
                        timezone                        --utc Asia/Shanghai
                        bootloader                        --location=mbr --driveorder=sda --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                        --linux --drives=sda
                        #part                        /boot --fstype ext3 --size=100 --ondisk=sda
                        #part                        pv.2 --size=0 --grow --ondisk=sda
                        #volgroup                        VolGroup00 --pesize=32768 pv.2
                        #logvol                        swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=512                        --grow --maxsize=1024
                        #logvol                        / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024                        --grow
                        
                        %packages#此部分开始是系统安装的软件包的选择部分
                        @editors
                        @text-internet
                        @gnome-desktop
                        @dialup
                        @core
                        @base
                        @base-x
                        @graphics
                        @printing
                        @graphical-internet
                        device-mapper-multipath
                        xorg-x11-server-Xnest
                        libsane-hpaio
                        -sysreport
               
        关于Kickstart配置的具体选项可以参考Redhat提供的Installation_Guide文档,其中有详细的描述和介绍。
文档Redhat网站下载地址如下:
http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/zh-CN/pdfs/Installation_Guide.pdf

文档Centos网站下载地址如下:
http://www.centos.org/docs/5/html/5.2/pdf/Installation_Guide.pdf

  上述事例中的anaconda-ks.cfg文件中没有使用%post部分脚本,故此在安装完成的系统上出IP地址信息设置完成,任何服务器上的配置都需要一步一步的操作完成,这个方式对于一个群集站点的部署来说是很不理想的。通过使用%post安装后的脚本,可以通过默认的shell脚本语法实现文件的下载、软件包的编译等工作,从而是安装后的主机可以直接投入到使用中,减少准备时间。以下是一个%post脚本事例,通过此段代码可以完成在PXE安装阶段安装heartbeat-2.1.4,当然也可以从ftp上将heartbeat-2.1.4需要的配置文件下载到指定的目录下,以节省配置时间。只要有了脚本可以完成很多想象的的事情!至于能够作什么只有管理员们自己在工作中慢慢体会了。
                        %post
                        cd                        /usr/src/                         
                        wget                        ftp://172.16.1.19/libnet.tar.gz                         
                        wget                        ftp://172.16.1.19/heartbeat-2.1.4.tar.gz                         
                        tar                        -xvf libnet.tar.gz                         
                        cd                        libnet                         
                        ./configure;make;make                        install;cd ..                         
                        tar                        -xvf heartbeat-2.1.4.tar.gz                         
                        cd                        heartbeat-2.1.4                         
                        ./ConfigureMe                        configure;make;make install;
               
  安装过程究竟要安装那些软件包合适,不能完全通过已安装系统的anaconda-ks.cfg文件获得,Redhat&Centos提供的system-config-kickstart配置工具提供了一个便捷的选择选择方式,不过限于Redhat目前的商业的授权问题,可以通过Centos对应的版本进行软件包的选择,具体如下图所示:

图:system-config-kickstart加载

图:system-config-kickstart配置软件包
  以下是一个RHEL5.3&Centos5.2的可用的软件包组的清单,可以工具自己的需要选择。其中蓝色部分为当前版本能够提供的全部的软件包组名称。
                        #platform=x86,                        AMD64, or Intel EM64T
                        #                        System authorization information
                        auth                         --useshadow  --enablemd5                         
                        #                        System bootloader configuration
                        bootloader                        --location=mbr
                        #                        Partition clearing information
                        clearpart                        --none                          
                        #                        Use graphical install
                        graphical
                        #                        Firewall configuration
                        firewall                        --enabled                           
                        #                        Run the Setup Agent on first boot
                        firstboot                        --disable
                        #                        System keyboard
                        keyboard                        us
                        #                        System language
                        lang                        en_US
                        #                        Installation logging level
                        logging                        --level=info
                        #                        Use CDROM installation media
                        cdrom
                        #                        SELinux configuration
                        selinux                        --enforcing
                        #                        System timezone
                        timezone                         America/New_York
                        #                        Install OS instead of upgrade
                        install
                        # X                        Window System configuration information
                        xconfig                         --defaultdesktop=GNOME --depth=8 --resolution=640x480
                        
                        %packages
                        @server-cfg
                        @base-x
                        @gnome-desktop
                        @ftp-server
                        @legacy-software-development
                        @development-libs
                        @base
                        @x-software-development
                        @sound-and-video
                        @mail-server
                        @network-server
                        @gnome-software-development
                        @admin-tools
                        @kde-software-development
                        @printing
                        @web-server
                        @mysql
                        @openfabrics-enterprise-distribution
                        @development-tools
                        @chinese-support
                        @java-development
                        @legacy-network-server
                        @system-tools
                        @kde-desktop
                        @legacy-software-support
                        @sql-server
                        @virtualization
                        @graphical-internet
                        @cluster-storage
                        @text-internet
                        @ruby
                        @office
                        @games
                        @dialup
                        @smb-server
                        @authoring-and-publishing
                        @graphics
                        @clustering
                        @emacs
                        @java
                        @dns-server
                        @engineering-and-scientific
                        @editors
                        @news-server
               
  当然这个system-config-kickstart配置工具并不局限于软件包的选择,可以设置一个Kickstart文件的命令、软件包选择、脚本等全部的信息。
  结合anaconda-ks.cfg安装配置文件和system-config-kickstart配置工具可以定制出特定服务器的安装ks文件,不过不同功能的服务器众多的ks配置文件该如何对用起来呢?是特定的主机可以识别相应的ks配置文件而不出现错误呢?这个就要说说位于tftpboot文件夹下的pxelinux.cfg的作用,这个pxelinux.cfg文件夹就是根据主机的MAC地址对用的配置文件名称识别具体的主机,从而实现特定主机使用相应的ks配置文件完成PXE的安装及系统的配置。
  默认PXE配置写入/tftpboot/pxelinux.cfg/default中。当计算机在PXE期间接收到DHCP地址时,就用特定顺序搜索/tftpboot/pxelinux.cfg下的配置文件,第一个找到的文件被用作请求计算机的启动配置。搜索顺序的确定方法是:优先搜索以客户端机器的网卡地址命名配置文件(以'01'开头,用'-'dash)分隔,用小写字母表示 MAC地址),并把请求DHCP地址转换成816进制数字,通过扩展子网对配置目录搜索第一个匹配的文件名(每一次搜索后从右到左删除一位数字),最后使用default这个默认的配置文件。这个是标准的解释不过是不是很麻烦还要进行一个进制转换的操作,不过计算机底层只是别这个没有办法的呀。
  例如,网卡的MAC地址是88:99:AA:BB:CCDIP地址是192.0.2.91,客户会按照如下顺序尝试配置文件名,其中IP地址为192.0.2.91,转换为十六进制数是C000025B
                        /ftfpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd                                                
                        /ftfpboot/pxelinux.cfg/C000025B                                                
                        /ftfpboot/pxelinux.cfg/C000025                                                
                        /ftfpboot/pxelinux.cfg/C00002                                                
                        /ftfpboot/pxelinux.cfg/C0000                                                
                        /ftfpboot/pxelinux.cfg/C000                                                
                        /ftfpboot/pxelinux.cfg/C00                                                
                        /ftfpboot/pxelinux.cfg/C0                                                
                        /ftfpboot/pxelinux.cfg/C                                                
                        /ftfpboot/pxelinux.cfg/default                                                
               
  所以为了优先使每台安装的主机都匹配上ks文件就需要获取主机的MAC地址并定义好网卡地址命名配置文件。
网卡的MAC地址是88:99:AA:BB:CCD的网卡地址命名配置文件01-88-99-aa-bb-cc-dd
                        cat                        01-88-99-aa-bb-cc-dd                         
                        default                        linux                         
                        label                        linux                         
                          kernel                        vmlinuz                         
                          append                        ip=192.168.1.214 netmask=255.255.255.0                        gateway=192.168.1.100                         ks=http://192.168.1.100:/InstallOs/webserver1.cfg                        initrd=initrd.img                         
               
  其中红色部分的作用对于一些较新型号的兼容网卡是很有意义的可以避免无法获取IP地址而终止安装过程的问题。
  这样的主机安装和配置过程只需要一台PXElinux安装服务器就可以解决问题,安装之前需要获知的即使主机的MAC地址,这个应该很简单,商业的服务器的说明书中都是带有网卡MAC地址说明的,当然也是可以通过其他途径获得。而且这个PXE安装服务器可以便携使用到笔记本电脑的windows环境中,之需要将配置好的ks配置文件放置在使用Serve-Uftp的目录下就可以修改pxelinux.cfg中的文件配置完成定制操作。
  本文作为系列独辟蹊径网络安装的系列文章的第三篇,希望对Linux用户能够有所提示和启发,欢迎就相关问题进行交流。

论坛徽章:
0
4 [报告]
发表于 2009-07-28 10:13 |只看该作者

独辟蹊径网络安装系列之Debian/Ubuntu[09年1月刊]

http://linux.chinaunix.net/bbs/viewthread.php?tid=1061374
此文章是Linux部署方式系列文章中的第二部分,探讨开源社区的热点Debian/Ubuntu的所特有的软件源问题,以及实现网络安装方式的独特之处。所谓Debian/Ubuntu软件源就是一个应用程序安装库,很多很多的应用软件都在这个库里面。可以是网络服务器,是光盘,甚至是硬盘上的一个目录。作为Debian系的Ubuntu,继承了Debiandebapt系统,只要设定好软件源,就能很方便的安装软件了以及实现从网络安装Debian/Ubuntu系统本身。从实现的原理上可以将DVD/CD的介质使用dpkgapt-move等命令工具结合本地的httpftp服务可以实现一个本地的源,当此种方式生成的源多数能够完成软件安装工作,对于Debian/Ubuntu基于互联网的实时更新的特性就不能够很好的发挥出来,重要的一点是对从PXE引导的网络安装支持很不理想,对于维护数量众多的Debian/Ubuntu服务器来说不是很好的选择。

本文将讲述基于同步镜像Debian/Ubuntu某个版本一个官方的镜像的方式,实现一个基于局域网本地的Debian/Ubuntu源的网络安装部署Debian/Ubuntu服务器的方式,当然并不是全部镜像,故此只能实现镜像版本的网络安装,此方式已经足够满足网络安装的要求。
Debian官方站点 http://www.debian.org
Ubuntu官方站点 http://www.ubuntu.com
开始工作工作之前先了解Debian/Ubuntu发行版本的渊源,Debian的开发代号来源于电影《玩具总动员》,而脱胎于DebianUbuntu,其开发代号同样很有意思。除前两个版本之外,开发代号命名按字母顺序排列,在动物名之前按照双重字母再选个形容词:Warty Warthog, Hoary Hedgehog, Breezy Badger, Dapper Drake, Edgy Eft, Feisty Fawn, Gutsy Gibbon, Hardy Heron.
表:Debian/Ubuntu发行版本信息,按照发行的先后顺序列出

Debian发行版
Ubuntu发行版
Debian GNU/Linux 2.0 (hamm)
Ubuntu 4.10 - Warty Warthog(长疣的疣猪)
Debian GNU/Linux 2.1 (slink)
Ubuntu 5.04 - Hoary Hedgehog(灰白的刺猬)
Debian GNU/Linux 2.2 (potato)
Ubuntu 5.10 - Breezy Badger(活泼的獾)
Debian GNU/Linux 3.0 (woody)
Ubuntu 6.06 - Dapper Drake(整洁的公鸭)
Debian GNU/Linux 3.1 (sarge)
Ubuntu 6.10 - Edgy Eft(急躁的水蜥)
Debian GNU/Linux 4.0 (etch)
Ubuntu 7.04 - Feisty Fawn(坏脾气的小鹿)
下一代 Debian 正式发行版的代号为 lenny
Ubuntu 7.10 - Gutsy Gibbon(勇敢的长臂猿)

Ubuntu 8.04 - Hardy Heron (耐寒的苍鹭)

Ubuntu 8.10 -Intrepid Ibex(无畏的北部高地山羊)

Ubuntu 9.04-Jaunty Jackalope(活泼的怀俄明野兔)

当访问Debian/Ubuntu的官方源镜像站点是会在dists/目录下看到发行版本代号的目录名称。镜像Deiban/Ubuntu的源中的某个版本也是依据此目录中的代号为依据的。
当前Debian全球镜像站点清单http://www.debian.org/mirror/list
当然Ubuntu全球镜像站点清单https://launchpad.net/ubuntu/+archivemirrors

获知这些信息对于镜像某个发行版本或者是修改系统的sources.list 都是可以自行决定的,当然建立了一个自己的源将会更加的便利。补充一下Debian/Ubuntu的镜像都有Archive MirrorUbuntu releases之分,前者就是本文所说的软件源,或者就是通常所说的ISO格式的发行光盘介质。


图:浏览Debian软件源dists目录http://air.hanzubon.jp/debian/dists/


图:浏览Ubuntudists目录http://de.archive.ubuntu.com/ubuntu/dists/

镜像一个Debian/Ubuntu源的方式有很多,经过尝试排除了apt-mirror debmirror方式,选择rsync方式这个是在Debian/Ubuntus上都是适用的镜像发行版的方法。笔者在测试过程中适用的带宽仅为4MB,镜像Debianetch发行版本用时大约是10天左右,镜像Ubuntuintrepid版本用时大概2天时间,磁盘空间都是占用非常大的,如果没有500GB的磁盘容量和大于10MB的线路连接建议还是不要轻易尝试。目前无论是Debian还是Ubuntu官方站点都没有名且说明同步某一个或几个特定版本的方式,通过rsync进行同步可以在使用的时候首先要访问进行站点的dists目录,根据该站点使用--exclude排除具体的版本,格式:--exclude=*“发行版本的代号,如intrepid”* --delete-excluded 把这个加入你的参数中即可(注意有两个星号,不能少呀)。以下是测试过的Debian/Ubuntu的同步脚步,进攻参考。
表:Ubuntu rsync同步参考脚步
#!/bin/bash
HOST=de.archive.ubuntu.com
MIRROR_ROOT='ubuntu'
LOCAL="/usr/src/o"
OPTIONS="-vzrtopglK --progress --delete --delete-excluded"
EXCLUDE="--exclude daily-installer-powerpc/ \
--exclude installer-powerpc/ \
--exclude binary-powerpc/ \
--exclude upgrade-powerpc/ \
--exclude disks-powerpc/ \
--exclude *_powerpc.udeb \
--exclude *_powerpc.deb"

rsync $OPTIONS $EXCLUDE $HOST:MIRROR_ROOT $LOCAL




表:Debian rsync同步参考脚步
#!/bin/bash
HOST=ftp.jp.debian.org
SRC='debian'
DST="/usr/src/o"
OPTIONS="-aPS --delete-during --delete-excluded"
EXCLUDE="--exclude *alpha/ --exclude *_alpha.deb --exclude Contents-alpha* \
--exclude *arm/ --exclude *_arm.deb --exclude Contents-arm* \
--exclude *hppa/ --exclude *_hppa.deb --exclude Contents-hppa* \
--exclude *ia64/ --exclude *_ia64.deb --exclude Contents-ia64* \
--exclude *m68k/ --exclude *_m68k.deb --exclude Contents-m68k* \
--exclude *mips/ --exclude *_mips.deb --exclude Contents-mips* \
--exclude *mipsel/ --exclude *_mipsel.deb --exclude Contents-mipsel* \
--exclude *powerpc/ --exclude *_powerpc.deb --exclude Contents-powerpc* \
--exclude *s390/ --exclude *_s390.deb --exclude Contents-s390* \
--exclude *sparc/ --exclude *_sparc.deb --exclude Contents-sparc* \
--exclude *sarge* --exclude *Debian3* --exclude *oldstable* \
--exclude *.iso \
--exclude *~ \
--exclude *.orig.tar.gz --exclude *.diff.gz --exclude *.dsc"
rsync $OPTIONS $EXCLUDE $HOST:SRC $DST
将所需要的发行版本同步完成后,只需要在现有的apachedocumentroot目录下面建立一个软连接如:ln -s /usr/src/o /var/www/html/ubuntu 就可以通过浏览器访问到本地源。当然也可以使用ftp的方式,ftp在穿越NAT以及防火墙的时候的策略问题,所以不推荐ftp模式。
以下将讲解,在windows环境测试Debian/Ubuntu网络安装过程,进行网络安装需要选择的适合的内核引导文件initrd.gzlinux ,均需要下载本地镜像的netboot.tar.gz
下载Ubuntu的网络引导文件http://192.168.1.1:11580/ubuntu/dists/intrepid/main/installer-i386/current/images/netboot/boot.img.gz
下载Debian的网络引导文件:http://192.168.1.1:11580 /debian/dists/etch/main/installer-i386/current/images/netboot/netboot.tar.gz
将下载的netboot.tar.gzwindows系统的C盘的根目录下面,(如果是启用PXE安装只需要将netboot.tar.gz文件解压到/tftpboot目录中,此内容将在后续文章讲解)确认系统已经安装grub for dos然后编辑menu.list内容如下:
title ubuntu intrepid net install
root (hd0,0)
kernel /linux root=/dev/ram ramdisk_size=256000 devfs=mount,dall
initrd /initrd.gz
boot
这样重新开机引导就会进入Debian/Ubuntu引导过程

图:Ubuntu intrepid net install Grub 引导选项
debian/Ubuntu版本的渊源其网络引导过程极为类似,但Ubuntu提供了更多衍生版本的安装选择如Xubuntu desktopKubuntu desktopEdubuntu desktopMyehuntu Ubuntu mobileUbuntu MID editionBasic Ubuntu Server等众多的选择。故此本文的安装过程以演示Ubuntu intrepid版本网络安装的过程为主。
在系统初始化引导结束后将进入语言选择,并开始设置安装的选项与参数。

图:语言选择,本文选择中文(简体)

图:语言选择,本文选择中国


图:语言支持提示,选择否继续图:键盘选择,时候使用自动检测键盘类型,选择否继续



图:键盘选择提示,选择USA

图:键盘选择提示,选择USA

图:网络检测,网卡识别,无DHCP,选择继续执行下部手动配置

图:网络检测,选择手动进行网络设置(这个是必须的)

图:设置IP地址及掩码信息

图:设置网关信息

图:设置DNS服务器信息

图:设置主机名称,默认为ubuntu或者debian

图:设置域名信息,如果局域网没有本地DNS默认为空
以上步骤完成了Debian/Ubuntu安装的基本设置,下一步骤就是要设置使用本地的已经建立好的软件源,进行必要安装选项设置以及必要的文件复制和系统默认配置。以上步骤使用的是网络安装的引导内核,在设置完毕软件源将会下载基本的系统到本地运行。

图:选择Debian/Ubunut安装源,选择手动输入信息

图:输入进行服务器的IP地址和端口,默认80端口无需输入

图:输入镜像目录名称,默认为/debian//ubunut/ 请将最后的/符合删除

图:设置web代理服务器信息
此步骤如果看到的信息是不全的或者是以- 、空格等符号显示,说明镜像制作的有问题,需要重新同步。设置好系统的分区后就开始网络安装过程,观察镜像服务器的网卡流量将会增长较大。

图:设置系统分区

图:分区格式化

图:安装基本系统

图:安装基本系统

图:安装基本系统

图:查看到系统安装日志信息 /var/log/syslog
在安装过程,可以通过ALT+F2切换到其它终端窗口查看系统的安装日志信息,可以通过此日志判断问题所在。日志查看命令tail -f /var/log/syslog

图:设置用户和密码,这就是有名的sudo的开始

图:扫描镜像站点,准备下一步的软件配置

图:自动更新选项(根据网络状况选择)

图:软件选择

图:软件选择
上述两图是DebianUbuntu版本明显区别的地方,总体感觉Ubuntu的选择会比Debian有很多的便利。如果不使用软件源安装是看不到如此多的软件选择的。

图:软件安装过程

图:设置grub提示,选择是

图:安装Grub过程

图:设置系统时间,完成最后安装配置

图:Debian/Ubuntu安装完成

图:启动过程中的Ubuntu Logo

图:工作中的Ubuntu桌面
到此Debian/Ubuntu通过局域网本地的源进行安装的过程已经全部结束。从整个过程中看,主要问题点在于镜像的同步实现,如果没有足够的带宽这个工作就没有保障性,就会出现失败问题。如果企业使用Debian/Ubuntu作为服务器版本合理的方式就是要在局域网内部配置一个定期同步的本地源,这个方式希望对Linux用户能够有所提示和启发,欢迎就相关问题进行交流。

论坛徽章:
0
5 [报告]
发表于 2009-07-28 10:30 |只看该作者
独立成章。
这样时间长了很容易被掩盖。

论坛徽章:
0
6 [报告]
发表于 2009-07-29 13:01 |只看该作者
现在置顶就不怕了!

论坛徽章:
0
7 [报告]
发表于 2009-08-01 09:20 |只看该作者
再支持!

论坛徽章:
0
8 [报告]
发表于 2009-08-02 18:56 |只看该作者
好文章,经过一番的试验,初步成功。功力太浅,不能深入研究

论坛徽章:
0
9 [报告]
发表于 2009-08-07 15:10 |只看该作者

回复 #1 kns1024wh 的帖子

谢谢LZ的文章,的确很好!
我在自己定制CentOS 系统的过程中碰见一个小问题,还请LZ帮忙解答一下,谢谢!

问题出在,定制系统自动分区那块.
配置ks.cfg里面自动分区.LZ的配置如下:
zerombr yes
clearpart --all --drives=sda
part /boot --fstype ext3 --size=100 --ondisk=sda
part pv.2 --size=0 --grow --ondisk=sda
volgroup VolGroup00 --pesize=32768 pv.2
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1000 --grow --maxsize=1984
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow

这里面已经指定了硬盘为sda分区,那我想问问,如果我要是IDE接口或者做了RDID的硬盘,是不是不能用了.这个地方该怎么写呢?

我自己的这段配置如下,到是所有的硬盘接口都可以,唯一不爽的是,就是"/""swap"这两个每次都装到第二块硬盘上了.
配置如下:
clearpart --all --initlabel
part /boot --fstype ext3 --size=100 --asprimary
part / --fstype ext3 --size=20000
part swap --size=4096

最终目的:如果我有两块以上的硬盘(不管啥接口),能否在自动分区的时候,固定把所有的分区分到第一块硬盘上,第二块硬盘空出来.还望LZ帮忙指点一下,谢谢!!!

论坛徽章:
0
10 [报告]
发表于 2009-08-21 08:50 |只看该作者
学习啊。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP