量安装ubuntu系统

最近有批量安装操作系统需求,之前在测试环境中使用过如Cobbler,FAI,Kickstart,比较之后,采用PXE+Kickstart+Dnsmasq+Ubuntu10.04(64位)这个方案

镜像类型

1.desktop镜像也称作livecd,可以试用ubuntu而不改变计算机中的任何内容并可以安装的镜像 2.Alternate镜像,采用文本安装界面的镜像,有更多高级安装选项 3.DVD镜像,带有附加语言包及更多软件包的镜像 4.mini镜像,用于网络安装的最小镜像, 5.server镜像,ubuntu号称唯一内置开源云的服务器操作系统 6.Netbook,专门针对上网本进行优化的版本 7.Kubuntu(KDE桌面环境) Xubuntu(Xfce桌面环境)Lubuntu(LXDE桌面环境) Mythbuntu(媒体中心版)

如上的镜像简单的说明了ubuntu存在的镜像类型,当然还有很多的衍生版本,在这里只是想说明下,如上的批量安装方案只支持Alternate镜像

中心服务器

在中心服务器(ubuntu10.04+64,Ip,eth0:192.168.5.27,eth1:10.12.7.109)上构建Server环境,eth0为构建单独的局域网环境新建的,eth1负责外网访问需求。

(1)基本概念

  • PXE
PXE是一种操作系统的引导方式。进行PXE安装的必要条件是在要安装的计算机中必须包含一个PXE支持的网卡(NIC),即网卡中必须要有PXE Client
PXE(Pre-boot Execution Environment)协议可以使计算机通过网络启动。此协议分为Client端和Server端,而PXE Client则在网卡的ROM中
当计算机引导时,BIOS把PXE Client调入内存中执行,然后由PXE Client将放置在远端的文件通过网络下载到本地运行。运行PXE协议需要设置DHCP服务器和TFTP服务器
DHCP服务器会给PXE Client(将要安装系统的主机)分配一个IP地址,由于是给PXE Client分配IP地址,所以在配置DHCP服务器时需要增加相应的PXE设置
此外,在PXE Client的ROM中,已经存在了TFTP Client,那么它就可以通过TFTP协议到TFTP Server上下载所需的文件了
  • Kickstart
KickStart是一种无人职守安装方式,通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;
在其他机器的安装过程中当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,
当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,就需要简单的手工参与了。
  • Tftp
TFTP是一个传输文件的简单协议,它基于UDP协议而实现。此协议设计的时候是进行小文件传输的
因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据
  • Dnsmasq
Dnsmasq 提供DNS缓存和DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度
作为DHCP 服务器,dnsmasq 可以为局域网电脑提供内网ip地址和路由。DNS和DHCP两个功能可以同时或分别单独实现
dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络
在这里主要使用它和hostname的相关性,在批量安装系统时,根据ip设置系统对应的hostname

(2) 构建环境

apt-get install apache2
apt-get install system-config-kickstart
apt-get install tftpd-hpa tftp-hpa
apt-get install dhcp3-server
apt-get install dnsmasq  

1.kickstart

 在命令行中键入system-config-kickstart,根据出现的界面配置相关信息,最后保存为ks.cfg,如下是我在实验环境中使用的配置信息:

#Generated by Kickstart Configurator
#platform=AMD64 or Intel EM64T
 
#System language
lang en_US
#Language modules to install
langsupport zh_CN --default=en_US
#System keyboard
keyboard us
#System mouse
mouse
#System timezone
timezone Asia/Shanghai
#Root password
rootpw --disabled
#Initial user
user ubuntu --fullname "terrylc" --iscrypted --password $1$PX9BVIKt$3XsuJJtrDSlN4p8Q/TH3/1 #Reboot after installation
reboot
#Use text mode install
text
#Install OS instead of upgrade
install
#Use Web installation
url --url http://192.168.5.27/ubuntu #System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel
#Disk partitioning information
part /boot --fstype ext4 --size 256 part swap --size 4096 part / --fstype ext4 --size 1 --grow 
#System authorization infomation
auth  --useshadow  --enablemd5
#Network information
network --bootproto=dhcp --nameserver=192.168.5.27 --device=eth0
#Firewall configuration
firewall --disabled
#Do not configure the X Window System
skipx
%packages

@openssh-server

创建目录mkdir -p /var/www/ubuntu,将上述的ks.cfg文件保存在/var/www/ubuntu中,

2. 镜像文件

从官网下载ubuntu的iso,

mkdir /ubuntu
mount -o loop ubuntu-10.04.3-server-amd64.iso /ubuntu
cp -r /ubuntu/* /var/www/ubuntu/

3. Tftp

将iso文件中的install/netboot/下的所有文件与目录copy到/var/lib/tftpboot/

cp -r /ubuntu/install/netboot/* /var/lib/tftpboot/
chmod 755 /var/lib/tftpboot/* -R  

修改/var/lib/tftpboot/ubuntu-installer/amd64/boot-screens/text.cfg

default install
label install
    menu label ^Install
    menu default kernel ubuntu-installer/amd64/linux
    append ks=http://192.168.5.27/ubuntu/ks.cfg vga=normal initrd=ubuntu-installer/amd64/initrd.gz -- quiet  label cli
    menu label ^Command-line install
    kernel ubuntu-installer/amd64/linux
    append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=normal initrd=ubuntu-installer/amd64/initrd.gz -- quiet

4.Dhcp

vim /etc/dhcp3/dhcpd.conf

添加如下信息:
subnet 192.168.5.0 netmask 255.255.255.0 { 
 range 192.168.5.60 192.168.5.69;
 option routers 192.168.5.27;
 option domain-name-servers 192.168.5.27; default-lease-time 600;
 max-lease-time 7200;
 next-server 192.168.5.27;
 filename "pxelinux.0";
}

5.Dnsmasq

vim /etc/hosts
添加如下信息: 192.168.5.60 test1 192.168.5.61 test2 192.168.5.62 test3 192.168.5.63 test4 192.168.5.64 test5 192.168.5.65 test6 192.168.5.66 test7 192.168.5.67 test8 192.168.5.68 test9 192.168.5.69 test10

6.重启相关服务

/etc/init.d/apache2 restart
 /etc/init.d/tftpd-hpa restart
 /etc/init.d/dhcp3-server restart
/etc/init.d/dnsmasq restart 

客户端

客户端启动的时候,BIOS中开启PXE引导选项,选择从网络启动即可进行无人安装系统。

 

问题

(1)提示“Debootstrap warning http://server/ubuntu/dists/lucid/restricted/binary-amd64/Packages was corrupt” 解决办法:
root@test:~# touch /var/www/ubuntu/dists/lucid/restricted/binary-amd64/Packages
(2)configuring net 要求输入"Name server address"
解决办法:
在dhcpd.conf 中加入此参数option domain-name-servers

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值