如何实现批量安装Linux操作系统?

简介:

一、系统的安装原理:

Linux 系统安装过程:

1
  POST ----> Bootloader(ramdisk) -----> anaconda系统安装程序

    其实,安装操作系统就是把编译好的二进制格式的操作系统导入到目标磁盘中,就要访问硬件。这就涉及到安装程序anaconda能不能驱动目标磁盘。如果,不能驱动目标磁盘的话,该应用程序是无法把文件导入到目标磁盘中的,为了解决这个问题,借助跳板----ramdisk.它就是一个小型的Linux。是位于内存中的。它就能够驱动磁盘。当然它的作用不仅仅是驱动磁盘。

     当ramdisk启动起来后,它会执行/sbin/loader加载器,然后就运行:anaconda 程序,在该程序的指引下与用户进行交互完成系统的安装操作。

      anaconda程序提供了,两种交互式的接口:

1
2
3
4
5
1、text文本交互接口
        占用内存比较小,安装系统的速度比较快。当然还取决于,你是最小化安装还是。。。
2、GUI交互接口
        CentOS 6  内存要求512M才可以启动GUI接口的。
        CentOS 7  内存要求1G才可以启动GUI接口的。

而anaconda安装操作系统过程分为两个阶段:

1、安装前的配置

       键盘类型

       安装过程中的语言:在anaconda系统安装程序的引导下,显示的语言。一般是英文。

       支持使用语言

       时区

       选择要使用的磁盘设备

       规划磁盘的使用:

                   如:根(/)是否使用LVM。/var、/home、/usr、/usr/local这些存放数据经常变化的目录是否做为单独的分区,

   分区使用的文件系统,block块大小等等

   swap分区的大小?            

       选择要安装的包

       管理员密码

2、安装阶段(anaconda安装程序就会执照前面的配置执行系统的安装操作)

       在目标磁盘创建分区、执行分区格式化

       将选定的程序包安装至目标磁盘

       安装 bootloader到目标磁盘中。

二、如何实现服务器的批量部署?

1、先实现自动化安装操作系统

    既然安装程序提供的是交互式的接口,要人工的干预才可以完成系统的安装,那么怎样实现自动化安装呢?

     如果,我们批量部署服务器的时候,还是使用ISO光盘镜像来安装操作系统的话,效率是可想而知的。anaconda很友好的为我们提供了一个功能:

      在文本的安装方式下,可以把安装前的配置做成一个ks.cfg格式的文件(使用[root@Node1 ~]# system-config-kickstart & 启动文本窗口,就可以制作ks.cfg文件了)。

在启动ramdisk的时候,把它当做参数,传递给内核。

如下如述:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@Node1 isolinux] # cat isolinux.cfg
default vesamenu.c32 
#prompt 1
timeout 600
 
display boot.msg    
 
menu background splash.jpg 
......
label linux
   menu label ^Install or upgrade an existing system
   menu default  
   kernel vmlinuz        -------> 启动内核
   append initrd=initrd.img  ks=cdrom:isolinux /ks .cfg ---------> 传递给内核的参数。

说明:

    BootLoader,根据配置文件isolinux.cfg展开内核vmlunuz,initrd.img.这就是ramdisk的启动过程。

当ramdisk启动完成后,就会执行/sbin/loader加载器,启动anaconda程序,该程序就会去读取位于cdrom:isolinux目录下的ks.cfg文件。

根据该文件自动完成安装前的配置。

    正是由于,我们可以把anaconda安装操作系统过程中的第一段:安装前的配置,做成ks.cfg文件。再不需要人工干预,anaconda

就可以按照该文件完成安装操作系统前的配置。然后直接进入安装阶段(anaconda安装程序就会按照前面的配置执行系统的安装操作)。

这样就可以,实现自动化安装操作系统了。


2、实现ks.cfg和安装源的共享。如何实现网络引导系统安装。

但是,我们批量部署服务器的时候,虽然能够实现了自动化安装操作系统,但不能解决批量的问题,意思是说,在某一时间,只能为一台服务器

安装操作系统,等到该台服务器安装完成后,才可以对下一台服务器,进行系统的安装。不过我们可以制作多个安装盘。如果,我们的安装盘是光盘的话,

则要为第一台服务器提供一个光驱,如果我们安装盘是U盘的话,则要为每一台服务器提供一个U盘。这就不能完全做到自动话部署服务器了,那我们

怎么样解决呢?

    既然,我们的系统安装盘,是独享。可以把它做成共享的方式。把ks.cfg文件和安装源(安装树install tree)放到一个公共的地方。每台服务器都可以到

该地方来获取ks.cfg文件和安装源(install tree)。

ks.cfg和安装源的位置可以是本地或网络上任何位置,只要能够获取到。那么,它们怎么定义呢?

(1)、ks.cfg 定义在BootLoader的配置文件中。

   (A)、如果安装盘是光盘的话,它的BootLoader的配置文件是:isolinux.cfg. 在append指令中,把ks.cfg文件做为参数传递给内核。

1
2
3
4
5
6
7
8
  CentOS 6 的方式:
           ks=cdrom: /directory/ks .cfg
           ks=http: //server/path/to/ks .cfg
           ks= ftp : //username :password@server /path/to/ks .cfg
   CentOS 7 的方式
           inst.ks=cdrom: /directory/ks .cfg
           inst.ks=http: //server/path/to/ks .cfg
           inst.ks= ftp : //username :password@server /path/to/ks .cfg

  (B)、如果使用网卡(支持PXE才可以)做系统引导。它的BootLoader的配置文件是:          PUB/pxelinux.cfg/default. 也是在append指令中,把ks.cfg文件做为参数传递给内核。

1
2
3
4
5
6
      CentOS 6 的方式
           ks=http: //server/path/pxelinux .cfg /ks .cfg
           ks= ftp : //username :password@server /path/pxelinux .cfg /ks .cfg 
      CentOS 7 的方式
           inst.ks=http: //server/path/pxelinux .cfg /ks .cfg
           inst.ks= ftp : //username :password@server /path/pxelinux .cfg /ks .cfg

(2)、安装源(安装树install tree)

   是在ks.cfg中指定的。

1
2
3
4
    CentOS 6 的指定方式:
       repo --name= "CentOS"  --baseurl=http: //192 .168.100.7 /centos6/  --cost=100
    CentOS 7 的指定方式:
       inst.repo --name= "CentOS"  --baseurl=http: //192 .168.100.7 /centos6/  --cost=100

虽然,通过ftp服务器,或web服务器或NFS服务器,把ks.cfg和安装源共享出去了。但是,要安装操作系统的服务器要有IP地址才有访问这些资源是最基本的条件,

但是没有安装操作系统的机器怎么配置IP地址呢?

但是还要知道共享资源的位置(共享服务器资源的IP地址)在哪,

如果知道了资溪的URL,还要把这些资源下载到本地。所以要提供下载工具下载需要的资源。这就有问题了,没有安装操作系统的机器怎么配置IP地址呢,怎么安装下载工具呢?

其实,这就使用到网卡的PXE技术。这种网卡的ROM芯片中,内置了DHCP的客户端应用程序和tftp客户端的应用程序。开机完成硬件自检BISO就会把这些客户端应用程序

调到内存中运行,只要dhcp client 能够连接DHCP服务器,从DHCP服务器中获取到地址。需要安装系统的服务器就有了地址,就满足访问共享资源的基本条件。还要知道共享资源服务器的

地址和uri才可以访问共享资源的。DHCP服务器,又帮了大忙。

DHCP服务器会告诉客户端,Bootloader所在的服务器,以及引导文件是什么?这样tftp client就知道了Bootloader的URL了。就可以下载Bootloader了。

如下就是在DHCP服务器中配置如何告诉网卡tftp的地址以及网卡做系统引导的程序bootloader叫啥。

1
2
3
4
5
[root@Node1 isolinux] # vim /etc/dhcp/dhcpd.conf
...
next-server  172.16.0.1 
filename  "pxelinux.0"
...

这时候,tftp客户端就从DHCP服务器上获得的共享资源的URL,下载Bootloader,vmlinuz和initrd.img到本地展开根据配置文件default(引导的配置文件) 

显示安装界面的菜单、在内存中完成Rardisk的启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@Node1 isolinux] # cat isolinux.cfg
default vesamenu.c32  -----> 菜单
#prompt 1
timeout 600
 
display boot.msg    
 
menu background splash.jpg -----> 背景图片
......
label linux
   menu label ^Install or upgrade an existing system
   menu default  
   kernel vmlinuz        -------> 启动内核
   append initrd=initrd.img  ks=http: //tftp_server/tftpboot/ks .cfg----> 传递给内核的参数。

当Ramdisk启动完成,就会通过/sbin/loader 启动anaconda系统安装程序,该程序就会读取ks.cfg文件,ks.cfg文件中定义有安装源(install tree)所在的

位置。这样就实现了批量给服务器安装操作系统了。







     本文转自成长的小虫 51CTO博客,原文链接:http://blog.51cto.com/9528du/1533042,如需转载请自行联系原作者

相关文章
|
5天前
|
运维 自然语言处理 NoSQL
os-copilot安装和使用体验及遇到的问题总结
OS Copilot是阿里云推出的操作系统智能助手,基于大模型技术,支持自然语言问答、命令执行和系统运维调优等功能,帮助用户更高效地使用Linux系统。本文介绍了OS Copilot的产品优势、功能特点及使用方法,包括对话模式、-t/-f/管道等参数的使用,以及安装和配置步骤。通过OS Copilot,用户可以简化复杂命令的操作,提升工作效率。同时,文中也分享了个人开发者在实际使用中的体验和建议,指出了一些有待改进的地方。
|
6天前
|
存储 弹性计算 NoSQL
os-copilot安装与多项功能测评
本文介绍了os-copilot的安装及多项功能测评。首先,通过xShell连接服务器并使用`rpm -q os-copilot`检查是否已安装,若未安装则用`yum install`命令安装。接着,配置ACCESS_KEY信息以连接阿里云服务。深入测试部分展示了-t参数用于环境健康检查、-f参数处理复杂任务、|参数解释代码等功能,还演示了编写shell脚本创建和启动Redis的便捷性。这些功能对基础运维和开发人员有较大帮助。
62 12
|
4天前
|
Oracle 关系型数据库 Linux
linux8安装oracle 11g遇到的问题记录
Oracle 11g在Linux 8上安装时会遇到link编译环节的问题。官方建议忽略安装中的链接错误,安装完成后应用DBPSU 11.2.0.4.240716补丁及一次性补丁33991024,再重新编译二进制文件,并配置监听器和数据库。但因11g已退出服务期,这些补丁需付费获取。网上信息显示22年1月的PSU补丁也可解决问题,找到该补丁后按常规方式打补丁即可。如有需求或疑问可咨询我。
36 20
|
4天前
|
弹性计算 运维 数据可视化
OS Copilot安装与多项功能测评报告
OS Copilot安装与多项功能测评报告
52 15
|
4天前
|
弹性计算 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
47 2
|
25天前
|
Linux Python
Linux 安装python3.7.6
本教程介绍在Linux系统上安装Python 3.7.6的步骤。首先使用`yum`安装依赖环境,包括zlib、openssl等开发库。接着通过`wget`下载Python 3.7.6源码包并解压。创建目标文件夹`/usr/local/python3`后,进入解压目录执行配置、编译和安装命令。最后设置软链接,使`python3`和`pip3`命令生效。
|
27天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
124 20
|
21天前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
152 7
|
28天前
|
Unix Linux 编译器
UNIX/Linux 上的安装
UNIX/Linux 上的安装。
42 2
|
7月前
|
NoSQL Java Linux
linux 安装 neo4j简介
Neo4j是高性能NoSQL图形数据库,利用图结构存储数据。推荐使用JDK 11配合Neo4j 3.x版本。下载3.5.9版,通过`curl`命令在Linux上获取tar.gz文件,然后解压。配置`neo4j.conf`,调整内存设置,开启远程访问。执行`./bin/neo4j start`启动,通过`http://服务器IP:7474`访问,默认凭据是username: neo4j, password: neo4j,登录后应更改密码。
602 1