<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      第八周知識總結

                            系統(tǒng)啟動和內(nèi)核管理

       

      一.CentOS 6 的啟動管理 

      1. 加載BIOS的硬件信息,獲取第一個啟動設備

      2. 讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息

      3. 加載核心操作系統(tǒng)的核心信息,核心開始解壓縮,并嘗試驅(qū)動所有的硬件設備

      4. 核心執(zhí)行init程序,并獲取默認的運行信息

      5. init程序執(zhí)行/etc/rc.d/rc.sysinit文件,重新掛載根文件系統(tǒng)

      6. 啟動核心的外掛模塊

      7. init執(zhí)行運行的各個批處理文件(scripts)

      8. init執(zhí)行/etc/rc.d/rc.local

      9. 執(zhí)行/bin/login程序,等待用戶登錄

      10. 登錄之后開始以Shell控制主機

       

      Grub:分散在硬盤的不同空間:有的是以0101存在,有的是以文件形式

      放在/boot/grub目錄下以及MBR前446個字節(jié)

      1.3.2.1 grub 功能和組成

      Centos6 Grub的三次階段:

      第一階段stage1:MBR前446個字節(jié)

      Stage1.5階段:加載第二階段所在分區(qū)的文件系統(tǒng) initramfs加載操作系統(tǒng)的根

      提供根分區(qū)的驅(qū)動

      第二階段stage2:放在/boot/grub/grub.conf里,記錄到內(nèi)核的路徑,

      此文件不屬于任何包。安裝操作系統(tǒng)運行程序生成,grub實際上是聯(lián)系內(nèi)核和硬件之間的橋梁

      通過記錄的路徑找到內(nèi)核,通過安裝anaconda(安裝向?qū)В┥?/strong>

      Default=0(0指的是第一個內(nèi)核,系統(tǒng)里面可以允許多個內(nèi)核存在,1是指第二個內(nèi)核)

      Timeout=5是在啟動時有五秒鐘選擇用哪個內(nèi)核  

      splashimage=(hd0,0)/grub/splash.xpm.gz是個背景圖片

      hiddenmenu在啟動時默認隱藏內(nèi)核菜單,刪掉則會顯示

      itle CentOS 6 (2.6.32-754.el6.x86_64內(nèi)核版本

      vmlinuz-2.6.32-754.el6.x86_64 內(nèi)核路徑

      root (hd0,0)第一個硬盤的第一個分區(qū)grub特殊描述方式相當于sda1,grub認為boot所在分區(qū)為根

      initrd /initramfs-2.6.32-754.el6.x86_64.img內(nèi)核驅(qū)動文件放在這里,是個小型的linux系統(tǒng)的根

      該文件是個gizp壓縮文件

      需要解包的話使用gunzip命令,先修改文件后綴,解開之后是cpio格式,使用cpio-iv解開

       

       

      root=UUID=bf543639-6204-42d7-a73a-1bc51032b951硬盤真正操作系統(tǒng)的根

      Grub.Conf文件無法修復,只能手動寫

      范例:誤刪除initramfs-2.6.32-754.el6.x86_64.img文件無法啟動,故障恢復

      [root@centos6 ~]#rm -f /boot/initramfs-2.6.32-754.el6.x86_64.img

      [root@centos6 ~]#reboot

      #進入rescue模式

      #chroot /mnt/sysimage

      #mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

      #sync

      #exit

      #exit

      #reboot

       

      范例:破壞內(nèi)核

      誤刪除內(nèi)核文件/boot/vmlinuz-2.6.32-754.el6.x86_64無法啟動,故障恢復

      光盤里面就有內(nèi)核包 ,可以重新裝內(nèi)核包,但是因為一個文件損壞重裝有些麻煩

      光盤里面isolinux文件下有vmlinuz內(nèi)核包

       

      [root@centos6 ~]#rm -f /boot/vmlinuz-2.6.32-754.el6.x86_64

      [root@centos6 ~]#reboot

      #進入rescue模式

      #chroot /mnt/sysimage

      #mount /dev/sr0 /mnt/

      #cp /mnt/isolinux/vmlinuz /boot/vmlinuz-2.6.32-754.el6.x86_64

      #sync

      #exit

      #reboot

       

      一階段損壞 啟動失敗 系統(tǒng)認為硬盤不具有啟動功能

      修復方法1:重新安裝

      重啟 快速按esc鍵 進入第三項CD-ROM Drive 光盤啟動

      進入rescue installd system 救援模式

      語言默認

      Setup netwoking NO

      Rescue continue

      Ok

      硬盤的根實際上被掛到/mnt/sysimage下

      chroot /mnt/sysimage 切根

      grub-install /dev/sda 重新安裝

      Sync 進行同步

      Reboot重啟ctrl alt+delete

       

      修復方法2:

      使用grub修復所有階段

      root (hdo,0)表示第一個硬盤的第一個分區(qū)

      root (hd0,0)

      Set up(hd0)

      修復完畢

      實際上修復的所有階段

       

       

       

       

      1.5階段損壞:破壞27個扇區(qū),系統(tǒng)認為具有啟動功能但是進去之后找不到驅(qū)動,界面閃爍

       

       

      修復:

      光盤啟動,進入rescue模式

      #chroot /mnt/sysimage

      #grub-install /dev/sda

      #sync

      #按 ctrl+alt+delete 三個鍵重啟動

       

       

      加載init

      關掉快捷鍵ctrl+delete+alt 重啟:

      vim /etc/init/control-alt-delete.conf

      在這一行前面加上#注釋掉exec /sbin/shutdown -r now "Control-Alt-Delete pressed"

       

       

       

       

      1.3.4INIT初始化

       

      Runlevel:即運行級別,可以定義在不同模式下服務是否啟動,不同模式就是服務開啟的不一樣

       

      /etc/rc.d/rc 控制服務腳本的開機自動運行的服務

      /etc/rc.d放的是7種模式rc服務腳本以及服務軟鏈接

      說明:rc N --> 意味著讀取/etc/rc.d/rcN.d/

      K: K####運行次序;數(shù)字越小,越先運行;數(shù)字越小的服務,通常為依賴到別的服務

      S: S####運行次序;數(shù)字越小,越先運行;數(shù)字越小的服務,通常為被依賴到的服務

      兩個服務1 2 先開的是S1 后開的是S2 那么關的時候則是S2先關 變成K1 ,S1變成K2

      如果兩者有依賴關系 那么是S2依賴S1,先開的服務被依賴,先關的服務依賴于別人

       

      范例:修改Satd95為關閉狀態(tài):S95atd實際上是文件/init.d/atd的軟鏈接

      刪除S95atd,打開/etc/init.d/atd 查看chkconfig 95是S的編號,變成K則是5

      然后ln -s ..init.d/K05atd

      下次開機atd則不啟動

      結束

       

       

       

       

       

       

       

       

       

       

       

       

       

      切換在centos6中想再次啟動除了以上方法之外還以可以:

      方法一:

      也可以使用ntsysv命令進入界面,找到atd空格就可以,但是缺點在第三模式下只能改一種模式的atd,如果想改5模式的atd 需要使用ntsysv --level=5

      方法二:

      使用chkconfig命令

      chkconfig --list 查看全部服務在0-6模式中是否開啟一目連然

      Chkconfig --level 34 atd off 直接把3和4模式下atd服務全部關閉

      Chkconfig atd on 直接默認把2-5模式全部打開atd,即我們生產(chǎn)中主流模式

      chkconfig --list [name]#查看單個服務在所有級別的啟動或關閉設定情形

       

       

      1.3.4.2 初始化腳本 sysinit 以及服務管理

      這些服務真正的腳本在/etc/init.d中

      如果我們開發(fā)一個軟件希望下次開機啟動或者自己寫一個啟動腳本

      需要再這個目錄下寫一個啟動腳本,格式如下:需要支持一些參數(shù),如start, stop等

      可以參考atd的腳本:

      345是在什么模式啟動,95是開機啟動的序號S,5是開機不啟動的編號k

      Description是寫的對腳本的描述

      下面是支持的參數(shù)

       

       

       

      自己編的服務開機啟動一般依賴別人,所以應該用數(shù)字比較大的,比的順序是從開頭往后按大小比

      但是不不能用100這樣的反而會排在前面,應該用9開頭的如:S99,964

      建立一個自己的服務腳本:touch testservice  -是默認全是off 99是S 3是K,

      編寫一個這樣的腳本:

       

      要在 /etc/init.d目錄下vim testservice

      #!/bin/bash

      # chkconfig :- 98 3 (:一定要有不然不符合格式)

      # description: test service 腳本描述

      .  /etc/init.d/functions 調(diào)用函數(shù)庫

      start (){

           touch /var/lock/subsys/testsrv建立起啟動文件

      action "Starting testservice:" 開機啟動

      }

      stop (){

          rm  touch /var/lock/subsys/testsrv 刪除啟動文件

          action "Stopping testservice:"

      }

      status(){ 判斷狀態(tài)

      if [ -f /var/lock/subsys/testsrv ] ;then

      echo  "testservice is running..." 如果這個文件存在就認為服務啟動打印測試服務在運行 加上-f即使這個文件不存在也不會報錯

       

       

          else

             echo "testservice is stopped"此文件不存在就停止

          fi

      }

       

      case $1 in參數(shù)$1如果是這下面那個參數(shù)就執(zhí)行哪個操作

      start)

          start

          ;;

      stop)

          stop

          ;;

      restart)

          restart

          ;;

      status)

          status

          ;;

      *)

          echo "Usage : /etc/init.d/testservice {start|stop|status|restart}"

      Esac 如果是其他的就打印這些

       

      最后加到服務列表里開機自動啟動:

      實際上是在/etc/rc.d里面生成軟鏈接

      Chkconfig --add testservice加入到服務列表里

      但是加進去之后再七種模式里面全都是off 因為在chkconfig里面我們寫的是—

      修改一下:

      Chkconfig  testservice on(直接2-5模式下都開啟)

      軟鏈接建立成功

       

       

       

       

      1.3.服務管理:

      service 命令:手動管理服務

      service 服務 start|stop|restart

      service --status-all

      /etc/rc.d/rc 控制服務腳本的開機自動運行 :

      for srv in /etc/rc.d/rcN.d/K*; do

      $srv stop

      done

      for srv in /etc/rc.d/rcN.d/S*; do

      $srv start

      Done

      說明:rc N --> 意味著讀取/etc/rc.d/rcN.d/

      K: K####運行次序;數(shù)字越小,越先運行;數(shù)字越小的服務,通常為依賴到別的服務

      S: S####運行次序;數(shù)字越小,越先運行;數(shù)字越小的服務,通常為被依賴到的服務

      配置服務開機啟動

      chkconfifig命令

      ntsysv命令

      chkconfifig 命令管理服務

      #查看服務在所有級別的啟動或關閉設定情形:

      chkconfig [--list] [name]

      #添加服務

      SysV的服務腳本放置于/etc/rc.d/init.d (/etc/init.d)

      #!/bin/bash

      chkconfig: LLLL nn nn  #LLLL 表示初始在哪個級別下啟動,-表示都不啟動

      description : 描述信息

      chkconfig --add name

       

      #刪除服務

      chkconfig --del name

      #修改指定的運行級別

      chkconfig [--level levels] name <on|off|reset>

      說明:--level LLLL: 指定要設置的級別;省略時表示2345

      特殊故障:某個服務沒起來  導致重啟起不來

      在啟動界面輸a 1進入單用戶界面 將起不來的服務臨時關閉

      就可以進入3模式或者5模式了 ,進去之后再進去排錯

      完成要比完美更重要

       

      1.3.4.4 非獨立服務

      服務分為獨立服務和非獨立服務

      瞬態(tài)(Transient)服務被超級守護進程 xinetd 進程所管理,

      依賴于xinetd的服務也稱為非獨立服務

       

      進入的請求首先被xinetd代理作為值班人員

       xinted可以幫我們監(jiān)控服務,在有人訪問的時候提醒開啟,實際上工作的還是詳細服務。可以節(jié)省資源。

      想把有人訪問的服務喚醒

      要在配置文件中用交互式方法把off改成o把disable=yes改成no即可:

      /etc/xinetd.conf

      /etc/xinetd.d/<service>

      或者用用chkconfifig控制非獨立服務開機啟動 (實際上也是把yes改成no)

      示例:chkconfifig telent on

      centos系列剛裝上的服務不會立即啟動,默認需要手動啟動

      Ubuntu上會默認把裝上的服務啟動

      1.3.4.5 開機啟動文件 rc.local

      rc.local比較特殊,排在99以及別的服務都在init。d下,他就是單獨的rc.Local,在他下面只有2-5模式,如果一個服務想開機就會啟動

      一是寫配置文件格式

      二是扔到rc.local里面,只要扔到這個文件里開機就會啟動

      只要扔到這個文件,讓系統(tǒng)能找的到路徑,加過執(zhí)行權限 開機就會啟動

      腳本不需要寫config以及描述 參數(shù)之類的 開機就可以啟動

      缺點是放在rc.local里面是不能用service控制的

      默認找的路徑是/etc/init.d目錄下的腳本

      centos6上rc。Local默認是有執(zhí)行權限的,在7上沒有

       

       

      /etc/rc.d/rc.local

      注意:正常級別下,最后啟動一個服務S99loca l沒有鏈接至/etc/rc.d/init.d一個服務腳本,而是指向 了/etc/rc.d/rc.local腳本

      不便或不需寫為服務腳本放置于/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令,可直接放置 于/etc/rc.d/rc.local文件中

      /etc/rc.d/rc.local在指定運行級別腳本后運行

       

       

       

       

       

      私人訂制linux

      一個完整的linux從啟動到用戶登錄用到的部件有:

      加電自檢

      Grub (stage1,1.5,2三個階段)

      內(nèi)核文件

      輔助的rmdisk文件

      加載系統(tǒng)中第一個進程,默認是init進程(讀取etc的initab文件,rc sys初始化等等腳本)

      或者準備個bash

      實驗具體步驟如下:

      1)分區(qū)并創(chuàng)建文件系統(tǒng)

      centos6上準備一塊新硬盤,

      分兩個必要的分區(qū)#分兩個必要的分區(qū),

      /dev/sdb1對應/boot   /dev/sdb2對應根 /

      一個給boot 一個給根用

      echo -e 'n\np\n1\n\n+1G\nw\n' | fdisk /dev/sdb (非交互式方法n創(chuàng)建分區(qū)\np回車加p接受默認的主分區(qū)\n1回車加1回車第一個分區(qū)默認值 \n回車然后回車加1G分1個g的空間,然后\nw回車w存盤退出)

       

      [root@centos6 ~]#echo -e 'n\np\n2\n\n\n\nw\n' | fdisk /dev/sdb

       

      ext4進行格式化

      mkfs.ext4 /dev/sdb1

      mkfs.ext4 /dev/sdb2 對文件系統(tǒng)進行格式化 之后準備數(shù)據(jù)

       

      2)掛載boot

      #子目錄必須為boot

      mkdir /mnt/boot

      對應的是mount /dev/sdb1 /mnt/boot

      3)安裝grub

      [root@centos6 ~]#grub-install --root-directory=/mnt/ /dev/sdb

      (默認是放在/dev/sdb /boot,但是我們希望存到mnt/boot,所以需要加上--root-directory對應的是mnt/boot/grub)

      4)準備內(nèi)核和initramfs文件

      cp /boot/vmlinuz-2.6.32-754.el6.x86_64 /mnt/boot/vmlinuz

      cp /boot/initramfs-2.6.32-754.el6.x86_64.img  /mnt/boot/initramfs.img

      建立grub.conf

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

      default=0

      timeout=6

      title wang linux 自定義

      root (hd0,0) 根的位置

      kernel /vmlinuz  root=/dev/sda2(雖然放到sdb上但是內(nèi)核路徑路徑要寫到sda上,因為sdb將來要拆下來裝到別的電腦上,在別的電腦上這塊硬盤就是第一塊硬盤,所以啟動的時候需要寫sda,為了以后用不對應當前)

       selinux=0 init=/bin/bash 啟動的時候不是使用init,使用的是bash作為第一個進程,用這種方式把selinux禁用了

      initrd /initramfs.img

      [root@centos6 ~]#tree /mnt/boot

      /mnt/boot

      5)準備根下面相關程序和庫

      [root@centos6 ~]#mkdir /mnt/sysroot 建個文件夾

      [root@centos6 ~]#mount /dev/sdb2   /mnt/sysroot 把分區(qū)掛上去

      [root@centos6 ~]#mkdir –pv

      /mnt/sysroot/{boot,dev,sys,proc,etc,lib,lib64,bin,sbin,tmp,var,usr,opt,home,root

      ,mnt,media}

      #復制bash等命令和相關庫文件,如:

      bash,ifconfig,insmod,ping,mount,ls,cat,df,lsblk,blkid,tree,fdisk

      [root@centos6 ~]#

      mkdir /mnt/sysroot/{dev,proc,etc,sys,lib,home,root}

      #準備網(wǎng)卡驅(qū)動

      [root@centos6 ~]#ethtool -i eth0

      driver: e1000

      version: 7.3.21-k8-NAPI

      firmware-version:

      bus-info: 0000:02:01.0

      supports-statistics: yes

      supports-test: yes

      supports-eeprom-access: yes

      supports-register-dump: yes

      supports-priv-flags: no

      [root@centos6 ~]#modinfo -n e1000

      /lib/modules/2.6.32-754.el6.x86_64/kernel/drivers/net/e1000/e1000.ko

      #cp/lib/modules/2.6.32-754.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/sysroot/lib/

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

      6)準備新的虛擬機

      將前一虛擬機sdb硬盤對應的vmdk文件增加進去,刪除原有磁盤,開機啟動

       

       

       

       

       

       

      2/proc 目錄和內(nèi)核參數(shù)管理

      linux啟動之后會做一些內(nèi)核參數(shù)的優(yōu)化,主要集中在/proc目錄下,process進程

      一些是跟進程有關一些是跟內(nèi)核參數(shù)設置有關

      /proc/sys sys是內(nèi)存中的信息,目錄下有和內(nèi)核有關的諸多參數(shù)

      存不住 臨時生效 也可以使用sysctl -w path.to.parameter=VALUE

      命令臨時生效 但是這種寫法就需要吧/換成.來寫:兩種方法

       

       

       

       如果想永久保存需要在這些配置文件中書寫:

      如果放在一個配置文件里比較臃腫,可以根據(jù)不同需要放在標紅的兩個文件中

      /etc/sysctl.conf總配置文件

      etc/sysctl.d/*.conf (比較推薦的寫法)

      /run/sysctl.d/*.conf

      /

      /usr/local/lib/sysctl.d/*.conf

      /usr/lib/sysctl.d/*.conf

      /lib/sysctl.d/*.conf

      /etc/sysctl.conf

       

      常用內(nèi)核參數(shù):可以放在上面的總配置文件或者conf里面寫可以(注意/要寫成.的形式)

      一般情況下下次重啟生效,需要立即生效 如果寫到總配置文件里不用加文件名,如果寫到子配置文件需要加上文件名

      使用sysctl -p 加上該文件(指重讀),如:

       

      cat /proc/sys/net/ipv4/icmp_echo_ignore_all(控制讓對方是否能ping通我)

      0表示可以ping通 改成1 就不可以了

      net.ipv4.ip_forward=1

      net.ipv4.ip_nonlocal_bind = 0(socket即ip地址加tcp/udp的端口號,標識處網(wǎng)絡中唯一的地址)默認為0沒有打開,=1之后是打開

      vm.drop_caches 釋放緩沖區(qū)

      fs.file-max = 1020000 系統(tǒng)中最大打開的個數(shù)(iPv4存在的個數(shù)2^32次方,每個ip有65536個端口,即如果不考慮帶寬,服務器可以支持并發(fā)量2^32*65536個用戶訪問,

      實際上單臺主機遠遠達不到,需要進行優(yōu)化

      Apache可以接受10k

      Nginx可以支持50k

      Lvs百萬

      Haproxy10萬)

      net.ipv4.icmp_echo_ignore_all =0 代表能ping通 1代表不能

      Ulimit -a可以查看記錄了每個進程最多打開的文件個數(shù),

      以及內(nèi)核TCP參數(shù)優(yōu)化

      net.ipv4.tcp_fin_timeout = 2

      net.ipv4.tcp_tw_reuse = 1

      net.ipv4.tcp_tw_recycle = 1

      net.ipv4.tcp_syncookies = 1

      net.ipv4.tcp_keepalive_time = 600

      net.ipv4.ip_local_port_range = 2000 65000

      net.ipv4.tcp_max_syn_backlog = 16384

      net.ipv4.tcp_max_tw_buckets = 36000

      net.ipv4.route.gc_timeout = 100

      net.ipv4.tcp_syn_retries = 1

      net.ipv4.tcp_synack_retries = 1

      net.ipv4.tcp_max_orphans = 16384

      net.core.somaxconn = 16384

      net.core.netdev_max_backlog = 16384

      使用sysctl  -a可以查看當前生效的各種內(nèi)核參數(shù)

      3 /sys 目錄

      /sys目錄:

      使用sysfs文件系統(tǒng),為用戶使用的偽文件系統(tǒng),輸出內(nèi)核識別出的各硬件設備的相關屬性信息,也有內(nèi)

      核對硬件特性的設定信息;有些參數(shù)是可以修改的,用于調(diào)整硬件工作特性

      udev通過此路徑下輸出的信息動態(tài)為各設備創(chuàng)建所需要設備文件,udev是運行用戶空間程序

      專用工具:udevadmin, hotplug

      udev為設備創(chuàng)建設備文件時,會讀取其事先定義好的規(guī)則文件,一般在/etc/udev/rules.d

      /usr/lib/udev/rules.d目錄下

       

      4 內(nèi)核模塊管理和編譯

      kernel:內(nèi)核核心,一般為bzImage,通常在/boot目錄下

      名稱為 vmlinuz-VERSION-RELEASE

      kernel object:內(nèi)核對象,一般不是必須有必須用的文件一般放置于 子文件

      /lib/modules/VERSION-RELEASE/ (內(nèi)核版本號)

      分門別類放到不同文件

       

       

       

       

       

      4.1 內(nèi)核版本

      運行中的內(nèi)核:

      uname命令:

      uname - print system information

      uname [OPTION]...

      -n: 顯示節(jié)點名稱

      -r: 顯示VERSION-RELEASE

      -a:顯示所有信息

      4.2 內(nèi)核模塊命令

      lsmod命令:

      顯示由核心已經(jīng)裝載的內(nèi)核模塊

      顯示的內(nèi)容來自于: /proc/modules文件

      [root@centos8 ~]#lsmod

      模塊名稱               大小   使用次數(shù) 被哪些模塊依賴

      Module                Size Used by

      uas                    28672  0

      usb_storage            73728  1 uas

      nls_utf8               16384  0

      isofs                  45056  0

      #

       

      modinfo命令:

      功能:管理內(nèi)核模塊

      配置文件:/etc/modprobe.conf, /etc/modprobe.d/*.conf

      顯示模塊的詳細描述信息

      modinfo [ -k kernel ] [ modulename|filename... ]

      常用選項

      -n:只顯示模塊文件路徑

      -p:顯示模塊參數(shù)

      -a:作者

      -d:描述

       

      裝載或卸載內(nèi)核模塊

      modprobe [ -C config-file ] [ modulename ] [ module parame-ters... ]

      會自動解決依賴性,但是模塊必須讓modprobe找到

      modprobe [ -r ] modulename…

      Rmmod+模塊 刪除模塊

      Insmod +文件路徑 需要先用modinfo - n +模塊

       

      加載模塊

       

       

      4.3.1.3 內(nèi)核編譯安裝實現(xiàn)

      使用別人編譯安裝好的(在課件9.4.3.3.2有升級最新內(nèi)核,利用elrepo源在centos7安裝新版內(nèi)核)

      想使用最新內(nèi)核 需要手動編譯安裝,但是一般很少編譯,因為最新的不一定能和生產(chǎn)環(huán)境匹配,需要做大量測試,升級新內(nèi)核一般是當前版本出現(xiàn)重大bug或者需要用到一些新功能,比如舊版本沒有容器功能docker

      編譯安裝內(nèi)核準備:

      (1) 準備好開發(fā)環(huán)境

      (2) 獲取目標主機上硬件設備的相關信息

      (3) 獲取目標主機系統(tǒng)功能的相關信息,例如:需要啟用相應的文件系統(tǒng)

      (4) 獲取內(nèi)核源代碼包, www.kernel.org

      實驗:編譯安裝最新內(nèi)核版本,并且讓新內(nèi)核支持ntfs

      windows里面可以用convert命令把fs系統(tǒng)轉(zhuǎn)化為ntfs系統(tǒng)

       

      借助于系統(tǒng)自帶的編譯參數(shù):放在 ls /boot/下

      有個config文件,定義了哪些參數(shù)啟用,哪些不啟用,啟用的是放在vmlinuz內(nèi)核文件中還是放在

      /lib/modules中,我們用config文件作為模板在他的的基礎上進行微調(diào)

       vim /boot/config-4.18.0-147.el8.x86_64

      每一個都代表內(nèi)核的一個功能

      y代表集成在內(nèi)核文件vmlinuz中

      m代表集成在lib/modules模塊文件中

      Config  ACPI xxx is not set 代表不啟用,比如ntfs

       

       

       

      4.3.1.2 開發(fā)環(huán)境相關包

      先裝 依賴包:gcc make ncurses-devel flex bison openssl-devel elfutils-libelf-devel

      4.3.1.3 內(nèi)核編譯安裝實現(xiàn)

      下載源碼文件

      準備文本配置文件/boot/config-`uname -r`

      1. make menuconfig:配置內(nèi)核選項 ,相當于傳統(tǒng)編譯的./configure 

      內(nèi)核的編譯不需要指定路徑,參數(shù)啟用我們拿config文件進行配置

       

      2.make [-j #] 合在一起編譯或者用以下兩步實現(xiàn):

      1)make -j  bzImage 編譯內(nèi)核文件vmlinuz

      2)make -j modules 編譯模塊 /lib/modules

      2.安裝模塊:需要分開安裝make modules_install

      3.安裝內(nèi)核相關文件:make install

      安裝bzImage為 /boot/vmlinuz-VERSION-RELEASE

      編譯安裝內(nèi)核實戰(zhàn)案例:下載編譯最新內(nèi)核以及開啟ntfs

      [root@centos8 ~]#yum -y install gcc make ncurses-devel flex bison openssl-devel elfutils-libelf-devel bc perl

      [root@centos8 ~]#tar xvf linux-5.6.12.tar.xz -C /usr/local/src (習慣性解到src目錄)

      [root@centos8 ~]#cd /usr/local/src

      [root@centos8 src]#cd linux-5.6.12/

      [root@centos8 linux-5.6.12]#cp /boot/config- 4.18.0-147.el8.x86_64 .config (把文件復制到當前目錄下)

      [root@centos8 linux-5.6.12]#vim .config

      #修改下面兩行,CentOS7無需修改

      # CONFIG_MODULE_SIG =y注釋掉

      CONFIG_SYSTEM_TRUSTED_KEYS="" 刪掉引號里面的內(nèi)容

      [root@centos8 linux5.6.12]#make help

      [root@centos8 linux5.6.12]#make menuconfig (加載界面進入菜單,找到FILE system 回車進入

      找到DOS/FAT/NT 回車進入 找到NTFS file system 用空格選做M,生成一個文件想用加載不想用可以不加載,下面兩項也可以選中,然后exit,再次exit回到第一個界面

      找到General setup修改內(nèi)核后面的后綴,進入Local version

      手動添加想加的后綴 yanglinux-6.6.6

      再次exit,然后yes保存)

      [root@centos8 linux5.6.12]#time make -j 2 進入編譯

      #或者兩步實現(xiàn):make -j 2 bzImage ; make -j 2 modules

      [root@centos8 linux]#pwd

      /usr/local/src/linux

      [root@centos8 linux]#du -sh .

      15G .

      [root@centos8 linux]#make modules_install

      [root@centos8 linux]#ls /lib/modules

      4.18.0-147.el8.x86_64  5.6.12-wanglinux-6.6.6

      [root@centos8 linux]#du -sh /lib/modules/5.6.12-wanglinux-6.6.6/

      3.5G /lib/modules/5.6.12-wanglinux-6.6.6/

      [root@centos8 linux]#make install

      [root@centos8 linux]#ls /boot

      config-4.18.0-147.el8.x86_64

      efi

      grub2

      initramfs-0-rescue-5b85fc7444b240a992c42ce2a9f65db5.img

      initramfs-4.18.0-147.el8.x86_64.img

      initramfs-4.18.0-147.el8.x86_64kdump.img

      initramfs-5.6.12-wanglinux-6.6.6.img

      loader

      lost+found

      System.map

      System.map-4.18.0-147.el8.x86_64

      System.map-5.6.12-wanglinux-6.6.6

      [root@centos8 ~]#ls /boot/loader/entries/

      5b85fc7444b240a992c42ce2a9f65db5-0-rescue.conf

      5b85fc7444b240a992c42ce2a9f65db5-4.18.0-147.el8.x86_64.conf

      5b85fc7444b240a992c42ce2a9f65db5-5.6.12-wanglinux-6.6.6.conf

      [root@centos8~]#cat/boot/loader/entries/5b85fc7444b240a992c42ce2a9f65db5-

      5.6.12-wanglinux-6.6.6.conf

      title CentOS Linux (5.6.12-wanglinux-6.6.6) 8 (Core)

      version 5.6.12-wanglinux-6.6.6

      linux /vmlinuz-5.6.12-wanglinux-6.6.6

      initrd /initramfs-5.6.12-wanglinux-6.6.6.img $tuned_initrd

      options $kernelopts $tuned_params

      id centos-20200513060531-5.6.12-wanglinux-6.6.6

      grub_users $grub_users

      grub_arg --unrestricted

      grub_class kernel

      [root@centos8 ~]#reboot

      [root@centos8 ~]#uname -r

      5.6.12-wanglinux-6.6.6

       

      ......

       

      編輯grub的配置文件

      Centos6往后的版本grub信息放到/boot/grub2里面了,centos6的grub。Conf文件變成了grub。Cfg文件,而且內(nèi)容很多有182行,已經(jīng)不推薦大家手寫,自動生成

       

      4.3.1.4 內(nèi)核編譯說明

      1. 配置內(nèi)核選項

      支持“更新”模式進行配置:make help

      (a) make config:基于命令行以遍歷的方式配置內(nèi)核中可配置的每個選項,大量使用直接敲命令

      (b) make menuconfig:基于curses圖形的文本窗口界面,修改少量配置使用 搜索替代

      (c) make gconfig:基于GTK (GNOME)環(huán)境窗口界面 默認帶的是GNome庫

      (d) make xconfig:基于QT(KDE)環(huán)境的窗口界面

      支持“全新配置”模式進行配置 (自定義)

      (a) make defconfig:基于內(nèi)核為目標平臺提供的“默認”配置進行配置

      (b) make allyesconfig: 所有選項均回答為“yes“

      (c) make allnoconfifig: 所有選項均回答為“no‘’

      2. 編譯內(nèi)核

      全編譯:

      make [-j #]

      編譯內(nèi)核的一部分功能:

      (a) 只編譯某子目錄中的相關代碼

      cd /usr/src/linux; make dir/

       

       

      交叉編譯一般用不到

       

       

       

      Busybox

      定制小型的Linux操作系統(tǒng):linux內(nèi)核+busybox

      Busy可以配個docker使用,在centos8上可以安裝docker

      實際上此處安裝的docker是假docker 其實是padman

       

      busybox的使用有三種寫法:

      1.busybox后直接跟命令,如 ./busybox ls

       

      2.直接將busybox重命名,如 cp busybox tar,但是用一百個工具需要拷貝一百次,很麻煩

      3.創(chuàng)建符號鏈接,如 ./ln -s busybox rm 需要寫相對路徑,推薦使用

      但是也是很麻煩,

       

      busybox的安裝

      3以上方法中,第三種方法最方便,但為busybox中每個命令都創(chuàng)建一個軟鏈接,相當費事,但是busybox提供自動方法:busybox編譯成功后,執(zhí)行make install,則會產(chǎn)生一個_install目錄,其中包含了busybox

      及每個命令的軟鏈接 ,可以把busybox拷貝到其他主機上,如果不妨到path變量里就需要寫路徑或者放進U盤攜帶

       

      編譯Busybox

      5.3 busybox編譯安裝

      busybox 的編譯過程與Linux內(nèi)核的編譯類似

       

      centos7上:

      [root@centos7 ~]#yum -y install   gcc gcc-c++ glibc glibc-devel make pcre pcre

      devel openssl openssl-devel systemd-devel zlib-devel glibc-static ncurses-devel

      [root@centos7 ~]#wget https://busybox.net/downloads/busybox-1.31.1.tar.bz2

      [root@centos7 ~]#tar xvf busybox-1.31.1.tar.bz2

      [root@centos7 ~]#cd busybox-1.31.1/

      [root@centos7 busybox-1.31.1]#make menuconfig #按下面選擇,把busybox編譯也靜態(tài)二進制,把程序和二進制文件放在一起、不用共享庫:Settings -->Build Options -->[*] Build static binary (no shared

      libs)

      [root@centos7 busybox-1.31.1]#make #如果出錯,執(zhí)行make clean后,重新執(zhí)行上面命令

      [root@centos7 busybox-1.31.1]#ls

      [root@centos7 busybox-1.31.1]#make install

      [root@centos7 busybox-1.31.1]#pwd

      /root/busybox-1.31.1

      [root@centos7 busybox-1.31.1]#ls

      applets                 debianutils loginutils             

      qemu_multiarch_testing

      applets_sh             docs         mailutils               README

      arch                   e2fsprogs   Makefile               runit

      archival               editors     Makefile.custom         scripts

      AUTHORS                 examples     Makefile.flags         selinux

      busybox                 findutils   Makefile.help           shellbusybox.links           include     make_single_applets.sh

      size_single_applets.sh

      busybox_unstripped     init         miscutils               sysklogd

      busybox_unstripped.map _install     modutils               testsuite

      busybox_unstripped.out INSTALL     networking             TODO

      Config.in               klibc-utils NOFORK_NOEXEC.lst       TODO_unicode

      configs                 libbb       NOFORK_NOEXEC.sh       util-linux

      console-tools           libpwdgrp   printutils

      coreutils               LICENSE     procps

      [root@centos7 busybox-1.31.1]#ll busybox -h

      -rwxr-xr-x 1 root root 2.6M May 13 14:46 busybox

      [root@centos7 busybox-1.31.1]scp busybox 10.0.0.88:/data/

      可以拷貝到其他主機上使用

       

       

       

      [root@centos7 busybox-1.31.1]#ls _install/

      bin linuxrc sbin usr

      [root@centos7 busybox-1.31.1]#ls _install/bin

      arch     dd             grep     login       netstat       rmdir         tar

      ash       df             gunzip   ls         nice           rpm           

      touch

      base64   dmesg         gzip     lsattr     nuke           run-parts     true

      busybox   dnsdomainname hostname lzop       pidof         scriptreplay

      umount

      cat       dumpkmap       hush     makemime   ping           sed           

      uname

      chattr   echo           ionice   mkdir       ping6         setarch       

      usleep

      chgrp     ed             iostat   mknod       pipe_progress setpriv       vi

      chmod     egrep         ipcalc   mktemp     printenv       setserial     

      watch

      chown     false         kbd_mode more       ps             sh           zcat

      conspy   fatattr       kill     mount       pwd           sleep

      cp       fdflush       link     mountpoint reformime     stat

      cpio     fgrep         linux32   mpstat     resume         stty

      cttyhack fsync         linux64   mt         rev           su

      date     getopt         ln       mv         rm             sync

      [root@centos7 busybox-1.31.1]#find _install/ -type l |wc -l

      396

      [root@centos7 busybox-1.31.1]#du -sh _install/ 

      2.6M _install/

      [root@centos7 busybox-1.31.1]#mkdir /mnt/sysroot/

      [root@centos7 busybox-1.31.1]#cp -a _install/* /mnt/sysroot/

       

       

       

       

       

       

       

      6 systemd

      6.1 systemd 特性

      Centos5以前使用sysv 程序必須順序啟動

      Centos6使用upstart 有依賴關系的順序,沒有依賴關系的可以順序啟動

      Centos7使用systemd可以并行啟動,表面上并行啟動實際上可能沒有啟動,有需要才啟動,centos6以后的版本都會自動解決依賴性,安裝或者刪除依賴包,自動啟動依賴服務

      使用systemctl 命令管理,systemctl命令固定不變,不可擴展,非由systemd啟動的服務, systemctl無法與之通信和控制,可以替代xinted,監(jiān)聽端口的是systemd

      系統(tǒng)引導時實現(xiàn)服務并行啟動

      按需啟動守護進程

      自動化的服務依賴關系管理

      同時采用socket式與D-Bus總線式激活服務

      socket與服務程序分離 service對應的是二進制進程,socket對應的是端口號ip地址

      向后兼容sysv init腳本

      使用systemctl 命令管理,systemctl命令固定不變,不可擴展,非由systemd啟動的服務,

      systemctl無法與之通信和控制

      系統(tǒng)狀態(tài)快照

       

       

       

      systemd核心概念:unit資源 :

      unit表示不同類型的systemd對象,通過配置文件進行標識和配置;文件中主要包含了系統(tǒng)服務、監(jiān)聽

      socket、保存的系統(tǒng)快照以及其它與init相關的信息

      #查看unit類型

      [root@centos8 ~]#systemctl -t help

       

      service unit: 文件擴展名為.service, 用于定義系統(tǒng)服務

      Socket unit: .socket, 定義進程間通信用的socket文件,也可在系統(tǒng)啟動時,延遲啟動服務,實現(xiàn) 按需啟動

      Target unit: 文件擴展名為.target,用于模擬實現(xiàn)運行級別 紅色表示常用

      Device unit: .device, 用于定義內(nèi)核識別的設備

      Mount unit: .mount, 定義文件系統(tǒng)掛載點

      Snapshot unit: .snapshot, 管理系統(tǒng)快照

      Swap unit: .swap, 用于標識swap設備

      Automount unit: .automount,文件系統(tǒng)的自動掛載點

      Path unit: .path,用于定義文件系統(tǒng)中的一個文件或目錄使用,常用于當文件系統(tǒng)變化時,延遲激

      活服務,如:spool 目錄

       

      Unit的配置文件:

      /usr/lib/systemd/system:每個服務最主要的啟動腳本設置,類似于之前的/etc/init.d/    centos7上/lib跟/usr/lib是同一個,是軟鏈接的關系

      /lib/systemd/system: ubutun的對應目錄

      /run/systemd/system:系統(tǒng)執(zhí)行過程中所產(chǎn)生的服務腳本,比上面目錄優(yōu)先運行

      一般不關注

      /etc/systemd/system:管理員建立的執(zhí)行腳本,類似于/etc/rcN.d/Sxx的功能,比上面目錄優(yōu)先運行,也是命令自動生成的,不需要手動修改

       

       

      systemctl管理系統(tǒng)服務service unit

      centos6相比好處在于 命令是把服務service是放在后面的,可以同時啟動多個服務,啟動成功無提示,只有失敗才會提示,且就算把ssh服務停了,但是處于連接中的ssh服務不會突然斷掉

      centos6是放在中間,啟動成功有提示

      systemctl COMMAND name.service

      #啟動:相當于service name start

      systemctl start name.service   

      #停止:相當于service name stop

      systemctl stop name.service

      #重啟:相當于service name restart

      systemctl restart name.service

      #查看狀態(tài):相當于service name status

      systemctl status name.service

      #禁止自動和手動啟動:

      systemctl mask name.service 在centos7.8上新增的mask功能

      手動無法啟用,可以有效避免誤啟動,只有使用下面取消禁止的命令才可以啟動

       

      #取消禁止

      systemctl unmask name.service

      #查看某服務當前激活與否的狀態(tài):

      systemctl is-active name.service

      active,否inactive

      查看所有已經(jīng)激活的服務:

      systemctl list-units --type|-t service

      #查看所有服務:

      systemctl list-units --type service --all|-a

      #設定某服務開機自啟,相當于chkconfig name on

      systemctl enable name.service

       

      #設定某服務開機禁止啟動:相當于chkconfig name off

      systemctl disable name.service

      #查看所有服務的開機自啟狀態(tài),相當于chkconfig --list

      systemctl list-unit-files --type service

      服務狀態(tài)

       

      #用來列出該服務在哪些運行級別下啟用和禁用:chkconfig –list name

      ls /etc/systemd/system/*.wants/name.service

      #查看服務是否開機自啟:

      systemctl is-enabled name.service

      enable。否disable

       

       

       

       

      #列出失敗的服務

      systemctl --failed --type=service

       

      #開機并立即啟動或停止

      systemctl enable --now postfix =systemctl enable postfix,加上start立即開啟且開機開啟

      systemctl disable  --now postfix 立即關閉且開機不啟動

      #查看服務的依賴關系:

      systemctl list-dependencies name.service

       

      #殺掉進程:

      systemctl kill unitname

       

       

      6.3 service unit文件格式

       

      centos7以及以后的版本,如果自己寫個軟件編譯安裝一個腳本,對應的服務是在service文件,而不是initab腳本,如果編譯安裝之后系統(tǒng)沒有提供service文件需要我們自己去寫

      Service文件在cd /lib/systemd/system路徑下

      atd.service為例,里面就寫了atd服務相關的文件一共三項文件格式如下:

      1)Unit:單元,寫的是unit描述信息

      以及after依賴關系,在這些資源之后運行的,也就是說想使用atd。Service需要先準備好這些資源

      修改配置文件之后需要使用systemctl daemon-reload命令同步,

      2) Service或者socket和資源有關,EXECSTart這一項本質(zhì)上就是我們執(zhí)行systemctl start atd.service時執(zhí)行的命令,$OPTS這個變量定義的路徑就是在EnviomentFile這一項的路徑里面,即/etc/sysconfig/atd里面

      IGnoresigpipe是是否支持信號

      3)Install是加載到系統(tǒng)中是否生效,如果沒有install說明只是扔到磁盤里面不起作用

      Wantby是弱依賴 ,即被這些服務所依賴,這些資源想啟動就要先啟動atd

       

       

       

       

       

      unit 格式說明:

      以 “#” 開頭的行后面的內(nèi)容會被認為是注釋

      相關布爾值,1、yes、on、true 都是開啟,0、no、offff、false 都是關閉

      時間單位默認是秒,所以要用毫秒(ms)分鐘(m)等須顯式說明

      service unit fifile文件通常由三部分組成:

      [Unit]:定義與Unit類型無關的通用選項;用于提供unit的描述信息、unit行為及依賴關系等

      [Service]:與特定類型相關的專用選項;此處為Service類型

      [Install]:定義由“systemctl enable”以及"systemctl disable“命令在實現(xiàn)服務啟用或禁用時用到

      的一些選項

      Unit段的常用選項:

      Description:描述信息

      After:定義unit的啟動次序,表示當前unit應該晚于哪些unit啟動,其功能與Before相反

      Requires:依賴到的其它units,強依賴,被依賴的units無法激活時,當前unit也無法激活

      Wants:依賴到的其它units,弱依賴

      Conflflicts:定義units間的沖突關

      Service段的常用選項:

      Type:定義影響ExecStart及相關參數(shù)的功能的unit進程啟動類型

      simple:默認值,這個daemon主要由ExecStart接的指令串來啟動,啟動后常駐于內(nèi)存中

      forking:由ExecStart啟動的程序透過spawns延伸出其他子程序來作為此daemon的主要服

      務。原生父程序在啟動結束后就會終止

      oneshot:與simple類似,不過這個程序在工作完畢后就結束了,不會常駐在內(nèi)存中

      dbus:與simple類似,但這個daemon必須要在取得一個D-Bus的名稱后,才會繼續(xù)運作.

      此通常也要同時設定BusNname= 才行

      notify:在啟動完成后會發(fā)送一個通知消息。還需要配合 NotifyAccess 來讓 Systemd 接收消

      idle:與simple類似,要執(zhí)行這個daemon必須要所有的工作都順利執(zhí)行完畢后才會執(zhí)行。這

      類的daemon通常是開機到最后才執(zhí)行即可的服務 

      EnvironmentFile:環(huán)境配置文件

      ExecStart:指明啟動unit要運行命令或腳本的絕對路徑

      ExecStartPre: ExecStart前運行

      ExecStartPost: ExecStart后運行

      ExecStop:指明停止unit要運行的命令或腳本

      Restart:當設定Restart=1 時,則當次daemon服務意外終止后,會再次自動啟動此服務

      PrivateTmp:設定為yes時,會在生成/tmp/systemd-private-UUID-NAME.service-XXXXX/tmp/

      目錄

      Install段的常用選項:

      Alias:別名,可使用systemctl command Alias.service

      RequiredBy:被哪些units所依賴,強依賴

      WantedBy:被哪些units所依賴,弱依賴

      Also:安裝本服務的時候還要安裝別的相關服務

      注意:對于新創(chuàng)建的unit文件,或者修改了的unit文件,要通知systemd重載此配置文件,而后可以選擇 重啟

      systemctl daemon-reload

       

       

      而在Ubuntu上如果想開機自啟的服務需要手動寫service文件

      或者自己創(chuàng)建類似于cenotsrc.local文件

      /lib/systemd/system/rc.local.service路徑里

      雖然寫了rc.local路徑,但是在Ubuntu里是沒有rc.local文件的

      Ubuntu里面存在rc.local.service服務但是進行啟動會失敗

      因為配置文件中缺少了INSTALL以及缺少了rc.local文件

      可以vim編輯一個rc.Local文件以及加上執(zhí)行權限

      以及在配置文件中增加INTSALL

       

       

       

       

      范例:Ubuntu實現(xiàn)程序進程開機程序自啟

      root@ubuntu1804 ~]#ll /lib/systemd/system/rc.local.service

      lrwxrwxrwx 1 root root 16 Dec 12  2018 /lib/systemd/system/rc.local.service ->

      rc-local.service

      [root@ubuntu1804 ~]#grep -v "^#" /lib/systemd/system/rc.local.service

      [Unit]

      Description=/etc/rc.local Compatibility

      Documentation=man:systemd-rc-local-generator(8)

       

      ConditionFileIsExecutable=/etc/rc.local

      After=network.target

      [Service]

      Type=forking

      ExecStart=/etc/rc.local start

      TimeoutSec=0

      RemainAfterExit=yes

      GuessMainPID=no

      [root@ubuntu1804 ~]#vim /etc/rc.local

      [root@ubuntu1804 ~]#cat /etc/rc.local

      #!/bin/bash

      echo -e '\E[31;1mstarting test service\E[0m'

      sleep 10

      [root@ubuntu1804 ~]#chmod +x /etc/rc.local

      [root@ubuntu1804 ~]#reboot

       

      6.4 運行級別

      target units:相當于CentOS 6之前的runlevel ,unit配置文件:.target

      某個target就代表某個資源的集合,某個服務是否啟動時可以單獨指定的

      打破了以前runlevel之前七種模式的局限性

       

      ls /usr/lib/systemd/system/*.target

      systemctl list-unit-files --type target --all

      和運行級別對應關系

      0 ==> runlevel0.target, poweroff.target

      1 ==> runlevel1.target, rescue.target

      2 ==> runlevel2.target, multi-user.target

      3 ==> runlevel3.target, multi-user.target

      4 ==> runlevel4.target, multi-user.target

      5 ==> runlevel5.target, graphical.target

      6 ==> runlevel6.target, reboot.target

       

      列出某個target涵蓋的資源查看依賴性

      systemctl list-dependencies graphical.target

       

      級別切換:相當于 init N centos7上推薦用這個命令切換

      systemctl isolate name.target

       

      進入默認target

      System default

      注意:只有/lib/systemd/system/*.target文件中AllowIsolate=yes 才能切換(修改文件需執(zhí)行systemctl

      daemon-reload才能生效)

      獲取默認運行級別: 相當于查看 /etc/inittab

      systemctl set-default name.target

      范例:

      [root@centos8 ~]#systemctl set-default multi-user.target

      [root@centos8 ~]#ls -l /etc/systemd/system/default.target

      lrwxrwxrwx. 1 root root 37 Nov 7 19:32 /etc/systemd/system/default.target ->

      /lib/systemd/system/multi-user.target

      切換至緊急救援模式:

      systemctl rescue

      切換至emergency模式:

      systemctl emergency

      說明:rescue.target 比emergency 支持更多的功能,例如日志等

      傳統(tǒng)命令init,poweroffff,halt,reboot都成為 systemctl的軟鏈接

      #關機

      systemctl halt、systemctl poweroff

      #重啟:

      systemctl reboot

      #掛起:

      systemctl suspend

      #休眠:

      systemctl hibernate

      #休眠并掛起:

      systemctl hybrid-sleep

      范例:禁用ctrl+alt+delete 重啟快捷鍵

      [root@centos8 ~]#ls -l /lib/systemd/system/ctrl-alt-del.target     

      lrwxrwxrwx. 1 root root 13 May 23 2019 /lib/systemd/system/ctrl-alt-del.target

      -> reboot.target

      [root@centos8 ~]#systemctl mask ctrl-alt-del.target

      Created symlink /etc/systemd/system/ctrl-alt-del.target → /dev/null.

      [root@centos8 ~]#init q (等于sytemctl daemon-reload命令,重新加載)

      [root@centos8 ~]#systemctl daemon-reload

       

       

       

       

       

      6.5 CentOS 7之后版本引導順序

      1. UEFi或BIOS初始化,運行POST開機自檢

      2. 選擇啟動設備

      3. 引導裝載程序, centos7是grub2,加載裝載程序的配置文件:

      /etc/grub.d/

      /etc/default/grub

      /boot/grub2/grub.cfg

      4. 加載initramfs驅(qū)動模塊

      5. 加載內(nèi)核選項

      6. 內(nèi)核初始化,centos7使用systemd代替init

      7. 執(zhí)行initrd.target所有單元,包括掛載/etc/fstab

      8. 從initramfs根文件系統(tǒng)切換到磁盤根目錄

      9. systemd執(zhí)行默認target配置,配置文件/etc/systemd/system/default.target

      10. systemd執(zhí)行sysinit.target初始化系統(tǒng)及basic.target準備操作系統(tǒng)

      11. systemd啟動multi-user.target下的本機與服務器服務

      12. systemd執(zhí)行multi-user.target下的/etc/rc.d/rc.local

      13. Systemd執(zhí)行multi-user.target下的getty.target及登錄服務

      14. systemd執(zhí)行graphical需要的服務

      通過systemd-analyze 工具可以了解啟動的詳細過程

       

      systemd-analyzeplot >boot.xml(隨便起個文件名)傳到windows里

      systemd-analyze blame 字符界面,不是很直觀

       

       

      6.6 設置內(nèi)核參數(shù)

      設置內(nèi)核參數(shù),只影響當次啟動

      啟動時,到啟動菜單,按e鍵,找到在linux 開頭的行后添加systemd.unit=desired.target

      比如:systemd.unit=emergency.target 或 systemd.unit=rescue.target

       

      6.7 破解 CentOS 78 root 密碼

      方法一:

      啟動時任意鍵暫停啟動

      按e鍵進入編輯模式

      將光標移動linux 開始的行,添加內(nèi)核參數(shù)rd.break

      按ctrl-x啟動

      mount –o remount,rw /sysroot

      chroot /sysroot

      passwd root

      #如果SELinux是啟用的,才需要執(zhí)行下面操作,如查沒有啟動,不需要執(zhí)行

      touch /.autorelabel

      exit

      reboot

      方法二:

      啟動時任意鍵暫停啟動

      按e鍵進入編輯模式

      將光標移動linux 開始的行,改為rw init=/sysroot/bin/sh

      按ctrl-x啟動

      chroot /sysroot

      passwd root

      #如果SELinux是啟用的,才需要執(zhí)行下面操作,如查沒有啟動,不需要執(zhí)行

      touch /.autorelabel

      exit

      reboot

       

      posted @ 2020-05-17 16:39  肖豪  閱讀(455)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 91精品国产色综合久久| 四虎亚洲国产成人久久精品| 国产精品一区二区在线欢| 久久99精品久久久久久琪琪| 玩弄少妇人妻| 国产精品日韩av一区二区| 日本黄色一区二区三区四区| 亚洲精品久久久中文字幕痴女| 蓬莱市| 亚洲无av中文字幕在线| 亚洲精品综合久中文字幕| 成人精品视频一区二区三区| 久久一本人碰碰人碰| 国模雨珍浓密毛大尺度150p| 亚洲国产精品国自拍av| 久久综合国产色美利坚| 亚洲国产成人久久77| 国产精品自在自线免费观看| 青青国产揄拍视频| 国产精品亚洲中文字幕| 99国产欧美另类久久久精品| 精品人妻日韩中文字幕| 四虎影视www在线播放 | 亚洲国产中文字幕在线视频综合| 亚洲天堂在线观看完整版| 大石桥市| 欧美成人www免费全部网站 | 亚洲嫩模一区二区三区| 69精品丰满人妻无码视频a片| 精品日韩色国产在线观看| 亚洲精品欧美综合二区| 久久综合伊人77777| 国产午夜福利精品视频| 少妇人妻偷人精品视蜜桃| 无码人妻精品一区二区三区下载| 精品久久久久中文字幕日本| 亚洲国产成人综合精品| 成人看的污污超级黄网站免费| 综合色天天久久| 国产av一区二区亚洲精品| 性姿势真人免费视频放|