第十周作業

第十周作業

?

1、CentOS系統啟動流程:

1.加電自檢:由bios去檢測各硬件是否存在且是否正常運行,然后進行硬件初始化

2.選擇啟動順序,加載mbr:根據bios設置的設備啟動順序,找到第一個安裝有bootloader的設備進行啟動,bootloader去識別加載操作系統中的核心文件,并提交到內存中運行,進而來啟動相對應的操作系統

由于bootloader處于mbr中,而mbr只有446bytes用來存儲bootloader,而446bytes無法容納下bootloader,因此linux將bootloader運行和加載分成三個階段:

stage1:運行bootloader主程序,這個程序必須要被安裝在啟動區,即MBR中。因為mbr空間有限,因此在mbr當中僅安裝bootloader的最小主程序,并沒有安裝bootloader的相關配置文件

stage1.5:在mbr隨后的扇區中存放,主要用于與stage2所在的分區的文件系統進行交互。

stage2:通過bootloader加載所有配置文件及相關的環境參數信息,這些配置文件及相關的環境參數都存放于磁盤分區上的/boot目錄下。

3.加載系統內核,執行系統初始化信息:bootloader加載內核和initrd,然后在內存中讓initrd解壓縮成根目錄,然后內核可以在這個虛擬的根文件系統之上加載合適的驅動程序,來加載硬盤等設備,之后釋放虛擬的根文件系統,并以只讀的方式掛載磁盤上的真實的根文件系統,之后就開始正常的啟動過程

4.啟動用戶空間第一個執行程序/sbin/init:init主要功能是準備軟件運行環境,包括系統的主機名稱,網絡配置、文件系統格式等其他服務的啟動管理

init是通過自上而下讀取inittab文件來依次執行的,因此init的處理流程是:

1、讀取默認的runlevel,

2、使用/etc/rc/d/rc.sysinit進行系統初始化。

1、根據配置文件中的設定來設定主機名(讀取/etc/sysconfig/network文件中的HOSTNAME進行)

2、打印文本歡迎信息;

3、激活SELinux和udev;

4、掛在所有定義在/etc/fstab文件中的文件系統

5、激活swap設備

6、檢測根文件系統,并實現以讀寫方式重新掛載;

7、設置系統時鐘

8、更具/etc/sysctl.conf文件設定內核參數的值

9、激活LVM和RAID設備

10、加載額外的設備啟動

11、清理操作

3、由于采用的的是3級別,因此只進行l3:3:wait:/etc/rc.d/rc 3,其他的則忽略

4、配置好ctrl+alt+del組合件的功能

5、配置不斷電系統pf、pr兩種機制

6、啟動mingetty 6個終端

7、如果是5級別,則會以/etc/X11/prefdm-nodaemon啟動圖形化界面

 

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

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

#創建兩個分區,/dev/sdb1為500M,/dev/sdb2為5G

[root@centos6 mnt]# fdisk -l /dev/sdb

Disk /dev/sdb: 53.7 GB, 53687091200 bytes

255 heads, 63 sectors/track, 6527 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: 0x473aab9e

Device Boot????? Start???????? End????? Blocks?? Id? System

/dev/sdb1?????????????? 1????????? 65????? 522081?? 83? Linux

/dev/sdb2????????????? 66???????? 719???? 5253255?? 83? Linux

#格式化分區為ext4格式

[root@centos6 script]# mke2fs -t ext4 /dev/sdb1

[root@centos6 script]# mke2fs -t ext4 /dev/sdb2

#創建掛載目錄并掛載分區

[root@centos6 script]# mkdir -p /mnt/{boot,sysroot}

[root@centos6 script]# mount /dev/sdb1 /mnt/boot/

[root@centos6 script]# mount /dev/sdb2 /mnt/sysroot/

[root@centos6 grub]# df -h

Filesystem??? ??Size? Used Avail Use% Mounted on

/dev/sda2?????? 116G? 1.7G? 109G?? 2% /

tmpfs?????????? 364M???? 0? 364M?? 0% /dev/shm

/dev/sda1?????? 477M?? 32M? 420M?? 7% /boot

/dev/sdb1?????? 486M?? 29M? 432M?? 7% /mnt/boot

/dev/sdb2?????? 4.9G?? 11M? 4.6G?? 1% /mnt/sysroot

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

#復制核心文件和虛擬鏡像文件到新的boot目錄下

[root@centos6 grub]#cp /boot/vmlinuz-2.6.32-642.el6.x86_64 /mnt/boot/vmlinuz

[root@centos6 grub]#cp /boot/initramfs-2.6.32-642.el6.x86_64.img /mnt/boot/initramfs.img

#創建新的根目錄下必要的文件夾

[root@centos6 grub]# cd /mnt/sysroot/

[root@centos6 sysroot]# mkdir bin dev etc home lib lib64 media mnt opt proc root sbin selinux srv sys tmp usr var

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

#查看bash、ls、cat命令所需要用到的動態鏈接庫文件

[root@centos6 sysroot]# ldd /bin/bash

linux-vdso.so.1 =>? (0x00007fffc89c6000)

libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f688f4e3000)

libdl.so.2 => /lib64/libdl.so.2 (0x00007f688f2df000)

libc.so.6 => /lib64/libc.so.6 (0x00007f688ef4a000)

/lib64/ld-linux-x86-64.so.2 (0x00007f688f70d000)

[root@centos6 sysroot]# ldd $(which –skip-alias ls)

linux-vdso.so.1 =>? (0x00007ffc5dd97000)

libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f8dd942a000)

librt.so.1 => /lib64/librt.so.1 (0x00007f8dd9222000)

libcap.so.2 => /lib64/libcap.so.2 (0x00007f8dd901d000)

libacl.so.1 => /lib64/libacl.so.1 (0x00007f8dd8e15000)

libc.so.6 => /lib64/libc.so.6 (0x00007f8dd8a81000)

libdl.so.2 => /lib64/libdl.so.2 (0x00007f8dd887c000)

/lib64/ld-linux-x86-64.so.2 (0x00007f8dd9652000)

libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8dd865f000)

libattr.so.1 => /lib64/libattr.so.1 (0x00007f8dd845a000)

[root@centos6 sysroot]# ldd $(which –skip-alias cat)

linux-vdso.so.1 =>? (0x00007ffc04752000)

libc.so.6 => /lib64/libc.so.6 (0x00007f6754cba000)

/lib64/ld-linux-x86-64.so.2 (0x00007f6755057000)

#復制動態鏈接庫文件到新的根目錄下

[root@centos6 bin]# cp /bin/cat /mnt/sysroot/bin/

[root@centos6 bin]# cp /bin/ls /mnt/sysroot/bin/

[root@centos6 sysroot]# ldd $(which –skip-alias bash) |grep -o “/.*\.[[:digit:]]”|xargs -I {} cp {} /mnt/sysroot/lib64

[root@centos6 sysroot]# ldd $(which –skip-alias ls) |grep -o “/.*\.[[:digit:]]”|xargs -I {} cp {} /mnt/sysroot/lib64

[root@centos6 sysroot]# ldd $(which –skip-alias cat) |grep -o “/.*\.[[:digit:]]”|xargs -I {} cp {} /mnt/sysroot/lib64

[root@centos6 sysroot]# ll /mnt/sysroot/lib64/

total 2560

-rwxr-xr-x 1 root root? 154664 Mar? 1 05:38 ld-linux-x86-64.so.2

-rwxr-xr-x 1 root root?? 31280 Mar? 1 05:38 libacl.so.1

-rwxr-xr-x 1 root root?? 18712 Mar? 1 05:38 libattr.so.1

-rwxr-xr-x 1 root root?? 16600 Mar? 1 05:38 libcap.so.2

-rwxr-xr-x 1 root root 1923352 Mar? 1 05:38 libc.so.6

-rwxr-xr-x 1 root root?? 19536 Mar? 1 05:38 libdl.so.2

-rwxr-xr-x 1 root root? 142688 Mar? 1 05:38 libpthread.so.0

-rwxr-xr-x 1 root root?? 43944 Mar? 1 05:38 librt.so.1

-rwxr-xr-x 1 root root? 122056 Mar? 1 05:38 libselinux.so.1

-rwxr-xr-x 1 root root? 132408 Mar? 1 05:21 libtinfo.so.5

#使用chroot命令切換根目錄到/mnt/sysroot進行測試

[root@centos6 bin]# chroot /mnt/sysroot/

bash-4.1# ls

bin? dev? etc? home? lib? lib64? lost+found? media? mnt? opt? proc? root? sbin? selinux? srv? sys? tmp? usr? var

bash-4.1# bash

bash-4.1# cat <<EOF

> hello world

> EOF

hello world

4、為grub提供配置文件;

#創建grub配置文件

[root@centos6 sysroot]# vim /mnt/boot/grub/grub.conf

default=0

timeout=5

title CentOS (MyDIY)

root (hd0,0)

kernel /vmlinuz ro root=/dev/sdb2 init=/bin/bash

initrd /initramfs.img

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

在BIOS中將新創建的磁盤作為第一啟動設備

重啟后進入grub,編輯kernel參數,設置selinux=0 (注意:該參數要放置在init之前)

編輯完成后,按b鍵啟動后即可進入新建的系統。

3、制作一個kickstart文件以及一個引導鏡像。描述其過程。

1、創建鏡像生成目錄并將光盤下isolinux目錄copy到該目錄下,并對其下的文件賦予寫權限。

[root@centos6 ~]# mkdir -p /myboot/

[root@centos6 ~]# cp -a /mnt/cdrom/isolinux/ /myboot/

[root@centos6 ~]# cd /myboot/

[root@centos6 myboot]# chmod -R 777 isolinux/

2、創建kickstart配置文件

[root@centos6 myboot]# vim ks.cfg

#platform=x86, AMD64, or Intel EM64T

#version=DEVEL

# Firewall configuration

firewall –disabled

# Install OS instead of upgrade

install

# Use network installation

url –url=”http://mirrors.aliyun.com/centos/6/os/x86_64″

# Root password

rootpw –iscrypted $1$ifhHlqT/$mZ5IcE3P2Nn54UG3i/SI//

# System authorization information

auth? –useshadow? –passalgo=sha512

# Use text mode install

text

firstboot –disable

# System keyboard

keyboard us

# System language

lang en_US

# SELinux configuration

selinux –disabled

# Installation logging level

logging –level=info

# Reboot after installation

reboot

# System timezone

timezone? Asia/Shanghai

# Network information

network? –bootproto=dhcp –device=eth0 –onboot=on

# System bootloader configuration

bootloader –append=”crashkernel=auto rhgb quiet” –location=mbr –driveorder=”sda”

# Partition clearing information

clearpart –all? –drives=sda

# Disk partitioning information

part /boot –fstype=ext4 –size=500

part pv.01 –size=100000

volgroup myvg –pesize=4096 pv.01

logvol /home –fstype=ext4 –name=lv_home –vgname=myvg –size=5000

logvol / –fstype=ext4 –name=lv_root –vgname=myvg –size=50000

logvol swap –name=lv_swap –vgname=myvg –size=2000

logvol /usr –fstype=ext4 –name=lv_usr –vgname=myvg –size=15000

logvol /var –fstype=ext4 –name=lv_var –vgname=myvg –size=10000

%packages

@core

@server-policy

@workstation-policy

%end

3、創建光盤引導鏡像

[root@centos6 ~]# cd /myboot/

[root@centos6 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/

4、新建一臺虛擬機并使用上一步創建的光盤引導鏡像進行安裝,在光盤啟動菜單輸入下面參數指定使用kickstart配置文件進行一鍵安裝。

4、寫一個腳本 ? (1) 能接受四個參數:start, stop, restart, status ? ?start: 輸出“starting 腳本名 finished.” ? ?… ? (2) 其它任意參數,均報錯退出;

#!/bin/bash

# testsrv?????? service testing script

#

# chkconfig:??? 2345 50 60

# discrption: test

#

#

prog=$(basename $0)

 

if [ $# -lt 1 ];then

echo “usage:$prog {start|stop|restart|status}”

exit 1

fi

 

if [ $1 == start ];then

echo “starting $prog finished”

elif [ $1 == stop ];then

echo “stopping $prog finished”

elif [ $1 == restart ];then

echo “restart $prog finished”

elif [ $1 == status ];then

if pidof $prog &> /dev/null;then

echo “$prog is running”

else

echo “$prog is stopped”

fi

else

echo “usage:$prog {start|stop|restart|status}”

exit 2

fi

把次腳本復制到/etc/rc.d/init.d 下

然后執行 chkconfig –add SCRIPTNAME

服務就開啟了。

5、寫一個腳本,判斷給定的用戶是否登錄了當前系統; ? (1) 如果登錄了,則顯示用戶登錄,腳本終止; ? (2) 每3秒鐘,查看一次用戶是否登錄;

#!/bin/bash

read -p “send a username:” UNAME

while true ;do

if who | grep “$UNAME” > /dev/null ;then

break

fi

sleep 3

done

6、寫一個腳本,顯示用戶選定要查看的信息; ? ?cpu) display cpu info ? ?mem) display memory info ? ?disk) display disk info ? ?quit) quit ? ?非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;

cat << eof

cpu) display cpu info

mem) display memory info

disk) display disk info

quit) quit

eof

 

while true; do

read PARA

if [ $PARA == cpu ];then

lscpu

break

elif [ $PARA == mem ];then

free

break

elif [ $PARA == disk ];then

fdisk -l

break

elif [ $PARA == quit ];then

break

else

echo “need a right choose”

fi

done

7、寫一個腳本 ? (1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來; ? (2) 提示用戶輸入一個用戶名或輸入“quit”退出; ? ? 當輸入的是用戶名,則調用函數顯示用戶信息;

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

#!/bin/bashuserinfo() {??? uid=$(id -u $1)??? shell=$(cat /etc/passwd|grep fangtao|awk -F: ‘{print $NF}’)??? echo “UID: $uid”??? echo “SHELL: $shell”}?while true;do??? read -p “Input username[input ‘quit’ if you don’t want to continue]: ” input??? [ “$input” == “quit” ] && exit 0??? if [ -z “$input” ];then??????? echo “Blank not allowed!”??????? continue??? else??????? if id $input &>/dev/null;then??????????? userinfo “$input”??????????? continue??????? else??????????? echo “$input not exists!”??????????? continue??????? fi??? fidone

 

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

(0)
N27_yangjifengN27_yangjifeng
上一篇 2017-11-13
下一篇 2017-11-13

相關推薦

  • Linux系統進程管理

    本章學習內容     ——進程概念     ——進程創建、切換和撤銷     ——進程調度     ——進程分類     ——進程狀態 &n…

    Linux干貨 2016-09-13
  • linux發行版說明和哲學思想,以及常用命令說明

    Linux發行版主要流行的版本有3種:debian,slackware,red 其說明和特點如下圖。 Linux哲學思想: 1、一切皆文件;所有的一切都變成了文件!不光是軟件方面的比如傳統文件、目錄、字符設備、還包括硬件或者接口。如鼠標/mouse、打印機/lp、還有接口比如/usb. 2、單一目的的小程序;一個程序只負責干一件事,而且要把這個任務做好。 3…

    Linux干貨 2016-10-30
  • 馬哥教育網絡班21期-第六周課程練習

    第六周作業 請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; [root@qq tmp]# cp /etc/rc.d/rc.sysinit /tmp [root@qq&nbsp…

    Linux干貨 2016-08-02
  • CollabNetSubversionEdge服務搭建

    準備目錄并設置權限 [root@localhost ~]# mkdir /var/svn [root@localhost ~]# chown bohui:bohui /var/svn/ [root@localhost ~]# chmod 700 /v…

    Linux干貨 2015-10-18
  • 讀寫執行權限對文件和目錄的影響

    權限的作用 對于linux運維工作來說,熟練掌握文件管理技能是非常重要的,所謂“一切皆文件”,控制住文件的權限,可以說也就控制住了linux系統。而且,運維的工作要和成千上萬的文件打交道,對于文件屬性的熟識程度對于工作的順利開展有著深遠的影響。綜上,了解文件,熟悉文件,掌握文件,是我們運維的一個重要的課程。 不同權限對文件和目錄的影響 首先,我們現對權限進行…

    Linux干貨 2017-07-30
  • Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)

    有點拖了,沒有好好整理之前的內容,拖延癥害死人….. 這次介紹一些有趣的小文本處理工具,可以方便截取文本內容、排序、備份之類的。 head 用法:head [選項]… [文件]… head[OPTION]…[FILE]… 默認將每個指定文件的頭10行顯示到標準輸出。如果指定了多于一個文件,在每一段輸…

    Linux干貨 2017-08-02

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-12-02 09:09

    寫的很好,命令可以考慮用腳本語言表姐,排版出來就會很好看。

欧美性久久久久