集中練習8-bash腳本及系統啟動

集中練習8-bash腳本及系統啟動

1. 請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)
Linux啟動流程示意圖

2. 為運行于虛擬機上的CentOS6添加一塊硬盤,提供兩個主分區;
(1) 為硬盤新建兩個主分區,并為其安裝grub
(2) 為硬盤的第一個主分區提供內核和ramdisk文件,第二個分區提供rootfs
(3) 為rootfs提供bash、ls、cat程序及所依賴的庫文件
(4) 為grub提供配置文件
(5) 將新的硬盤設置為第一啟動項并能夠正常啟動目標主機
“`
~]# fdisk -l /dev/sdb

Disk /dev/sdb: 17.2 GB, 17179869184 bytes
255 heads, 63 sectors/track, 2088 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

~]# fdisk /dev/sdb,創建兩個主分區,并設置為83格式。

~]# kpartx -af /dev/sdb

~]# mkdir -pv /mnt/boot
mkdir: created directory `/mnt/boot’

~]# mkfs.ext4 /dev/sdb1

~]# mount /dev/sdb1 /mnt/boot

~]# grub-install –root-directory=/mnt /dev/sdb
Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /mnt/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install’.

(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb

~]# cp /boot/vmlinuz-2.6.32-431.el6.x86_64 /mnt/boot/vmlinuz
~]# cp /boot/initramfs-2.6.32-431.el6.x86_64.img /mnt/boot/initramfs.img

~]# vim /mnt/boot/grub/grub.conf
default=0
timeout=5
title CentOS (Express)
root (hd0,0)
kernel=/vmlinuz ro selinux=0 root=/dev/sda2 init=/bin/bash
initrd /initramfs.img

~]# mkdir /mnt/sysroot
~]# mkfs.ext4 /dev/sdb2
~]# mount /dev/sdb2 /mnt/sysroot

使用拷貝命令及其依賴庫的腳本進行命令復制。
==========================================================================
#!/bin/bash
#
DEST=/mnt/sysroot
read -p “Please enter a command: ” CPCMD
until [ $CPCMD == ‘q’ ]; do
if `/usr/bin/which $CPCMD &> /dev/null`; then
CMDPATH=`/usr/bin/which $CPCMD | grep -o “/.*$CPCMD”`
DESTCMD=`dirname $CMDPATH`
ls $DEST$DESTCMD &> /dev/null || mkdir -pv “$DEST$DESTCMD” &> /dev/null
cp $CMDPATH $DEST$DESTCMD/
echo -e “\n\033[31mCommand $CPCMD has been copied to $DEST$DESTCMD.\033[0m\n”
for dep in `ldd $CMDPATH | grep -o “/[^[:space:]]*”`; do
DESTLIB=`dirname $dep`
ls $DEST$DESTLIB &> /dev/null || mkdir -pv “$DEST$DESTLIB” &> /dev/null
cp $dep $DEST$DESTLIB/
echo -e “\033[35mDependency Library $dep has been copied to $DEST$DESTLIB.\033[0m”
done
else
echo “Wrong command or builtin command.”
fi
read -p “Please reenter a command: ” CPCMD
done
==========================================================================

執行sync命令確保數據已經全部寫入到磁盤
新建虛擬機,并指定該新增磁盤為新虛擬機的唯一磁盤,啟動即可。
“`
3. 制作一個kickstart文件以及一個引導鏡像。描述其過程。
~]# yum -y install system-config-kickstart
這個命令是需要單獨安裝的:
~]# yum -y install system-config-kickstart
該軟件需要調用圖形界面,首先應該確保服務器上的圖形界面已經安裝完成,并且X windows已經啟動了。
~]# startx
~]# ps -ef | grep X
使用SecureCRT SSH遠程連接到服務器,需要設置幾個地方才能夠使用system-config-kickstart命令
“`
(1) 編輯sshd_config:
~]# vi /etc/ssh/sshd_config 確保有如下的行:
X11Forwarding yes
這樣配置的作用就是允許 SSH的X 轉發。
(2) 下載并安裝Xming
Xming 是一個配置簡單而功能強大的開源 X Server,可以運行在MS的XP/2003/Vista操作系統下。
Xming 的主頁:http://www.straightrunning.com/XmingNotes/
Xming 的SourceForge 頁面:http://sourceforge.net/projects/xming/
這里下載到Xming-6-9-0-31-setup.exe,雙擊安裝至完成。
(3) 在SecureCRT中右鍵點擊要使用system-config-kickstart命令的Linux服務器 –> 屬性(properities)–> Connection –> Port Forwarding –> Remote/X11 –> 勾選“Forward X11 packets”和“Enforce X11 authentication”
(4) 在SecureCRT中右鍵點擊要使用system-config-kickstart命令的Linux服務器 –> 屬性(properities)–> Connection –> Port Forwarding –> Add –> 輸入轉發名稱(自己決定)–> 端口號6000 –> 在Application處選擇xming.exe文件的絕對路徑 –> 點擊OK
“`
~]# system-config-kickstart &
按照自己的想法設定所有安裝選項,并將配置最終保存下來。

將Linux安裝光盤加載至光驅
~]# mkdir /mnt/media
~]# mount /dev/sr0 /mnt/media
~]# cp -r /mnt/media/isolinux/ /myboot/
~]# cp /PATH/TO/KS_FILE /myboot/
~]# mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V “CentOS 6 x86_64 boot” -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso /myboot/
使用boot.iso啟動系統
4. 寫一個腳本
(1) 能接受四個參數:start,stop,restart,status
start:輸出“starting 腳本名 finished.”
……
(2) 其他任意參數,均報錯退出
“`
#!/bin/bash
#
read -p “Please make a choice {start|stop|restart|status}: ” Choice
case $Choice in
start)
echo “Starting script finished.”
;;
stop)
echo “Stopping script finished.”;;
restart)
echo “Restarting script finished.”;;
status)
echo “Checking script status finished.”;;
*)
echo “Wrong choice.”
esac
“`
5. 寫一個腳本,判斷給定的用戶是否登陸了當前系統;
(1) 如果登陸了,則顯示用戶登錄,腳本終止
(2) 每3秒鐘,查看一次用戶是否登陸;
“`
#!/bin/bash
#
while true; do
who | grep “tom” &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo user tom has logged into the system at `date +’%Y%m%d %H:%M’`
exit 0
fi
sleep 3
done
“`
6. 寫一個腳本,顯示用戶選定要查看的信息
cpu) display cpu info
mem) display memory info
disk) display disk info
quit) quit
非此四項,則提示錯誤,并要求用戶重新選擇,直到給出正確選擇為止
“`
#!/bin/bash
#
cat << EOF
Please make a choice:
cpu) display cpu info
mem) display memory info
disk) display disk info
quit) quit
EOF

read -p “Your choice: ” CHOICE
while true; do
case $CHOICE in
cpu)
cat /proc/cpuinfo
exit 0;;
mem)
free -m
exit 0;;
disk)
fdisk -l
exit 0;;
quit)
echo “Quiting…”
exit 0;;
*)
echo “Wrong choice.”
read -p “Your choice: ” CHOICE
esac
done
“`
7. 寫一個腳本
(1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來
(2) 提示用戶輸入一個用戶名或輸入“quit”退出;
當輸入的是用戶名,則調用函數顯示用戶信息;
當輸入quit,則退出腳本;進一步地,顯示鍵入的用戶相關信息后,再次提醒輸入用戶名或quit
“`
#!/bin/bash
#
function User_UID_Shell {
User_UID=`cat /etc/passwd | grep “^$1” | cut -d’:’ -f3`
User_SHELL=`cat /etc/passwd | grep “^$1” | cut -d’:’ -f7`
echo “User $1’s UID is $User_UID.”
echo “User $1’s Shell is $User_SHELL.”
}

read -p “Please input a username or ‘quit’ to quit this script: ” user_name
while true; do
[ $user_name == ‘quit’ ] && echo “Quiting…” && exit 0
id $user_name &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
User_UID_Shell $user_name
read -p “Please input a username or ‘quit’ to quit this script: ” user_name
else
echo “User $user_name does not exist.”
read -p “Please input a username or ‘quit’ to quit this script: ” user_name
fi
done
“`

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

(1)
N27_sapbcsN27_sapbcs
上一篇 2017-12-06 11:46
下一篇 2017-12-06 16:51

相關推薦

  • 第十五周作業

    溫故知新 1、總結sed和awk的詳細用法 sed [OPTION]… ‘script’ [input-file] …script:地址定界編輯命令 常用選項:-n:不輸出模式空間中的內容至屏幕;-e script, –expression=script:多點編輯;-f /PATH/TO/SED_S…

    Linux干貨 2017-12-04
  • 初步了解計算機組成及Linux系統

    一、計算機的組成及其功能: 計算機主要由三部分組成: 輸入單元:包括鍵盤、鼠標、卡片閱讀器、掃描儀、手寫板等。 輸出單元使我們能夠將一些數據輸入到主機里,然后再由主機的功能處理成為圖表或文章等信息后,將結果傳輸到輸出設備,如屏幕或打印機上面。 中央處理器(CPU):其中包含算數邏輯、控制、記憶等單元。 CPU作為一個具有特定功能的芯片,里面含有微指令集,如果…

    Linux干貨 2017-09-24
  • tar,cpio,rpm,yum的使用詳解(適合初學者)

    基于linux下的tar包管理和yum源配置 友情提示:對于這些實際操作的,還是需要進行手工的嘗試,由于這幾個對于包管理的是比較常用和實用的, 所以,一定要熟練使用。 1.tar tar是對于系統中文件,目錄等進行打包,解包的工具。tar也可以對文件進行打包存放到別的目錄下, 所以在很早的時候,一些老的工程師經常使用tar對文件進行備份。很大程度上,所謂的t…

    Linux干貨 2016-08-21
  • 第六周課程作業

    1、復制/etc/rc.d/init.d/functions文件至/tmp目錄,將/tmp/functions文件中 的以至少一個空白字符開頭的行的行首加# ~]# cp /etc/rc.d/init.d/functions /tmp~]# vim /tmp/functions %s@^[[:space:]]\+@#@g 2、復制/boot/gru…

    Linux干貨 2016-12-12
  • Linux系統vim文本編輯器

                                                      &nbsp…

    Linux干貨 2016-08-15
  • Linux系統啟動流程

        下面按照系統的啟動順序來進行逐一的講解。 一、POST     當我們按下開機的電源后,主板上的芯片組會首先向CPU發出一個reset指令,之后待芯片組檢測到電源供電穩定后便撤去reset指令,CPU就會跳轉到BIOS中的啟動代碼位置; BIOS首先要檢測關鍵設備(如內顯…

    Linux干貨 2015-05-23

評論列表(1條)

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

    圖如果是你自己畫的,那就很牛逼了。下面的作業注意排版。

欧美性久久久久