linux啓動和自動掛載

系統啓動流程

一.BIOS 加電自檢

  當你按電源開關開機時,電腦會首先去啓動BIOS(基本輸入輸出系統),BIOS一般是集成在主板上的.

  BIOS 的工作

1.檢測連接硬件,比如顯卡,內存,磁盤等等,檢測的目的是以後把這些設備信息提供給操作系統

2.尋找啓動磁盤,每一種BIOS都會有開機啓動菜單,可以在菜單裏設置以哪個設備啓動系統

  比如:光驅,硬盤,網絡等等,這個菜單可以設置多個選項,依照設置次序在設備上尋找啓動信息

3.找到了啓動硬盤,接着BIOS就會在磁盤上找啓動扇區,找到內核啓動系統.

  1)先試着尋找第一個扇區,也就是主引導記錄MBR(Master Boot Record)

  2)如果第一個扇區上沒有沒有存在操作系統,再去尋找標記爲BOOT的分區.

不論是MBR還是BOOT分區,存儲操作系統的空間都只有446字節;

如果沒有在上面提到的位置找到操作系統的內核,那麼BIOS就無法繼續啓動工作.

而我們的內核往往會大於446個字節,存放在磁盤的其他位置上,既然446裝不下內核,又爲了能順利的找到放在其他位置上的內核,人們想出了一個辦法就在446字節裏寫了一個小程序,當BIOS試着啓動操作系統時就會執行這個小程序,然後再由小程序來載入其他位置的內核.這個小程序就是啓動載入器(boot loader)

二.BOOT Loader

  linux的boot loader(上文提到的小程序) 常見的有兩種:lilo grub

因爲lilo存在着一個1024柱面的限制,並且更改了磁盤上的啓動信息文件後需要重新啓動系統才能同步446字節的內容,因爲lilo的缺陷,已經被grub所取代.現在的絕大多數類linux系統都採用grub做boot loader;

grub則沒有了lilo各種限制,而且方便到能修改系統文件的啓動內容就可以立刻與446內容同步.

那麼我們就看看grub的內容 它存在於 /boot/grub中

GRUB有幾個重要的文件,STAGE1、STAGE1.5、STAGE2

STAGE1:它只有512字節,通常放在MBR中,它的作用很簡單,就是在系統啓動時用於裝載STAGE2並將控制權交給它。

STAGE2:GRUB的核心,所有的功能都是由它實現。

STAGE1.5:介於STAGE1和STAGE2之間,是它們的橋樑,因爲STAGE2較大,通常都是放在一個文件系統當中的,但是STAGE1並不能識別文件系統格式,所以才需要STAGE1.5來引導位於某個文件系統當中的STAGE2。根據文件系統格式的不同,STAGE1.5也需要相應的文件,如:e2fs_stage1_5,fat_stage1_5,分別用於識別ext和fat的文件系統格式。它存放於1-63的柱面之間.

引導順序如下:STAGE1->;STAGE1.5->;STAGE2,

主要的配置文件時 grub.conf

裏面選項含義:

title:一個操作系統引動的標頭,可以使多個

root :指明所需文件存在於哪個磁盤哪個分區上 (hd0,0)表示第一個硬盤,第一個分區(啓動分區),可參考/boot/grub/device.map

kernel:內核文件的名字,並且會有一些加載內核時的參數 ro代表以只讀方式加載

initrd:包含一些附加的驅動程序

三.內核啓動

內核啓動後會向bios查詢電腦的所有硬件信息,然後自己接手下來管理這些設備,以便提供給linux使用

內核會試着驅動這些設備,這些設備的驅動一部分包含在內核中,叫做靜態驅動,一部分以模塊的方式(動態)存放文件系統中,由於此時還未掛載任何文件系統,因此還不能使用文件系統中的模塊,這裏只能驅動在內核中存在的硬件驅動程序的對應設備.想驅動內核中未包含的硬件驅動就需要加載文件系統.

內核會嘗試掛載根文件系統,根文件系統至少包含 /etc /bin /sbin /lib /dev 這5大目錄

他們5個缺一不可.都會導致系統無法啓動

根文件系統掛載是以只讀方式掛載的,因爲這時linux還在啓動階段,並不穩定,避免破壞系統資料

四.啓動INIT服務

順利的掛載了根文件系統後,就會啓動init服務

內核會按 /sbin/init /etc/init /bin/init 順序尋找init程序,

如果找不到則內核報錯(判斷1被刪、2 x權限、3#!/bin/bash、4/bin/bash)這裏存在一個參數 init=/bin/sh 如果啓動時指定了則最後執行/bin/sh

 而不會產生內核報錯.也被稱爲快速啓動,因爲它忽略了很多啓動初始化工作.

啓動init的目的就是爲了初始化系統環境,啓動了init就證明了內核已經順利啓動,接下來就由init服務來建立linux使用環境

init做了什麼?它會讀取 /etc/inittab 文件,根據這個文件的信息來進行初始化工作.

會執行三個腳本 /etc/rc.d/rc.sysinit /etc/rc.d/rc /etc/rc.d/rc.local

rc.sysinit 主要的功能用來建立系統的基本環境

啓動udev selinux子系統

udev負責產生 /dev中的文件,selinux負責增強系統的安全性

設定核心參數 sysctl -p 加載 /etc/sysctl.conf

設定系統時間 將硬件時間設定爲系統時間

加載鍵盤和交換分區 swapon -a -e

設置主機名,掛載文件系統,並將根重新掛載爲可讀寫的.

加載動態驅動模塊

USB設備與RAID & LVM

卸載 /initrd/ 目錄

rc 腳本設置啓動級別 linux中有許多不同的啓動級別,不同的啓動級別會制定不同的服務

   根據指定rc的參數會對應執行 /etc/rc.d/rc[0-6].d/ 中的連接腳本(/etc/init.d)文件 以S開頭的則啓動

rc.local 前兩個腳本都是系統至關重要的腳本,如果我們想在啓動過程中放置一些其他程序

 應該使用rc.local腳本中 因爲S99local存在於rc[2-5].d中

三個RC腳本執行完畢後,就會建立虛擬主控制檯 執行 /bin/login 就提供了用戶登陸界面了

如果是圖形 L5級別的話,會啓動X window登錄界面

所有的啓動就都已經完畢

五.用戶環境初始化 login→PAM→bash→5個環境文件

grub安裝

1.rescue模式 mkdir abc   mount /dev/sda2 abc/   mount /dev/sda1 abc/boot/    chroot abc/

  ls -l /dev/sda[]

  mknod abc/dev/sda b 8 0

  mknod abc/dev/sda1 b 8 1

  mknod abc/dev/sda2 b 8 2

  grub-install /dev/sda

    mkdir /dev/mapper

    vim /etc/mtab   加入 /dev/sda1 /boot ext3 rw 0 0   設置跟系統

  chroot abc/

  grub-install /dev/sda

  sync

  cd grub/

設置硬盤安裝

cp isolinux/ /boot/ -a  (光盤目錄下)

vim grub.conf

title iso hard install OS rhel5u3

root (hd0,0)

kernel /isolinux/vmlinuz

initrd /isolinux/initrd.img

服務的基本控制

講啓動級別時,我們知道需要啓動  /etc/rc.d/rc[0-6] 中的腳本 這些腳本既是服務的啓動腳本

根據啓動級別來控制應該啓動哪些服務 他們都是軟連接,真實文件存在於 /etc/init.d/ 中

我們可以去這個目錄下去手動加參數來執行啓動腳本

也可以用命令 service 服務名 start|stop|restart 等等參數來控制

啓動級別

0 關機 1 單用戶 2 多用戶模式但帶網絡但不能遠程登錄 3 不受限多用戶模式TUI 4 保留 5 圖形模式 6 重新啓動

# runlevel 查看啓動級別(上次的級別和當前級別)

# init 5 切換級別

添加grub密碼

grub-md5-crypt 加密密碼串

vi /boot/grup/grup.conf

   hiddenmenu   給grup菜單加密

   password --md5 加密密碼串

給操作系統加密可用明文密碼

刪除grub密碼

grub> root (hd0,0)  grub.conf

    > kernel / TAB 查看目錄結構,是否爲/boot

    > kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/sda2 init=/bin/bash(從grub菜單啓動)

    > initrd /initrd-2.6.18-128.el5.img

    > boot

mount -o remount,rw /  (rc.sysinit)

mount /dev/sda1 /boot  (修改grub.conf,可把grub密碼刪除)

光盤救援模式

mkdir mysystem

mount /dev/sda2 mysystem/

mount /dev/sda1 mysystem/boot/

chroot mysystem   (切換真實系統)

/etc/fstab

第一項  是要mount的存儲裝置的實體位置或者用卷標

第二項  要掛到哪個目錄位置

第三項  指定要掛載的系統格式

第四項  mount時要設定的狀態,只讀或defauls  man mount

第五項  提供DUMP功能,在系統DUMP時需要BACKUP的標誌位,其內定位置是0

第六項  設定開機時文件系統是否要check

除了root的文件系統其必要的check爲1 其他視需要而定 默認是0

LABEL=/boot             /boot                   ext3    defaults        1 2

觸發掛載

觸發掛載的服務名叫做 autofs 系統有一個自動加載光驅的配置

auto.master(配置文件) → /misc   /etc/auto.misc(監控配置文件)

/misc是自動掛載的上層目錄,/etc/auto.misc指明瞭對/misc下的目錄子目錄掛接的配置信息

定製自己的配置信息

vi /etc/auto.misc       →   myext3    -fstype=auto    :/dev/sda6  (cd myext3)

定義自己的父級目錄

vi /etc/auto.master     →   /opt   /etc/auto.opt

vi /etc/auto.opt        →   myext3    -fstype=auto    :/dev/sda6

service autofs restart

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章