Chinaunix首页 | 论坛 | 博客
  • 博客访问: 205403
  • 博文数量: 35
  • 博客积分: 2691
  • 博客等级: 少校
  • 技术积分: 527
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-11 09:42
文章分类

全部博文(35)

文章存档

2012年(5)

2010年(6)

2009年(2)

2008年(22)

我的朋友

分类: LINUX

2010-12-21 19:51:38

整理:姚建明

日期:2010-12-21

 

ubuntu-10.04-server-i386.iso网络安装服务器端的搭建

需要准备:一台已经装完ubuntu的机器A,源列表文件/etc/apt/sources.list已经配置完毕,上海的建议添加163的源,假设该主机A的网段为192.168.16.0/24,该主机的ip地址为192.168.16.241,以下不做说明,就假设网络安装的服务器端ip地址为192.168.16.241

需要安装的服务:dhcptftpweb

需要准备的isoubuntu-10.04-server-i386.iso

 

安装dhcp服务

apt-get install dhcp3-server

配置dhcp服务

执行

vi /etc/dhcp3/dhcpd.conf

添加以下内容

ddns-update-style none;

log-facility local7;

 

subnet 192.168.16.0 netmask 255.255.255.0 {

range 192.168.16.245 192.168.16.250;

# option domain-name-servers 8.8.8.8;

  option routers 192.168.16.1;

  option broadcast-address 192.168.16.255;

  default-lease-time 600;

  max-lease-time 7200;

  filename "pxelinux.0";

}

如果不是16网段,对照着其中的内容,修改便可,filename “pxelinux.0” 后面要用到

重启dhcp服务

/etc/init.d/dhcp3-server restart

 

挂载ubuntu iso

cd /home (假设iso放置在/home目录下)

mkdir ubuntu

mount –t iso9660 ubuntu-10.04-server-i386.iso ubuntu –o loop

 

安装tftp服务

apt-get install tftpd-hpa

配置tftp服务,添加必须的文件到tftp指定的目录

cp –r /home/ubuntu/install/netboot/* /var/lib/tftpboot

其中/var/lib/tftpboot为默认tftp服务的根目录

/home/ubuntu/install/netboot 下面拥有网络安装必须的文件,这些文件必须复制到tftp服务的根目录下

 

安装web服务

apt-get install lighttpd

web服务采用的是lighttpd程序,你也可以采用apache

默认的根目录为/var/www,你也可以通过修改配置文件来修改默认的根目录,这里我们采用默认的根目录

创建ubuntu链接

ln –s /home/ubuntu /var/www/ubuntu

如果不出意外,可以通过浏览器访问

 

至此ubuntu网络安装的服务器端搭建完毕

 

通过网络安装ubuntu系统

调整biso,将网络启动顺序调整到第一位,有一些比较老的主板不支持网络启动,那么这个机器将不能通过网络安装ubuntu,还有一些主板支持网络启动,网卡不支持pxe协议,那么也将不能通过网络安装ubuntu

将设你找到的机器支持网络安装,那么从网络启动之后,你就会熟悉的看到ubuntu的安装界面

按照提示就可以完整安装

值得注意的是,中间有一步要求输入镜像地址:

选择手动输入,输入192.168.16.241,前面不要加http

然后接着提示输入路径,输入/ubuntu即可,

proxy跳过,这样安装的时候,就会选择局域网的包

如果不出意外网络安装将会顺利完成

 

 

通过网络全自动安装ubuntu

假设ubuntu网络安装已经成功。此时我们发现安装过程中有很多的选项需要选择,如果每次网络安装都要逐个选择,会浪费很大的时间,这个时候我们就需要了解ubuntu的自动安装,ubuntu的自动安装需要预置文件

预置文件的方式有3种,一种initrd,一种文件,一种网络

initrd方式需要在根目录下面放置一个文件叫preseed.cfg

我们这里采用initrd的方式(其实个人感觉initrd的方式最简单),首先解包initrd,然后在initrd根目录下面放置一个文件preseed.cfg,然后在将initrd打包

解包initrd

cd /home

cp /var/lib/tftpboot/ubuntu-installer/i386/initrd.gz .

gunzip initrd.gz

mv initrd initrd.img

mkdir initrd

cd initrd

cpio –i <../initrd.img

 

添加全自动安装的内容

vi preseed.cfg  (该文件应在initrd目录下,后面我们要把initrd目录里的内容重新再打包)

把下面的文件内容添加进preseed.cfg文件,这个文件的取名是固定的,不能修改的(估计其实也能修改,只是我不知道,为了顺利完成任务我们就先按他的要求来吧)

# Locale sets language and country.

d-i debian-installer/locale string en_HK

 

# Keyboard selection.

d-i console-setup/ask_detect boolean false

d-i console-setup/layoutcode string us

 

# Network configuration.

d-i netcfg/choose_interface select auto

d-i netcfg/get_hostname string robot

d-i netcfg/get_domain string robot

 

#d-i netcfg/get_nameservers string 202.96.209.5

#d-i netcfg/get_ipaddress string 192.168.16.250

#d-i netcfg/get_netmask string 255.255.255.0

#d-i netcfg/get_gateway string 192.168.16.1

#d-i netcfg/confirm_static boolean true

 

# Mirror settings

d-i mirror/country string manual

d-i mirror/http/hostname string 192.168.16.241

d-i mirror/http/directory string /ubuntu

d-i mirror/http/proxy string

 

# Clock and time zone setup

d-i clock-setup/utc boolean false

d-i time/zone string Asia/Shanghai

 

# Partitioning

d-i partman-auto/method string lvm

d-i partman-lvm/device_remove_lvm boolean true

d-i partman-md/device_remove_md boolean true

d-i partman-lvm/confirm boolean true

d-i partman-auto-lvm/guided_size string max

d-i partman-auto/choose_recipe select atomic

d-i partman/confirm_write_new_label boolean true

d-i partman/choose_partition select finish

d-i partman/confirm boolean true

d-i partman/confirm_nooverwrite boolean true

 

# Base system installation

d-i base-installer/kernel/image string linux-generic

 

# Account setup

d-i passwd/root-login boolean true

d-i passwd/root-password password kayak_48

d-i passwd/root-password-again password kayak_48

d-i passwd/make-user boolean false

d-i user-setup/encrypt-home boolean false

 

# Apt setup

d-i apt-setup/use_mirror boolean false

d-i apt-setup/services-select multiselect security

d-i apt-setup/security_host string 192.168.16.241

d-i apt-setup/security_path string /ubuntu

d-i debian-installer/allow_unauthenticated string true

 

# Package selection

tasksel tasksel/first multiselect standard

d-i pkgsel/include string openssh-server vim

d-i pkgsel/upgrade select none

d-i pkgsel/language-packs multiselect en, zh

d-i pkgsel/update-policy select none

 

# Boot loader installation

d-i grub-installer/only_debian boolean true

 

# Finishing up the installation

d-i finish-install/reboot_in_progress note

然后再打包

find . | cpio -o -H newc |gzip -9 >../initrd.gz

替换网络启动的initrd

cd ..

cp initrd.gz /var/lib/tftpboot/ubuntu-installer/i386/

此时你再通过网络安装,就不会再提示手动输入,而是一步到位的安装

preseed.cfg文件中有几点需要说明

# Network configuration.

d-i netcfg/choose_interface select auto

d-i netcfg/get_hostname string unassigned-hostname

d-i netcfg/get_domain string unassigned-domain

d-i netcfg/get_nameservers string 202.96.209.5

 

#d-i netcfg/get_ipaddress string 192.168.16.250

#d-i netcfg/get_netmask string 255.255.255.0

#d-i netcfg/get_gateway string 192.168.16.1

#d-i netcfg/confirm_static boolean true

通过网络安装,静态配置是不起作用的,所以注释了

# Package selection

tasksel tasksel/first multiselect standard

d-i pkgsel/include string openssh-server vim

d-i pkgsel/upgrade select none

d-i pkgsel/language-packs multiselect en, zh

d-i pkgsel/update-policy select none

 

注意d-i pkgsel/include string openssh-server vim

这里我选择了这两个软件,主要是因为一般我们都需要用到ssh远程登录和vim编辑器

 

 

假设网络安装已经成功,但我们突然有其他的需求,比如在安装过程中需要安装一些我们自己定义的包,那么就需要我们重新定制ubuntu源和修改initrd

操作都在网络安装服务器端

所有操作都将在/var/www/ubuntu目录下

参考链接()

 

1.准备基本的目录文件distspool

我们先取消指向/home/ubuntu的链接, rm /var/www/ubuntu

创建/var/www/ubuntu目录,mkdir –p /var/www/ubuntu

cd /var/www/ubuntu

cp –rf  /home/ubuntu/dists .

cp –rf  /home/ubuntu/pool .

将光盘里的dists目录和pool目录复制到/var/www/ubuntu

 

2.创建gpg key

gpg --gen-key

按照提示一步一步操作,但是我们发现会因为随即数不够而失败,这个时候我们需要安装rng-tools

apg-get install rng-tools

安装完之后,再创建,这个时候就可以成功创建了

显示创建的key

gpg --list-key

这个时候你就会显示你创建间的key

下面是我创建的key

pub   2048R/92B92869 2010-12-15

uid                  yaojianming (test)

sub   2048R/84A3A400 2010-12-15

这个创建的key将在下面用到

 

mkdir –p /var/www/build

cd /var/www/build

apt-get install fakeroot (如果没有装,需要安装这个软件)
apt-get source ubuntu-keyring

cd ubuntu-keyring-2010.11.09/keyrings

gpg --import < ubuntu-archive-keyring.gpg (导入ubuntu官方的key)

gpg –list-key

pub   1024D/437D05B5 2004-09-12

uid   Ubuntu Archive Automatic Signing Key

sub   2048g/79164387 2004-09-12

 

pub   1024D/FBB75451 2004-12-30

uid   Ubuntu CD Image Automatic Signing Key

 

pub   2048R/92B92869 2010-12-15

uid   yaojianming (test)

sub   2048R/84A3A400 2010-12-15

gpg --export 437D05B5 FBB75451 92B92869 > ubuntu-archive-keyring.gpg

(把ubuntu官方的key和自己创建的key导入到这个文件中)

cd .. (现在在ubuntu-keyring-2010.11.09目录)
dpkg-buildpackage -rfakeroot -m"Your Name "
-k92B92869
cd .. (现在在build目录,此时你会看到后缀为debudeb的两个文件)
cp ubuntu-keyring*deb /var/www/ubuntu/pool/main/u/ubuntu-keyring
 
3.编译库

(主要统计pool目录下面的软件信息,以及创建Release文件和为Release签名,Release文件一定要签名,否则一会安装的时候会出bad mirror error

mkdir -p /var/www/ubuntu/indices /var/www/ubuntu/apt-ftparchive

cd /var/www/ubuntu/indices

接下来需要下载4个文件

override.lucid.main override.lucid.main.debian-installer
override.lucid.restricted override.lucid.restricted.debian-installer 
下载地址为
我们可以用wget逐个逐个下载,也可以写一个脚本一起下载
DIST=lucid
for SUFFIX in main main.debian-installer restricted restricted.debian-installer; do
  wget /override.$DIST.$SUFFIX
done
然后进入apt-ftparchive
创建apt-ftparchive-deb.conf apt-ftparchive-udeb.conf release.conf
3个文件
apt-ftparchive-deb.conf里的内容为
Dir {
  ArchiveDir "/var/www/ubuntu/";
};
 
TreeDefault {
  Directory "pool/";
};
 
BinDirectory "pool/main" {
  Packages "dists/lucid/main/binary-i386/Packages";
  BinOverride "/var/www/ubuntu/indices/override.lucid.main";
  ExtraOverride "/var/www/ubuntu/indices/override.lucid.extra.main";
};
 
BinDirectory "pool/restricted" {
 Packages "dists/lucid/restricted/binary-i386/Packages";
 BinOverride "/var/www/ubuntu/indices/override.lucid.restricted";
};
 
Default {
  Packages {
    Extensions ".deb";
    Compress ". gzip";
  };
};
 
Contents {
  Compress "gzip";
};
apt-ftparchive-udeb.conf里的内容为
Dir {
  ArchiveDir "/var/www/ubuntu/";
};
 
TreeDefault {
  Directory "pool/";
};
 
BinDirectory "pool/main" {
  Packages "dists/lucid/main/debian-installer/binary-i386/Packages";
  BinOverride "/var/www/ubuntu/indices/override.lucid.main.debian-installer";
};
 
BinDirectory "pool/restricted" {
  Packages "dists/lucid/restricted/debian-installer/binary-i386/Packages";
  BinOverride "/var/www/ubuntu/indices/override.lucid.restricted.debian-installer";
};
 
Default {
  Packages {
    Extensions ".udeb";
    Compress ". gzip";
  };
};
 
Contents {
  Compress "gzip";
};
release.conf的内容为
APT::FTPArchive::Release::Origin "Ubuntu";
APT::FTPArchive::Release::Label "Ubuntu";
APT::FTPArchive::Release::Suite "lucid";
APT::FTPArchive::Release::Version "10.04";
APT::FTPArchive::Release::Codename "lucid";
APT::FTPArchive::Release::Architectures "i386";
APT::FTPArchive::Release::Components "main restricted";
APT::FTPArchive::Release::Description "Ubuntu 10.04 LTS";
 
OK准备工作做好,接下来就要build库了
但是在build之前我们需要做一件事情,就是在适当的地方放置我们自己创建的deb,ubuntuhelp文档中降到将文件放到extras文件夹中,但是我测试的时候,发现还需要修改apt包,比较麻烦,为了简便,我们就将我们自己创建的包放置到restricted文件夹下
mkdir -p /var/www/ubuntu/pool/restricted
将所需要新添加的包放到这个目录下面,接下去进入build
 

所有操作都在shell下运行

BUILD=/var/www/ubuntu

APTCONF=/var/www/ubuntu/apt-ftparchive
DISTNAME=lucid
apt-ftparchive -c $APTCONF generate /var/www/ubuntu/apt-ftparchive/apt-ftparchive-deb.conf
apt-ftparchive -c $APTCONF generate /var/www/ubuntu/apt-ftparchive/apt-ftparchive-udeb.conf
apt-ftparchive -c $APTCONF release $BUILD/dists/$DISTNAME > $BUILD/dists/$DISTNAME/Release   (创建Release文件,必须的)
gpg --default-key 92B92869 --output $BUILD/dists/$DISTNAME/Release.gpg -ba $BUILD/dists/$DISTNAME/Release (这里default-key后面的key就是我们上面创建的key,这里为Release文件签名,必须的)
 
好了,到这里ubuntu局域网镜像就创建完了,记住Release文件和Release.gpg文件是一定要有的
 
此时我们再通过一台机器网络安装,就可以进行网络安装了
但是在实际执行当中,我发现跳过了bad archive mirror 后,紧接着就出现了一个错误,说不能下载
后来我想了半天,终于找到了原因,我们还需要修改initrd
cd /home/initrd
ls usr/share/keyrings
看看你看到了啥哦,对ubuntu-archive-keyring.gpg
其实我们新创建的局域网的镜像已经使用了我们自己的签名,这个地方当然也要替换调,最新的文件就是我们上面创建的
cp /var/www/ubuntu/build/ubuntu-keyring-2010.11.09/keyrings/ubuntu-archive-keyring.gpg /home/initrd/usr/share/keyrings
find . | cpio -o -H newc |gzip -9 >../initrd.gz
将新创建的initr.gz复制到tftpboot目录下
cd ..
cp initrd.gz /var/lib/tftpboot/ubuntu-installer/i386
 
OK大功搞成,ubuntu服务器版网络安装,网络全自动安装,网络自添加包全自动安装完成
为了自动安装你自己定义的包,在上面的preseed.cfg文件中有一处需要修改

d-i pkgsel/include string openssh-server vim

在后面添加你自己的包,比如叫kbis-find
 
文件:Ubuntu 10.rar
大小:17KB
下载:下载
阅读(10409) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

venux2014-11-24 15:50:38

请问为什么我安装Ubuntu的时候会出现让手动选择网卡呢?  我写的也是auto

chinaunix网友2010-12-23 14:27:57

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com