CentOS啟動流程及Shell腳本編程練習

一、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)

第一步:POST加電自檢

主要實現的功能是檢測各個外圍硬件設備是否存在而且能夠正常運行起來,實現這一自檢功能的是固化在主板上的ROM(主要代表為CMOS)芯片上的BIOS(Basic Input/Output System)程序。

第二步:Boot Sequence(選擇啟動設備以加載MBR)

主要實現的功能是選擇要啟動的硬件設備,選擇了之后就可以讀取這個設備上位于MBR里頭的bootloader了。這一步的實現是這樣的:根據BIOS中對啟動順序的設定,BIOS自己會依次掃描各個引導設備,然后第一個被掃描到具有引導程序(bootloader)的設備就被作為要啟動的引導設備。

第三步:加載bootloader(MBR)

這一步實現起來的步驟比較多,前面的BIOS通過讀取并執行啟動設備的MBR中的bootloader,而bootloader要實現的功能就是提供一個菜單給用戶,讓用戶去選擇要啟動的系統或不同的內核版本,然后把用戶選擇的內核版本加載至RAM中的特定空間,接著在RAM中解壓、展開,而后把系統控制權移交給內核。

第四步:Kernel自身初始化

Kerenl在得到系統控制權之后,首先要進行自身初始化

(1)探測可識別到的所有硬件設備;

(2)加載硬件驅動程序,即加載真正的根文件系統所在設備的驅動程序(有可能會借助于ramdisk加載驅動);

(3)以只讀方式掛載根文件系統;

(4)運行用戶空間的第一個應用程序:/sbin/init.

第五步:init管理用戶空間服務進程

init可以理解成是內核派來管理用戶空間的使者,就好像天使代表上帝來訪問人間一樣。init這個初始化程序會根據其配置文件執行一系列操作。

二、為運行于虛擬機上的Centos 6 添加一塊新硬盤,提供兩個主分區;

1.為硬盤新建兩個主分區;并為其安裝Grub

echo “- – -” > /sys/class/scsi_host/hos0/scan

fdisk /dev/sdb

mkfs.ext4 /dev/sdb1

mkfs.ext4 /dev/sdb2

mount /dev/sdb2 /mnt/minilinux/

mkdir -v /mnt/minilinux/{etc,bin,sbin,lib,lib64,var,proc,usr,sys,boot,dev,tmp}

mount /dev/sdb1 /mnt/minilinux/boot/

grub-install –root-directory=/mnt/minilinux /dev/sdb

2.為硬盤的第一個主分區提供內核和ramdisk文件;為第二個分區提供rootfs

cp /boot/initramfs-2.6.32-431.el6.x86_64.img /mnt/minilinux/boot/initramfs.img

cp /boot/vmlinuz-2.6.32-431.el6.x86_64 /mnt/minilinux/boot/vmlinuz

3.為rootfs提供bash、ls、cat程序及所依賴的庫文件

cp /bin/{bash,ls,cat} /mnt/minilinux/bin/

cp $(ldd /bin/{bash,ls,cat} |grep -o “/.*\.[0-9]”) /mnt/minilinux/lib64/

chroot /mnt/minilinux/

4.為grub提供配置文件

vi /mnt/minilinux/boot/grub/grub.conf

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title Minilinux

root (hd0,0)

kernel /vmlinuz root=/dev/sda2 selinux=0 init=/bin/bash quiet

initrd /initramfs.img

5.將新的硬盤設為第一啟動項并能正常啟動目標主機

 

三、制作一個Kickstart文件以及一個引導鏡像,描述其過程

1、制作Ks文件

yum -y install system-config-kickstart

system-config-kickstart

2、創建引導鏡像

mkdir /root/miniboot

cp -r /media/CentOS_6.5_Final/isolinux/ /root/miniboot/

cp /root/ks.cfg /root/miniboot/

vim /root/miniboot/isolinux/isolinux.cfg

mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V “CentOS 6 miniboot” -c isolinux/boot.cat -b isolinux/isolinux.bin -o? /root/boot.iso?? /root/miniboot/

 

四、寫一個腳本

(1)能接受四個參數:start,stop,restart,status

start:輸出”starting腳本名finished”

(2)其他任意參數,均報錯退出

10.4

五、寫一個腳本,判斷給定的用戶是否登錄了當前系統

(1)如果登錄了,則顯示用戶登錄,腳本終止

(2)每3秒鐘,查看一次用戶是否登錄

10-5

六、寫一個腳本,顯示用戶選定要查看的信息

cpu)display cpu info

mem)display memory info

disk)display disk info

quit)quit10.6

七、寫一個腳本

(1)用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來

(2)提示用戶輸入一個用戶或輸入”quit”退出

當輸入的是用戶名,則調用函數顯示用戶信息;

當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit

10.7

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88910

(0)
N27_wjxN27_wjx
上一篇 2017-11-26 16:53
下一篇 2017-11-26 19:42

相關推薦

  • nginx負載均衡實驗

    實驗一、 實驗環境:     1、一臺director主機。并部署nginx服務。        內網iP:192.168.1.1  外網iP:10.1.64.1     2、一臺后端服務器。并部署h…

    Linux干貨 2016-10-30
  • N25 – 第二周博客作業

      Linux上的文件管理類命令有哪些,其常用的使用方法及相關示例演示 more: more命令非常簡單,只用more file即可,但是more命令有一個特點,就是翻屏至文件尾部后自動退出 less: less命令就是在使用man時是一樣的,因為man手冊就是調用less來查看的  head: head命令用來查看文件的前#行,#默認為…

    Linux干貨 2016-12-07
  • Linux常用命令

    一、Linux常用命令(總) 二、Linux常用命令(分) 1、pwd – print name of current/working directory 2、cd – change directory 3、ls – list,dieplay directory content 4、date – pr…

    Linux干貨 2016-09-19
  • lamp的編譯安裝

    基于http的php模塊模式 一、需要準備的軟件:     apr-1.5.0.tar    apr-util-1.5.3.tar    httpd-2.4.9.tar        mysql-5.5.33-…

    Linux干貨 2016-06-22
  • vsphere虛擬機下的Linux在線移除硬盤后的報錯處理(基于LVM)

    1)故障描述( vmware虛擬機,在線移除一塊被設置為pv格式的硬盤后,提示unknown device錯誤): 說明:/dev/sdb1 /dev/sdc1 /dev/sdd1是組成/dev/vg_test/lvm_test的PV,這里我們模擬/dev/sdd1硬盤被直接斷電了 [root@docker mnt]# pvdisplay…

    Linux干貨 2016-07-29
  • awk入門應用

    awk概述使用語法常用命令選項相關輸出命令print item1,item2,…printf FORMAT,item1,item2,….相關格式符相關修飾符相關內建變量相關內置函數相關操作符相關模式相關控制語句及示例if(condition) statementsif(condition){statements} else {statements}while…

    Linux干貨 2016-12-04

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-12-08 16:36

    思路清晰,步驟詳細,進度有點慢

欧美性久久久久