中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談centos啟動那點事兒

發布時間:2020-02-24 18:23:54 來源:網絡 閱讀:1077 作者:趙雁生 欄目:系統運維

        linux系統啟動首先從BIOS開始檢測硬件信息=》開始啟動引導程序。讀取MBR(磁盤上第0磁道第一個扇區)也就是Master Boot Record 即主引導記錄。MBR記錄了預啟動信息和分區表信息。然后將grub(作用:設定內核映象在磁盤分區的位置)信息復制到內存中。為啟動內核做準備。===》加載內核。內核初始化產生一個PID為1的init進程。

***這里需要注意的安裝win+linux雙系統。先安裝w 然后linux。因為 win的引導程序會覆蓋其它系統的引導程序。造成linux 的grub缺失,無法啟動***

       由于內核運行起來是毫無用途的,需要一個系統能夠定義,管理和控制init進程的行為,并負責組織和運行完成初始化的工作,從而讓系統進入一個用戶設定的運行模式中,這個系統就是init系統。

        init(為英語:initialization的簡寫)是 unix和 類Unix 系統中用來產生其它所有進程的程序。它以守護進程的方式存在,其進程號為1。Linux系統在開機時加載Linux內核后,便由Linux內核加載init程序,由init程序完成余下的開機過程。

        init 的運行方式歷經: sysvinit  , upstart ,  systemd

        早期的linux系統的init運行方式兼容UNIX  system V(Unix系統的一個版本)下init運行方式。

        System V 下init的運行方式:

        System V init 檢查 '/etc/inittab' 文件中是否含有 'initdefault' 項。 這告訴 init 系統是否有一個默認的運行。System V init  描述了 8中狀態  。0-6 和S 或s .linux 設置了6各級別:#cat /etc/inittab

# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)

unix system v  默認是 3級別啟動。 linux服務器大多版本默認是3級別。而桌面版本一般為5.(圖形化界面)。如何查看 :   $ runlevel  或  $ who -r.

            Sysvinit 的優點是概念簡單。Service 開發人員只需要編寫啟動和停止腳本,概念非常清楚;將 service 添加/刪除到某個 runlevel 時,只需要執行一些創建/刪除軟連接文件的基本操作;這些都不需要學習額外的知識或特殊的定義語法(UpStart 和 Systemd 都需要用戶學習新的定義系統初始化行為的語言)。

            其次,sysvinit 的另一個重要優點是確定的執行順序:腳本嚴格按照啟動數字的大小順序執行,一個執行完畢再執行下一個,這非常有益于錯誤排查。UpStart 和 systemd 支持并發啟動,導致沒有人可以確定地了解具體的啟動順序,排錯不易。

         2006年的時候Ubuntu 打算把系統用在筆記本上。最大的困境是:sysvinit 對移動設備(USB 設備的設備)的熱插拔支持不夠。于是開發了upstart 基于事件機制.比如 U 盤插入 USB 接口后,udev 得到內核通知,發現該設備,這就是一個新的事件。UpStart 在感知到該事件之后觸發相應的等待任務,比如處理/etc/fstab 中存在的掛載點。采用這種事件驅動的模式,upstart 完美地解決了即插即用設備帶來的新問題。UpStart采用了異步方式 可以:更快地啟動系統;當新硬件被發現時動態啟動服務;硬件被拔除時動態停止服務。這些特點使得 UpStart 可以很好地應用在桌面或者便攜式系統中,處理這些系統中的動態硬件插拔特性。但是UPstart沒有完全擺脫 runlevel機制。只是在兼容的基礎上相應的優化了runlevel機制。

      為了減少系統啟動時間,systemd 的目標是:盡可能啟動更少的進程,盡可能將更多進程并行啟動,減少了啟動進程間的依賴。沒有必要的進程可以在需要使用的時候才啟動。此外systemd開創了新的管理體系。以前運行級別(runlevel)的概念被新的運行目標(target)所取代。target的命名體系類似于“multi-user.target"和原來的運行級別3(runlevel 3)相對應。在centos7中由于使用了新systemd管理機制。不再使用runlevel的概念,所以/etc/inittab不在被系統使用。

        centos7下systemd 管理體系理默認的target通過軟鏈接來實現的。

        (由于版面的問題  把  inode值  屬主屬組和日期  刪除)

[root@jf7 ~]# ll /etc/systemd/system/default.target
lrwxrwxrwx.    /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target

如果想修改運行目標。只需要把這個軟鏈接刪除。軟鏈接到新的運行目標。

# rm -rf /etc/systemd/system/default.target

# ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

我們來查看下centos7下 /etc/inittab文件

$ cat /etc/inittab
# inittab is no longer used when using systemd.
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
# systemd uses 'targets' instead of runlevels. By default, there are two main target
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
# To view current default target, run:
# systemctl get-default
# To set a default target, run:
# systemctl set-default TARGET.target

很明確定義了新的target的位置:/usr/lib/systemd/system/ctrl-alt-del.target

同樣查看下: (由于版面的問題  把  inode值  屬主屬組和日期  刪除)

# ll /usr/lib/systemd/system/runlevel*
lrwxrwxrwx   /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx   /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx   /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx   /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx   /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx  /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx   /usr/lib/systemd/system/runlevel6.target -> reboot.target

此外,systemd 管理體系還引入了 命令行工具systemctl。 systemctl  可以看作是service和chkconfig

得組合體。不過不用擔心。就的service命令在centos7下依舊可以使用,不過,它會重定向所有命令到新的systemctl 工具。

幾個例子:

        (sysvint)

        #service  network  start |stop |status

        #chkconfig httpd on

        ( systemclt)

        # systemctl start|stop|status network.service

        #systemctl  enable httpd.service

目前: Ubuntu 15.04及后續版本在默認的init上都安裝了 systemd.

        介紹完主流init系統后,開始繼續啟動系統。(centos7之前 PID 為1的進程是由 /sbin/init產生。而 centos7的PID為1的進程由 /usr/lib/systemd/systemd 產生。)

        BIOS - mbr  -grub  -加載內核到內存 - /etc/inittab- /etc/rc.d/rc.sysinit -啟動內核模塊/etc/modules.conf-啟動指定級別下的腳本rcx.d-執行/etc/rc.d/rc.local -/bin/login

        雖然前面說了新的init系統的諸多好處:不過現在畢竟centos7的企業用戶群體總體上不多。我們還是需要熟練掌握centos7一下的版本的啟動。方便以后的管理。而且centos7 在命令層面上完全向下兼容。

        梳理了,開機啟動流程。可以來些小的應用。    

        比如:在/etc/rc.d/rc.local  里面掛載移動設備,添加個性化服務啟動。如果,改階段那個服務啟動不了,導致。啟動阻塞。是否可以先進入單用戶模式,在/etc/rc.d/rc.local 文件下注釋掉服務。待開機后在測試,修復呢?

        最主要的是。熟悉了開機啟動后。可以根據開機的錯誤信息。排查是那個階段出現的錯誤。比如系統一起重啟。查看  /etc/inittab 是否設置了runlevel6模式。開機腳本錯誤是不是應該單用戶進入系統排查。/etc/rc.d/rcx.d下面的腳本,必要是可以把S開頭的腳本先改名為K 。待系統啟動后在恢復。



        

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

定日县| 汶上县| 灌云县| 平谷区| 大连市| 闽侯县| 兴城市| 河津市| 石景山区| 云安县| 额尔古纳市| 东光县| 册亨县| 无为县| 洛浦县| 伊吾县| 读书| 葫芦岛市| 富顺县| 青川县| 三穗县| 嘉峪关市| 江华| 吴桥县| 黑水县| 福贡县| 江北区| 田林县| 阳西县| 九台市| 忻州市| 宣威市| 沭阳县| 乐陵市| 昌黎县| 永川市| 通辽市| 永州市| 临猗县| 虎林市| 梓潼县|