http://linux.chinaunix.net/bbs/viewthread.php?tid=1061374
此文章是Linux部署方式系列文章中的第二部分,探讨开源社区的热点Debian/Ubuntu的所特有的软件源问题,以及实现网络安装方式的独特之处。所谓Debian/Ubuntu软件源就是一个应用程序安装库,很多很多的应用软件都在这个库里面。可以是网络服务器,是光盘,甚至是硬盘上的一个目录。作为Debian系的Ubuntu,继承了Debian的deb和apt系统,只要设定好软件源,就能很方便的安装软件了以及实现从网络安装Debian/Ubuntu系统本身。从实现的原理上可以将DVD/CD的介质使用dpkg、apt-move等命令工具结合本地的http、ftp服务可以实现一个本地的源,当此种方式生成的源多数能够完成软件安装工作,对于Debian/Ubuntu基于互联网的实时更新的特性就不能够很好的发挥出来,重要的一点是对从PXE引导的网络安装支持很不理想,对于维护数量众多的Debian/Ubuntu服务器来说不是很好的选择。
本文将讲述基于同步镜像Debian/Ubuntu某个版本一个官方的镜像的方式,实现一个基于局域网本地的Debian/Ubuntu源的网络安装部署Debian/Ubuntu服务器的方式,当然并不是全部镜像,故此只能实现镜像版本的网络安装,此方式已经足够满足网络安装的要求。
Debian官方站点 http://www.debian.org
Ubuntu官方站点 http://www.ubuntu.com
开始工作工作之前先了解Debian/Ubuntu发行版本的渊源,Debian的开发代号来源于电影《玩具总动员》,而脱胎于Debian的Ubuntu,其开发代号同样很有意思。除前两个版本之外,开发代号命名按字母顺序排列,在动物名之前按照双重字母再选个形容词: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 Mirror和Ubuntu releases之分,前者就是本文所说的软件源,或者就是通常所说的ISO格式的发行光盘介质。
图:浏览Debian软件源dists目录http://air.hanzubon.jp/debian/dists/
图:浏览Ubuntu源dists目录http://de.archive.ubuntu.com/ubuntu/dists/
镜像一个Debian/Ubuntu源的方式有很多,经过尝试排除了apt-mirror 、debmirror方式,选择rsync方式这个是在Debian/Ubuntus上都是适用的镜像发行版的方法。笔者在测试过程中适用的带宽仅为4MB,镜像Debian的etch发行版本用时大约是10天左右,镜像Ubuntu的intrepid版本用时大概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
|
将所需要的发行版本同步完成后,只需要在现有的apache的documentroot目录下面建立一个软连接如:ln -s /usr/src/o /var/www/html/ubuntu 就可以通过浏览器访问到本地源。当然也可以使用ftp的方式,ftp在穿越NAT以及防火墙的时候的策略问题,所以不推荐ftp模式。
以下将讲解,在windows环境测试Debian/Ubuntu网络安装过程,进行网络安装需要选择的适合的内核引导文件initrd.gz和linux ,均需要下载本地镜像的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.gz在windows系统的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 desktop、Kubuntu desktop、Edubuntu desktop、Myehuntu 、Ubuntu mobile、Ubuntu MID edition、Basic 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的开始
图:扫描镜像站点,准备下一步的软件配置
图:自动更新选项(根据网络状况选择)
图:软件选择
图:软件选择
上述两图是Debian与Ubuntu版本明显区别的地方,总体感觉Ubuntu的选择会比Debian有很多的便利。如果不使用软件源安装是看不到如此多的软件选择的。
图:软件安装过程
图:设置grub提示,选择是
图:安装Grub过程
图:设置系统时间,完成最后安装配置
图:Debian/Ubuntu安装完成
图:启动过程中的Ubuntu Logo
图:工作中的Ubuntu桌面
到此Debian/Ubuntu通过局域网本地的源进行安装的过程已经全部结束。从整个过程中看,主要问题点在于镜像的同步实现,如果没有足够的带宽这个工作就没有保障性,就会出现失败问题。如果企业使用Debian/Ubuntu作为服务器版本合理的方式就是要在局域网内部配置一个定期同步的本地源,这个方式希望对Linux用户能够有所提示和启发,欢迎就相关问题进行交流。
|