Centos 安装

Centos安装
◆ Centos安装的理解:

引导程序--->引导vmlinuz,initrd.img两个文件,启动一个小型的linux系统--->启动安装程序
--->安装程序根据用户选择或者ks文件查找安装源--->安装源就是一个yum仓库

◆ 光盘直接安装
略过

◆ pxe启动的本质

支持pxe启动的网卡,芯片中集成了一个tftp客户端,当客户机通过dhcp服务器取得ip的同时
    取得一个tftp服务器ip,和一个pxe引导文件名,获取ip成功后,通过tftp-server取得
    pxe引导文件,再加载tftp服务器上的菜单,内核...

◆ 安装源的问题

1. 可以在图形安装界面中安装源位置手动指定
2. 可以在安装启动菜单位置
    按esc,再使用加参数指定
    boot:linux ip=192.168.2.44 netmask=255.255.255.0 inst.repo=ftp://192.168.2.254/
    注:  其中linux是启动菜单的第一项(包含了: kernel,initrd等)
        Centos6,7的选项有所不同可参考:Red_Hat_Enterprise_Linux-7-Installation_Guide-en-US.pdf
        在 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/
        中页面找相应的版本,再找Installation Guide就是其安装说明"Boot Options"为安装选项

◆ ks自动应答文件 (更多的使用是在pxe网启环境中使用)

1.文件的来源
    1.1 正常安装一次后,在/root目录下会自动生成一个anaconda-ks.cfg文件就是自动应答文件,
        可在这个基础上修改,主要在安装源上,网络安装为:url --url="ftp://192.168.2.99/"
    1.2 在系统上安装system-config-kickstart程序可图形化生成ks文件,需桌面环境
            在Centos7上需要一个[development]的yum源,否则不能选安装包

2.文件的使用
    2.1 在安装中要手到指定
        boot:linux ip=192.168.2.44 netmask=255.255.255.0 inst.ks=ftp://192.168.2.254/ks.cfg
    2.2 windows作为服务器,使用
        windows下使用 "TinyPXE网启" 可在配置菜单中加入选项,来启动自动安装
            item Centos               Install Centos 7 
            :Centos
            kernel ${xieyi}://${next-server}/boot/vmlinuz inst.ks=${xieyi}://${next-server}/boot/ks.cfg
            initrd ${xieyi}://${next-server}/boot/initrd.img
            boot || goto retry
            goto start
        注: TinyPXE文件夹下 boot/的vmlinuz,initrd.img要使用相应的版本,不然可能会出问题
    2.3 linux作为服务器,使用
        dhcp tftp 
        pxe启动需要tftp的支持
        过程
        dhcp server   <-------udp           ---------       client
        dhcp server   --------IP & TFTP     -------->       client
        tftp server   <-------UDP           ---------       client
        tftp server   --------pexlinux.0    -------->       client
        tftp server   <-------UDP           ---------       client
        tftp server   --------kernel and initrd----->       client
ftp nfs http server   <-------tcp           ---------       client
ftp nfs http server   --------ks.cfg &yum repo------>       client




3.ks文件的正确性
    # ksvalidator

◆ 网络安装中的注意事项:

安装Centos7时1G内存会导致安装失败
如果网络中有dhcp服务器可以不写 ip=,让电脑自动获取

◆ windows作为服务器 注意事项:

*   关于windows下安装ftp服务,使用 "Serv-U" 有做服务器,一些简单的ftp服务器软件不能正常使用
*   如果不想把整个光驱都解压到硬盘上可使用虚拟光驱挂载iso文件,但是>>>windows下的挂载有问题<<<<
        表现: 挂载后光盘目录下的 repodata 目录下的元数据文件后缀会丢失,
              本来的.gz,.xz文件会变为无后缀,安装程序和yum都会无法获取元数据,失败
===========================================================================================
解决方法:   
 建一个目录Centos,
    使用rar等软件将 iso 文件中的 repodata 目录解压到Centos目录下
    再用虚拟光驱软件挂载iso文件
    cd /d 到Centos目录下
    mklink /j Packages i:\Packages(i:为虚拟光驱的盘符)
    再使用这个Centos目录来使用安装源就OK了
===========================================================================================

系统光盘中isolinux目录列表

boot.msg:       打印启动信息(文本)
boot.cat:       光盘的mbr
isolinux.bin:   光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目(相当于stage2)
isolinux.cfg:   isolinux.bin的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件
vesamenu.c32:   是光盘启动后的安装图形界面,也属于SYSLINUX项目,menu.c32版本是纯文本的菜单
Memtest:        内存检测,这是一个独立的程序
splash.jgp:     光盘启动界面的背景图
vmlinuz         是内核映像
initrd.img      是ramfs(先cpio,再gzip压缩)
◆制作一个有定制菜单的安装光盘(可集成安装源,可不集成)
    1.  mddir myiso
    2.  cp -r /misc/cd/isolinux/ /data/myiso/ (将整个isolinux文件夹拷到目录下)
    3.  将应答文件放入myiso目录下myiso/ksdir/ks.cfg
    4.  修改菜单,isolinux.cfg
            1abel mini 
                menu labelInstall a ^mini system 
                kernel vmlinuz 
                append initrd=initrd.img ks=cdrom:/ksdir/ks.cfg

    5.  
 mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 ×86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /data/myiso/
         -b isolinux/isolinux.bin: 是相对路径,相对于/data/myiso/

    
    6.  制作成为U盘linux下:
        yum install syslinux
        isohybrid boot.iso # 需要转换一个boot.iso文件
        dd if=boot.iso of=/dev/sdc/(u盘)
    mkisofs相关说明:
        ◆-o 指定映像文件的名称。
        ◆-b 指定在制作可开机光盘时所需的开机映像文件。
        ◆-c 制作可开机光盘时,会将开机映像文件中的no-eltorito-catalog 全部内容作成一个文件。
        ◆-no-emul-boot 非模拟模式启动。
        ◆-boot-load-size 4 设置载入部分的数量
        ◆-boot-info-table 在启动的图像中现实信息
        ◆-R 或-rock 使用Rock RidgeExtensions
        ◆-J 或-joliet 使用Joliet格式的目录与文件名称
        ◆-v 或-verbose执行时显示详细的信息
        ◆-T 或-translation-table 建立文件名的转换表,适用于不支持Rock Ridge Extensions的系统上

    6.
    7.





◆对比两个文件(使用hash来对比两个文件是否一样)

md5sum /cdrom/.discinfo /data/myiso/.discinfo

◆如果是6两张光盘合在一起,需要重新生成元数据 repodata

保留原有的 repodata目录下的 .xml文件 (分组信息)
createrepo -g repodata/.xml .  (根据.xml,在当前目录创建repodata元数据目录)
find -name TRANS.TBL -exec rm {} \;(查找TRANS.TBL,并删除)

dhclient dhcp客户端

dhcp客户端,可以直接运行,默认为后台运行
-d: 可以查看查看其运行过程
日志: /var/lib/dhclient/dhclient.leases

DHCP服务port: udp c68 s67

c:Discover --> s:Offer --> c:Request --> s:ACK
* 跨网段
    1. 路由开启 中继
    2. DHCP代理(同网段一台主机 或 本网段的路由器)

◆Linux DHCP协议的实现程序:dhcp,dnsmasq(dhcp,dns)
    yum install dhcp
    检查语法:
        service dhcpd configtest
    /usr/sbin/dhcpd
        /etc/dhcp/dhcpd.conf-->/etc/rc.d/init.d/dhcpd
            ***** subnet 要配置一个和本机同网段的地址段
            *****   地址绑定
                    host XXXX{
                        hardware ethernet 00:00:00:f7:aa;
                        fixed-address 192.168.2.10;
                        option routers 192.168.2.254;           #可选单独设置,不设置用subnet中的,
                        option domain-name-servers 61.139.2.69; #可选单独设置,默认用subnet 或 全局中的,
                    }
            *****   在使用pxe时,tftp服务器
                    filename 'pxelinux.0';          # 指定网卡启动文件
                    next-server 192.168.100.100;    # 指定网卡启动文件tftp服务器

        /etc/dhcp/dhcpd6.conf-->/etc/rc.d/init.d/dhcpd6
    
    /usr/sbin/dhcrelay
        /etc/rc.d/init.d/dhcrelay 
    dhcp server:67/udp
    dhcp client:68/udp 
    dhcpv6 client:546/udp
◆Dhcp client 
    dhclient自动获取的IP信息:/var/lib/dhclient

TFTP服务port: udp(69)

安装 yum install tftp-server
    Centos 6 的启动:
        chkconfig tftp on; service xinetd restart
    Centos 7 的启动:
        systemctl start tftp.socket
        systemctl enable tfpt
工作目录:
    /var/lib/tftpboot
    mkdir pxelinux.cfg/
    yum install syslinux (包中含有pxelinux.0,XXX.c32菜单风格)
    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
    使用一个简单的菜单
        cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
    使用光盘的菜单
        cp /misc/cd/isolinux/boot.msg splash.jpg vesamenu.c32 /var/lib/tftpboot/
    cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
    cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default(复制,重命名)
    vim /var/lib/tftpboot/pxelinux.cfg/default
        default menu.c32
        timeout 600 #(60秒)
        menu title Centos Auto Install
        label linux
            menu label ^Auto Install Mini Centos7
            kernel vmlinuz
            append initrd=initrd.img ks=http://XXX.XXX.XXX.XXX/ksdir/7/ks.cfg
        label local
            menu default
            menu label Boot from ^local drive
            localboot 0xffff
        menu end

http服务

yum install httpd
systemctl start httpd
systemctl enable httpd
cd /var/www/html
mkdir centos/{6,7} -pv
vim /etc/fstab
/dev/sr0    /var/www/html/centos/7      iso9660     defaults    0 0
mount -a
getenforce#  ---->检查selinux是否关闭
cp ks.cfg /var/www/html/centos/7/ks.cfg
chmod 644 /var/www/html/centos/7/ks.cfg

第一次开机时的lensense许可禁用

◆ systemctl disable initial-setup.service

cobbler

◆ cobbler 介绍

◆Cobbler:
    >快速网络安装linux操作系统的服务,支持众多的Linux发行版:
    Red Hat、Fedora、CentOS、Debian、Ubuntu和SuSE,也可以支持网络安装windows
    >PXE的二次封装,将多种安装参数封装到一个菜单
    >Python编写
    >提供了CL和Web的管理形式
◆安装包
    >cobbler 基于EPEL源
◆cobbler 服务集成
    >PXE
    >DHCP
    >rsync
    >Http
    >DNS
    >Kickstart
    >IPMI电源管理
◆检查cobbler环境
    >cobbler check

cobbler 相关术语

◆发行版:
    表示一个操作系统版本,它承载了内核和initrd的信息,以及内核参数等其他数据配置文件:
◆配置文件:
    包含一个发行版、一个kickstart文件以及可能的存储库,还包含更多特定的内核参数等其他数据
◆系统:
    表示要配置的主机,它包含一个配置文件或一个镜像,还包含IP和MAC地址、电源管理(地址、凭据、类型)以及更为专业的数据等信息
◆存储库:
    保存一个yum或rsync存储库的镜像信息镜像:
◆镜像:
    可替换一个包含不属于此类别的文件的发行版对象(例如,无法分为内核和initrd的对象)

cobbler各种配置目录说明

◆安装:yum install cobbler dhcp
◆配置文件目录/etc/cobbler
/etc/cobbler/settings:cobbler主配置文件
/etc/cobbler/iso/:iso模板配置文件
/etc/cobbler/pxe:pxe模板文件
/etc/cobbler/power:电源配置文件
/etc/cobbler/user.conf:web服务授权配置文件
/etc/cobbler/users.digest:web访问的用户名密码配置文件
/etc/cobbler/dhcp.template:dhcp服务器的的配置模板
/etc/cobbler/dnsmasq.template:dns服务器的配置模板
/etc/cobbler/tftpd.template:tftp服务的配置模板
/etc/cobbler/modules.conf:模块的配置文件

systemctl start cobbler
vim /etc/cobbler/settings
    server                      :本机ip
    next_server                 :tftp服务器ip
    default_password_crypted    :安装时设置的root密码
        openssl passwd -1 -salt 'random-phrase-here'生成密码
    manage_dhcp: 1              #设置为1,使用cobbler来管理设置dhcp服务

vim /etc/cobbler/dhcp.template      #cobbler的dhcp设置模版
    和设置dhcpd.conf一样
# 下载 启动的相关文件
cobbler get-loaders
    会将相关文件下载到/var/lib/cobbler/loaders/下
cobbler sync
    将/var/lib/cobbler/loaders/复制到/var/lib/tftpboot/目录下

ss -tunl
    查看 67 69 80都开启
systemctl restart cobbler
# 开始准备 yum源
加一个光驱,加载6.9的光盘(可选)
    echo '- - -' > /sys/class/scsi_host/host2/scan #通知scsi去重新扫描硬件
# 导入源,会自动生成一个 最小安装的菜单
cobbler import --path=/mnt/cdrom1/ --name=CentOS-6.9-x86_64 --arch=x86_64
    # 会将光盘中的yum源导入到/var/www/cobbler/ks_mirror/CentOS-6.9-x86_64/目录下
    # 导入后 会自动在 /var/lib/tftpboot/pxelinux.cfg/下生成启动菜单文件
cobbler import --path=/mnt/cdrom0/ --name=CentOS-7.4-x86_64 --arch=x86_64

# cobbler distro list
    查看现有的 distro 相当于安装源
# cobbler profile remove --name=CentOS-6.9-i386
    删除不要的 profile 相当于安装配置文件
# cobbler distro remove --name=CentOS-6.9-i386
    删除不要的
# 要使用自己的ks文件,安装源必须改,改为url --url=$tree
    cp ks6_mini.cfg /var/lib/cobbler/kickstarts/
    cobbler profile add --name=CentOS-6.9-x86_64_Mini --distro=CentOS-6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks6_mini.cfg
                            菜单显示名                       cobbler distro list中显示的
# cobbler profile report --name=CentOS-7.4-x86_64
    查看配置文件的详情

◆cobbler commands介绍
    cobbler check核对当前设置是否有问题
    cobbler list列出所有的cobbler元素
    cobbler report列出元素的详细信息
    cobbler sync同步配置到数据目录,更改配置最好都要执行下
    cobbler reposync同步yum仓库
    cobbler distro 查看导入的发行版系统信息
    cobbler system 查看添加的系统信息
    cobbler profile 查看配置信息

◆  cobbler的web管理实现
    ◆cobbler-web
        提供cobbler的基于web管理界面,epe源
        yum install cobbler-web
    ◆认证方式
        认证方法配置文件:/etc/cobbler/modules.conf
        >支持多种认证方法:
            authn_configfile 
            authn_pam
    vim /etc/cobbler/modules.conf   #可以修改认证方法 默认为下面
        #  authn_configfile --use Wetc/cobbler/users.digest (for basic setups) # 默认认证文件
    htdigest -c /etc/cobbler/users.digest Cobbler test1     设置一个cobbler的管理员
        设置用户密码
    # 如果修改了认证方法为 module = authn_pam
        使用的认证文件是/etc/cobbler/users.conf
        # 增加一个账号
        useradd -s /sbin/nologin test2
        echo pass | passwd --stdin test2
        vim /etc/cobbler/users.conf
            admim='test2'


    访问https://ip/cobbler_web/


代理dhcp

在有dhcp服务器的网络中,再开一个dhcp服务是不可行的,
这时可能使用一个 pxe-pdhcp 软件来处理
https://github.com/frsyuki/pxe-pdhcp
wget https://github.com/frsyuki/pxe-pdhcp/archive/master.zip
unzip master.zip
cd pxe-pdhcp-master/
make
生成一个pxe-pdhcp的可执行文件(单文件,可拷贝到其他地方去)
    原理:
        在一般的路由dhcp上没有关于pxe启动中需要的
            net-server 和 boot filename字段 来指定tftp服务器和启动文件
            无法进行pxe启动
        而pxe-pdhcp软件可以监听在udp/67端口,收到客户机的dhcp-Discover报文后
            以使用广播方式发一个携带了net-server 和 boot filename 的报文,通知
            客户机tftp服务器和启动文件在什么地方,来完成pxe启动
遇到的坑:
    作者说: -i or (-l, -t and -b), and  options are needed.
    但是 ./pxe-pdhcp -i ens33 -d pxelinux.0
        listen address:     192.168.2.11:67
        broadcast address   192.168.2.255:68
        tftp address:       192.168.2.11
        nbp name:           pxelinux.0
        这时,客户机没有ip地址,pxe-pdhcp 发的广播为192.168.2.255,客户机收不到啊。失败
正确的启动姿势:
./pxe-pdhcp -l 0.0.0.0 -b 255.255.255.255 -t 192.168.2.11 -d pxelinux.0
说明:
        -d 前台执行,(默认为后台运行)
        -l 监听的地址 (0.0.0.0为本机所有网卡的地址)
        -b 广播地址 (应该为255.255.255.255)
        -t tftp服务器地址
        pxelinux.0  启动文件

TinyPXE

menu
:Centos
 kernel ${xieyi}://${next-server}/boot/vmlinuz inst.ks=${xieyi}://${next-server}/boot/ks.cfg
 initrd ${xieyi}://${next-server}/boot/initrd.img
 boot || goto retry
 goto start

linux 使用 ipxe

cd ipxexxxxx/src

vim demo.ipxe
    #!ipxe
    ifopen
    chain tftp://${next-server}/boot/menu.txt || shell

make bin/undionly.kpxe EMBED=demo.ipxe
cp bin/undionly.kpxe /var/lib/tftpboot/

使用 

linux下使用ipxe 不能使用dhcp代理,使用pxe-pdhcp 代理 ${next-server}只会是dhcp服务器
不能使用${next-server},但可以使用固定ip,来达到tftp服务器
# 官方说明
http://ipxe.org/howto/chainloading

./pxe-pdhcp -l 0.0.0.0 -b 255.255.255.255 -t 192.168.2.11 -d undionly.kpxe

你可能感兴趣的:(Centos 安装)