1. 程式人生 > >Linux學習之路-Linux自動化系統安裝【12】---20171230

Linux學習之路-Linux自動化系統安裝【12】---20171230

repos exec auth bdc u盤啟動 eth 本地 ner 微型linux

安裝程序
  • CentOS系統安裝

    系統啟動流程:
    bootloader-->kernel(initramfs)-->rootfs-->/sbin/init
    anaconda: 系統安裝程序
    >gui:圖形窗口
    >tui: 基於圖形庫curses的文本窗口

  • 安裝程序啟動過程

    MBR:isolinux/boot.cat
    stage2: isolinux/isolinux.bin
    配置文件:isolinux/isolinux.cfg
    >每個對應的菜單選項:
    >加載內核:isolinuz/vmlinuz
    >向內核傳遞參數:append initrd=initrd.img ...

    裝載根文件系統,並啟動anaconda
    >默認啟動GUI接口
    >若是顯式指定使用TUI接口:向內核傳遞text參數即可
    >(1)按tab鍵,在後面增加text
    >(2)按ESC鍵:boot: linux text

[root@Centos7/misc/cd]#cd isolinux/
[root@Centos7/misc/cd/isolinux]#ls
boot.cat  grub.conf   isolinux.bin  memtest     TRANS.TBL     vmlinuz
boot.msg  initrd.img  isolinux.cfg  splash.png  vesamenu.c32
[root@Centos7/misc/cd/isolinux]#hexdump -C boot.cat 
00000000  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 aa 55 55 aa  |.............UU.|    ---->也有55 aa 標記位
00000020  88 00 00 00 00 00 04 00  e1 16 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040  91 ef 01 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000060  88 00 00 00 00 00 38 46  53 05 00 00 00 00 00 00  |......8FS.......|
00000070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000800

[root@Centos7/misc/cd/isolinux]#hexdump -C isolinux.bin     ---->相當於啟動階段第2 階段
00000000  fa ea 6c 7c 00 00 90 90  10 00 00 00 e1 16 00 00  |..l|............|
00000010  00 60 00 00 2e 8e 6c cf  00 00 00 00 00 00 00 00  |.`....l.........|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000040  fb c0 78 70 59 2e 8f 06  28 30 2e 8f 06 2a 30 5a  |..xpY...(0...*0Z|
00000050  5f 07 66 31 c0 66 31 db  81 fc 00 7c 73 04 66 58  |_.f1.f1....|s.fX|
00000060  66 5b be 7c 83 e3 0e be  80 83 eb 09 be 78 83 66  |f[.|.........x.f|
00000070  31 c0 66 31 db 2e 89 26  08 30 2e 8c 16 0a 30 31  |1.f1...&.0....01|
00000080  c9 8e d1 bc d4 7b 06 57  8e d9 8e c1 8e e1 8e e9  |.....{.W........|
00000090  fb fc 66 a3 20 30 66 89  1e 24 30 89 36 14 30 66  |..f. 0f..$0.6.0f|
000000a0  8b 04 66 a3 10 30 be 25  81 e8 27 04 8b 36 12 30  |..f..0.%..‘..6.0|
000000b0  e8 20 04 66 31 ff be 40  7c b9 f0 01 66 ad 66 01  |. .f1..@|...f.f.|
000000c0  c7 e2 f9 66 89 3e 00 30  88 16 17 30 bf 30 30 b9  |...f.>.0...0.00.|
000000d0  21 00 66 31 c0 f3 66 ab  c6 06 30 30 13 c6 06 48  |!.f1..f...00...H|
000000e0  30 1e c6 06 90 30 10 c6  06 a0 30 13 ff 06 ae 30  |0....0....0....0|
000000f0  81 3e 14 30 78 83 75 1d  b8 01 4b 8a 16 17 30 be  |.>.0x.u...K...0.|
00000100  30 30 e8 d7 01 0f 82 f1  00 8a 16 17 30 38 16 32  |00..........08.2|
00000110  30 0f 85 3d 01 66 83 3e  0c 7c 00 75 27 66 a1 34  |0..=.f.>.|.u‘f.4|
00000120  30 66 21 c0 74 1a 66 b8  11 00 00 00 bb 00 10 e8  |0f!.t.f.........|
....
  • anaconda工作過程

    Anaconda安裝系統分成三個階段:
    安裝前配置階段
    >安裝過程使用的語言
    >鍵盤類型
    >安裝目標存儲設備
    >>Basic Storage:本地磁盤
    >>特殊設備:iSCSI

    >設定主機名
    >配置網絡接口
    >時區
    >管理員密碼
    >設定分區方式及MBR的安裝位置
    >創建一個普通用戶
    >選定要安裝的程序包

    安裝階段
    >在目標磁盤創建分區,執行格式化操作等
    >將選定的程序包安裝至目標位置
    >安裝bootloader和initramfs

    圖形模式首次啟動
    >iptables

    >selinux
    >core dump


系統安裝

  • 啟動安裝過程一般應位於引導設備;後續的anaconda及其安裝用到的程序包等可來自下面幾種方式:

    本地光盤
    本地硬盤
    NFS
    URL:
    >ftp server: yum repository
    >http server: yum repostory

    如果想手動指定安裝源:
    >boot: linux askmethod

  • anaconda的配置方式

    (1) 交互式配置方式
    (2) 通過讀取事先給定的配置文件自動完成配置
    >按特定語法給出的配置選項
    >kickstart文件

  • 安裝boot引導選項:boot:
  • text: 文本安裝方式
  • askmethod: 手動指定使用的安裝方法
  • 與網絡相關的引導選項:

    ip=IPADDR
    netmask=MASK
    gateway=GW
    dns=DNS_SERVER_IP
    ifname=NAME:MAC_ADDR

  • 與遠程訪問功能相關的引導選項:

    vnc
    vncpassword=‘PASSWORD‘

  • 指明kickstart文件的位置: ks=

    DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
    Hard drive: ks=hd:device:/directory/KICKSTART_FILE
    HTTP server: ks=http://host:port/path/to/KICKSTART_FILE
    FTP server: ks=ftp://host:port/path/to/KICKSTART_FILE HTTPS server: ks=https://host:port/path/to/KICKSTART_FILE
    NFS server:ks=nfs:host:/path/to/KICKSTART_FILE

  • 啟動緊急救援模式: rescue
  • 官方文檔:《Installation Guide》

kickstart文件的格式

  • 命令段:指明各種安裝前配置,如鍵盤類型等
  • 程序包段:指明要安裝的程序包組或程序包,不安裝的程序包等

    %packages
    @group_name (包組)
    package
    -package (排除不裝的包)
    %end

  • 腳本段:

    %pre: 安裝前腳本
    >運行環境:運行於安裝介質上的微型Linux環境

    %post: 安裝後腳本
    >運行環境:安裝完成的系統

  • 命令段中的命令:
  • 必備命令

    authconfig: 認證方式配置
    >authconfig --useshadow --passalgo=sha512

    bootloader:bootloader的安裝位置及相關配置
    >bootloader --location=mbr --driveorder=sda –append="crashkernel=auto rhgb quiet"

    keyboard: 設定鍵盤類型
    lang: 語言類型
    part: 創建分區
    rootpw: 指明root的密碼
    timezone: 時區

  • 可選命令

    install OR upgrade
    text: 文本安裝界面 network
    firewall
    selinux
    halt
    poweroff
    reboot
    repo user:安裝完成後為系統創建新用戶
    url: 指明安裝源
    key –skip 跳過安裝號碼,適用於rhel版本

  • 創建kickstart文件的方式

    直接手動編輯
    >依據某模板修改

    可使用創建工具:system-config-kickstart
    >依據某模板修改並生成新配置
    >/root/anaconda-ks.cfg

    檢查ks文件的語法錯誤
    >ksvalidator
    >ksvalidator /PATH/TO/KICKSTART_FILE

註意:Centos7 的 system-config-kickstart 工具生成ks-cfg文件時候,yum配置文件
base必須改成development,否則無法讀取目錄列表

系統光盤中isolinux目錄列表

  • solinux.bin:光盤引導程序,在mkisofs的選項中需要明確給出文件路徑,這個文件屬於SYSLINUX項目
  • isolinux.cfg:isolinux.bin的配置文件,當光盤啟動後(即運 行isolinux.bin),會自動去找isolinux.cfg文件
  • vesamenu.c32:是光盤啟動後的安裝圖形界面,也屬於 SYSLINUX項目,menu.c32版本是純文本的菜單
  • Memtest:內存檢測,這是一個獨立的程序
  • splash.jgp:光盤啟動界面的背景圖
  • vmlinuz是內核映像
  • initrd.img是ramfs (先cpio,再gzip壓縮)
[root@Centos6bootiso]#cp -r /misc/cd/isolinux/ /app/bootiso/
[root@Centos6bootiso]#tree 
.
└── isolinux
    ├── boot.cat
    ├── boot.msg
    ├── grub.conf
    ├── initrd.img
    ├── isolinux.bin
    ├── isolinux.cfg
    ├── memtest
    ├── splash.jpg
    ├── TRANS.TBL
    ├── vesamenu.c32
    └── vmlinuz

1 directory, 11 files

制作引導光盤和U盤

  • 創建引導光盤:

    mkdir –pv /app/myiso
    cp -r /misc/cd/isolinux/ /app/myiso/
    vim /app/myiso/isolinux/isolinux.cfg
    >initrd=initrd.img text ks=cdrom:/myks.cfg

    cp /root/myks.cfg /app/myiso/
    mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /app/myiso/
    註意:以上相對路徑都是相對於光盤的根,和工作目錄無關

  • 創建U盤啟動盤

    dd if=/dev/sr0 of=/dev/sdb

  • 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 的系統上

[root@Centos6bootiso]#yum install syslinux
已加載插件:fastestmirror, refresh-packagekit, security
設置安裝進程
Loading mirror speeds from cached hostfile
包 syslinux-4.04-3.el6.x86_64 已安裝並且是最新版本
無須任何處理

[root@Centos6bootiso]#find /app/centos6 -name TRANS.TBL -exec rm {} \;
[root@Centos6bootiso]#find /app/centos6 -name TRANS.TBL 
[root@Centos6bootiso]#rm /app/centos6/repodata/*
rm:是否刪除普通文件 "/app/centos6/repodata/1cde788f77b08a7eb3dfdba12fa384a5f0214147a717a1e2d4504368037fba90-c6-x86_64-comps.xml.gz"?y
rm:是否刪除普通文件 "/app/centos6/repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml"?
rm:是否刪除普通文件 "/app/centos6/repodata/594889376c2452dc8178bbaed982deba4dff38a42716ac03fc84576c17b1d79b-filelists.sqlite.bz2"?y
rm:是否刪除普通文件 "/app/centos6/repodata/92299bd89d0ef9e4030e78d31399a96b41712239f032d0092f2345ba5cb01404-other.xml.gz"?y
rm:是否刪除普通文件 "/app/centos6/repodata/9f2ef5087547b18bdccc798b0cad7456047fc69ca17db69d3159b6dd84ed1c11-primary.xml.gz"?y
rm:是否刪除普通文件 "/app/centos6/repodata/ad73b7fa76bb45feea7e4cdb2d896279524039545e8764ceaa515665f897a0c5-primary.sqlite.bz2"?y
rm:是否刪除普通文件 "/app/centos6/repodata/dc8a406c3cc1c5103ff2e22a1b9d3d0d09a13a6fda831ffecebdd55484bf5146-filelists.xml.gz"?y
rm:是否刪除普通文件 "/app/centos6/repodata/f18d3f35ab887f27a5acc563138bd58a0c9b668e8cd79dbb32c4fc610c88e320-other.sqlite.bz2"?y
rm:是否刪除普通文件 "/app/centos6/repodata/repomd.xml"?y

[root@Centos6bootiso]#ls /app/centos6/repodata
43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml
[root@Centos6centos6]#createrepo -g /app/centos6/repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml ./
Spawning worker 0 with 3240 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@Centos7~]#find /app/centos7 -name TRANS.TBL
/app/centos7/EFI/BOOT/fonts/TRANS.TBL
/app/centos7/EFI/BOOT/TRANS.TBL
/app/centos7/EFI/TRANS.TBL
/app/centos7/images/pxeboot/TRANS.TBL
/app/centos7/images/TRANS.TBL
/app/centos7/isolinux/TRANS.TBL
/app/centos7/LiveOS/TRANS.TBL
/app/centos7/Packages/TRANS.TBL
/app/centos7/repodata/TRANS.TBL
/app/centos7/TRANS.TBL
[root@Centos7~]#find /app/centos7 -name TRANS.TBL -exec rm {} \;
[root@Centos7~]#find /app/centos7 -name TRANS.TBL
[root@Centos7~]#rm /app/centos7/repodata/* -f
[root@Centos7~]#ls /misc/cd/repodata/
0c34273ad0292747ee5e15c047d3e51c67ca59861a446972db45d71abacc7ad7-primary.sqlite.bz2
38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml
6cd606547d4f569538d4090e9accdc3c69964de1116b9ab1e0a7864bb1f3ec98-filelists.sqlite.bz2
9346184be1deb727caf4b1ecf4a7949155da5da74af9b92c172687b290a773df-c7-x86_64-comps.xml.gz
a0af68e1057f6b03a36894d3a4f267bbe0590327423d0005d95566fb58cd7a29-other.xml.gz
b686d3a0f337323e656d9387b9a76ce6808b26255fc3a138b1a87d3b1cb95ed5-primary.xml.gz
c1561546c684bd06b3a499c2babc35c761b37b2fc331677eca12f0c769b1bb37-filelists.xml.gz
cf0cc856d46b3095106da78256fb28f9d8defea4118d0e75eab07dc53b7d3f0d-other.sqlite.bz2
repomd.xml
repomd.xml.asc
TRANS.TBL
[root@Centos7~]#cp /misc/cd/repodata/38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml /app/centos7/repodata/
[root@Centos7~]#cd /app/centos7/
[root@Centos7/app/centos7]#createrepo -g repodata/38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml ./
Spawning worker 0 with 4796 pkgs
Spawning worker 1 with 4795 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
裝載圖形化界面
[root@Centos6~]#yum groupinstall "kde desktop"  
[root@Centos6~]#yum install xorg-x11-server-Xorg
[root@Centos6~]#yum install vim-enhanced

Linux學習之路-Linux自動化系統安裝【12】---20171230