前端linux基礎,這一篇就夠了

lio-mengxiang發表於2019-03-21

1. Linux安裝

因為圖太多了,轉載一篇從虛擬機器vmware配置到centos7詳細安裝教程

https://www.cnblogs.com/wcwen1990/p/7630545.html

2.linux常用命令

2.1 常見目錄

/bin

存放二進位制可執行檔案(ls,cat,mkdir等),常用命令一般都在這裡。

/etc

存放系統管理和配置檔案

/home

存放所有使用者檔案的根目錄,是使用者主目錄的基點,比如使用者user的主目錄就是/home/user,可以用~user表示

/usr

用於存放系統應用程式,比較重要的目錄/usr/local 本地系統管理員軟體安裝目錄(安裝系統級的應用)。這是最龐大的目錄,要用到的應用程式和檔案幾乎都在這個目錄。

/usr/x11r6 存放x window的目錄

/usr/bin 眾多的應用程式

/usr/sbin 超級使用者的一些管理程式

/usr/doc linux文件

/usr/include linux下開發和編譯應用程式所需要的標頭檔案

/usr/lib 常用的動態連結庫和軟體包的配置檔案

/usr/man 幫助文件

/usr/src 原始碼,linux核心的原始碼就放在/usr/src/linux裡

/usr/local/bin 本地增加的命令

/usr/local/lib 本地增加的庫

/opt

額外安裝的可選應用程式包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這裡。

/proc

虛擬檔案系統目錄,是系統記憶體的對映。可直接訪問這個目錄來獲取系統資訊。

/root

超級使用者(系統管理員)的主目錄(特權階級^o^)

/sbin

存放二進位制可執行檔案,只有root才能訪問。這裡存放的是系統管理員使用的系統級別的管理命令和程式。如ifconfig等。

/dev

用於存放裝置檔案。

/mnt

系統管理員安裝臨時檔案系統的安裝點,系統提供這個目錄是讓使用者臨時掛載其他的檔案系統。

/boot

存放用於系統引導時使用的各種檔案

/lib

存放跟檔案系統中的程式執行所需要的共享庫及核心模組。共享庫又叫動態連結共享庫,作用類似windows裡的.dll檔案,存放了根檔案系統程式執行所需的共享檔案。

/tmp

用於存放各種臨時檔案,是公用的臨時檔案儲存點。

/var

用於存放執行時需要改變資料的檔案,也是某些大檔案的溢位區,比方說各種服務的日誌檔案(系統啟動日誌等。)等。

/lost+found

這個目錄平時是空的,系統非正常關機而留下“無家可歸”的檔案(windows下叫什麼.chk)就在這裡

2.2 命令基本格式

2.2.1 命令提示符

[root@xiaoming ~]#
複製程式碼
  • root 當前登入使用者
  • localhost 主機名
  • ~ 當前工作目錄,預設是當前使用者的家目錄,root就是/root,普通使用者是 /home/使用者名稱
  • 提示符 超級使用者是 #,普通使用者是$

2.2.2 命令格式

  • 命令 [選項] [引數]
  • 當有多個選項時,可以寫在一起
  • 一般引數有簡化和完整寫法兩種 -a--all等效

2.2.3 ls

  • 查詢目錄中的內容
  • ls [選項] [檔案或者目錄]
  • 選項
    • -a 顯示所有檔案,包括隱藏檔案
    • -l 顯示詳細資訊
    • -d 檢視目錄本身的屬性而非子檔案 ls /etc/
    • -h 人性化的方式顯示檔案大小
    • -i 顯示inode,也就是i節點,每個節點都有ID號
  • 預設當前目錄下的檔案列表
 -l

顯示詳細資訊

drwxr-xr-x .  1 root  root   800 Sep 16 00:19 logs
複製程式碼
drwxr-xr-x.1rootroot800Sep 16 00:19logs
檔案型別和許可權ACL許可權硬連結引用計數所有者所屬組檔案大小最後修改時間檔名
 檔案型別和許可權
-rw-r--r--
複製程式碼
  • 檔案型別 - 檔案、d 目錄、l 軟連結檔案
  • u(所有者)、g(所屬組)、o(其他人)
  • r(read) 讀取、w(write) 寫入、x(execute) 執行

2.3 檔案處理命令

2.3.1 mkdir

  • 建立目錄 make directory
  • mkdir -p [目錄名]
    • -p 遞迴建立

2.3.2 cd

  • 切換所在目錄 change directory
  • cd [目錄]
    • ~ 家目錄
    • 家目錄
      • 上次目錄
    • . 當前目錄
    • .. 上級目錄
  • 相對路徑是參照當前所在目錄
  • 絕對路徑是從根目錄開始
  • 按TAB鍵可以補全命令和目錄

2.3.3 pwd

  • 顯示當前目錄 pwd

2.3.4 rmdir

  • 刪除目錄 remove empty directory
  • rmdir [目錄名]

2.3.5 rm

  • 刪除檔案或者目錄 remove
  • rm [檔案或者目錄]
    • -r 刪除目錄
    • -f 強制刪除
  • rm -rf 檔案或者目錄] 遞迴強制刪除所有目錄

2.3.6 cp

  • copy 複製命令
  • copy [原始檔或者目錄] [目標檔案]
    • -r 複製目錄,預設是複製檔案
    • -p 連帶檔案屬性複製
    • -d 若原始檔是連結檔案,則複製連線屬性
    • -a 相當於 -rpd

2.3.7 mv

  • 移動檔案或者改名 move
  • mv [原始檔或者目錄] [目標檔案]

2.3.8 ln

  • 連結命令,生成連結檔案 link
2.3.8.1 硬連結特徵
  • 擁有相同的i節點和儲存block塊,可以看作是同一個檔案
  • 可以通過i節點訪問
  • 不能跨分割槽
  • 不能針對目錄使用
  • 一般不使用
2.3.8.2 軟連結特徵
  • ln -s [原始檔] [目標檔案]
    • -s 建立軟連結
  • 類似Windows快捷方式
  • 軟連結擁有自己的i節點和Block塊,但是資料塊中只儲存原始檔的檔名和i節點號,並沒有實際的檔案資料
  • lrwxrwxrwx l 軟連結 軟連結的檔案許可權都是 777
  • 修改任意一個檔案,另一個都會改變
  • 刪除原始檔,軟連結不能使用
  • 軟連結原始檔必須寫絕對路徑

2.4 檔案搜尋命令

2.4.1 locate

  • 在後臺資料庫中按檔名搜尋,速度比較快
  • 資料儲存在/var/lib/mlocate後臺資料庫,每天更新一次
  • 可以updatedb命令立刻更新資料庫
  • 只能搜尋檔名
  • /etc/updatedb.conf 建立索引的配置檔案
    • PRUNE_BIND_MOUNTS = "yes" 全部生效,開啟搜尋限制
    • PRUNEFS 不搜尋的檔案系統
    • PRUNENAMES 忽略的檔案型別
    • PRUNEPATHS 忽略的路徑 /tmp

2.4.2 whereis

  • 搜尋命令所在路徑以及幫助文件所在位置
  • whereis 命令名 whereis ls
    • -b 只查詢可執行檔案
    • -m 只查詢幫助檔案

2.4.3 which

  • 可以看到別名 which ls
  • 能看到的都是外部安裝的命令
  • 無法檢視Shell自帶的命令,如 which cd

2.4.4 環境變數

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

  • 定義的是系統搜尋命令的路徑
  • echo $PATH

2.4.5 find

  • 檔案搜尋命令
  • find [搜尋範圍] [搜尋條件]
2.4.5.1 按名稱搜尋
  • 避免大範圍的搜尋,會非常消耗系統資源
    find / -name aaa.log
    複製程式碼
2.4.5.2 萬用字元
  • find是在系統當中搜尋符合條件的檔名,如果需要匹配,使用萬用字元匹配,萬用字元是完全匹配
  • 萬用字元
    • * 匹配任意內容
    • ? 匹配任意一個字元
    • [] 匹配任意一箇中括號內的字元
find . -name "ab[cdef]"
複製程式碼
2.4.5.3 -i

不區分大小寫

find / -iname A.log
複製程式碼
2.4.5.4 -user

按所有者進行搜尋

find /root -user root
find /root -nouser
複製程式碼
2.4.5.5 按時間搜尋
find /nginx/access.log -mtime +5
複製程式碼
引數含義
atime檔案訪問時間
ctime改變檔案屬性
mtime修改檔案內容
引數含義
-55天內修改的檔案
55天前當前修改的檔案
+55天前修改的檔案
2.4.5.6 按大小搜尋
  • k小寫,M大寫
find . -size 100k
複製程式碼
引數含義
-8k小於8K
8k等於8K
+8k大於8K
+8M小於8M
2.4.5.7 按i節點搜尋
find . -inum 123456
複製程式碼
2.4.5.8 綜合應用
find /tmp -size +10k -a -size -20k
複製程式碼
  • 查詢/etc目錄下,大於10KB並且小於20KB的檔案
  • -a and 邏輯與,兩個條件都滿足
  • -o or 邏輯或,兩個條件滿足一個就可以
find /tmp -size +10k -a -size -20k -exec ls -lh {} \;
複製程式碼
  • exec 對上個命令的結果進行操作
2.4.5.9 grep
  • 在檔案當中匹配符合條件的字串
  • grep "10" access.log
    • -i 忽略大小寫
    • -v 排除指定字串
  • find命令,在系統當中搜尋符合條件的檔名,如果需要匹配,使用萬用字元匹配,萬用字元是完全匹配
  • grep命令 在檔案當中搜尋符合條件的字串,如果需要匹配,使用正規表示式進行匹配,正規表示式時包含匹配

2.5 幫助命令

2.5.1 基本用法

  • man 命令 獲取指定命令的幫助
  • man ls 檢視ls的幫助
man -f ls
whatis ls
man 1 ls
man 1p ls
複製程式碼

2.5.2 關鍵字搜尋

- man -k passwd
複製程式碼

2.5.3 shell 內部幫助

  • whereis找到就是外部,找不到就是內部
    help cd
    複製程式碼

2.6 壓縮與解壓縮命令

.zip .gz .bz2 .tar.gz .tar.bz2

2.6.1 zip格式

  • 壓縮檔案 zip 壓縮檔名 原始檔
  • 壓縮目錄 zip -r 壓縮檔名 源目錄
  • 解壓 unzip 壓縮檔名
    mkdir book
    touch book/1.txt
    touch book/2.txt
    zip -r book.zip book
    unzip book.zip
    複製程式碼

2.6.2 gzip

命令示例含義
gzip 原始檔gzip a.txt壓縮為.gz格式的壓縮檔案,原始檔會消失
gzip -c 原始檔 > 壓縮檔案gzip -c yum.txt > yum.txt.gz壓縮為.gz格式的壓縮檔案,原始檔不會消失
gzip -r 目錄gzip -r xx壓縮目錄下的所有子檔案,但是不壓縮目錄
gzip -d 壓縮檔名gzip -d yum.txt.gz解壓縮檔案,不保留壓縮包
gunzip 壓縮檔案gunzip yum.txt.gz解壓縮檔案,不保留壓縮包
  • 壓縮是壓縮目錄下的檔案

2.6.3 .bz2格式壓縮

命令示例含義
bzip2 原始檔bzip2 1.txt壓縮為.bz2格式的檔案,不保留原始檔
bzip2 -k 原始檔zip2 -k 1.txt壓縮為.bz2格式的檔案,保留原始檔
bzip2 -d 壓縮檔名bzip2 -d 1.txt.bz2解壓壓縮包
bunzip2 壓縮檔名bunzip2 1.txt.bz2解壓壓縮包
  • bzip2 不能壓縮目錄

2.6.4 tar

  • 打包命令
  • tar -cvf 打包檔名 原始檔
    • -c 打包
    • -v 顯示過程
    • -f 指定打包後的檔名
tar -cvf book.tar book
gzip book.tar
bzip2 book.tar
複製程式碼
  • x 解打包
    tar -xvf book.tar
    複製程式碼

2.6.4 壓縮格式

壓縮

tar –cvf jpg.tar *.jpg //將目錄裡所有jpg檔案打包成tar.jpg
tar –czf jpg.tar.gz *.jpg //將目錄裡所有jpg檔案打包成jpg.tar後,並且將其用gzip壓縮,生成一個gzip壓縮過的包,命名為jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //將目錄裡所有jpg檔案打包成jpg.tar後,並且將其用bzip2壓縮,生成一個bzip2壓縮過的包,命名為jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg //將目錄裡所有jpg檔案打包成jpg.tar後,並且將其用compress壓縮,生成一個umcompress壓縮過的包,命名為jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的壓縮,需要先下載rar for linux
zip jpg.zip *.jpg //zip格式的壓縮,需要先下載zip for linux

解壓

tar –xvf file.tar //解壓 tar包
tar -xzvf file.tar.gz //解壓tar.gz
tar -xjvf file.tar.bz2 //解壓 tar.bz2
tar –xZvf file.tar.Z //解壓tar.Z
unrar e file.rar //解壓rar
unzip file.zip //解壓zip 

2.7 關機和重啟命令

2.7.1 shutdown

shutdown 關機命令

  • -c 取消前一個關機命令
  • -h 關機
  • -r 重啟
    shutdown -r 06:00
    shutdown -c
    複製程式碼

2.7.2 init

關機

init 0
複製程式碼

重啟

init 6
複製程式碼

系統的執行級別

  • 0 關機
  • 1 但使用者
  • 2 不 完全多使用者,不包含NFS服務
  • 3 完全多使用者
  • 4 未分配
  • 5 圖形介面
  • 6 重啟

2.7.3 logout

退出登入

logout複製程式碼

2.9 檢視登入使用者資訊

2.9.1 w

檢視登入使用者資訊

  • USER 登入的使用者名稱
  • TTY 登入的終端 tty1 本地終端 pts/0遠端終端
  • FROM 登入的IP
  • LOGIN 登入時間
  • IDLE 使用者閒置時間
  • JCPU 該終端所有程式佔用的時間
  • PCPU 當前程式所佔用的時間
  • WHAT 正在執行的命令

2.9.2 who

檢視登入使用者資訊

  • USER 登入的使用者名稱
  • TTY 登入的終端 tty1 本地終端 pts/0遠端終端
  • LOGIN 登入時間(登入的IP)

2.9.3 last

檢視當前登入和過去登入的使用者資訊 預設讀取 /var/log/wtmp 檔案

  • 使用者名稱
  • 登入終端
  • 登入IP
  • 登入時間
  • 退出時間(線上時間)

2.9.4 lastlog

檢視所有使用者的最後一次登入時間

  • 使用者名稱
  • 登入終端
  • 登入IP
  • 最後一次登入時間

3. shell

  • shell是一個命令列直譯器,它為使用者提供了一個向Linux核心傳送請求以便執行程式的介面系統級程式
  • 使用者可以用Shell來啟動、掛起、停止或者編寫一些程式
  • Shell還是一個功能相當強大的程式語言,易編寫,易除錯,靈活性較強。
  • Shell是解釋執行的指令碼語言,在Shell中可以直接呼叫Linux系統命令。

3.1 檢視支援的shell

  • /etc/shells

3.2 echo

  • 輸出命令
  • --e 支援反斜線控制的字元轉換
控制字元作用
\a輸出警告音
\b退格鍵,也就是向左刪除鍵
\n換行符
\rEnter鍵
\t製表符,也就是Tab鍵
\v垂直製表符
\onnn按照八進位制ASCII碼錶輸出字元,其中0為數字零,nnn是三位八進位制數
\xhh按照十六進位制ASCII碼錶輸出字元,其中hh是兩位十六進位制數

3.3 編寫執行shell

#!/bin/bash
echo -e "\e[1;34m hello world \e[0m"
複製程式碼

賦予執行許可權,直接執行

chmod 755 hello.sh
./hello.sh
複製程式碼

通過Bash呼叫執行指令碼

bash hello.sh
複製程式碼

3.4 別名

  • 命令別名 == 小名
  • 臨時生效
  • alias
  • alias rm="rm -i"
  • 寫入環境變數配置檔案 vi ~/.bashrc
  • source ~/.bashrc
  • unalias 別名 刪除別名

3.5 命令的生效順序

  • 絕對路徑或者相對路徑
  • 別名
  • bash內部命令
  • 按照$PATH環境變數定義的目錄查詢順序找到的第一個命令

3.6 命令快捷鍵

命令含義
ctrl+c強制終止當前命令
ctrl+l清屏
ctrl+a游標移動到命令列首
ctrl+e游標移動到命令列尾
ctrl+u從游標所在的位置刪除到行首
ctrl+z把命令放入後臺
ctrl+r在歷史命令中搜尋

3.7 歷史命令

  • history [選項] [歷史命令儲存檔案]
  • 選項
    • -c 清空歷史命令
    • -w 把快取中的歷史命令寫入歷史命令儲存檔案 ~/.bash_history
  • 預設儲存1000條 /etc/profile HISSIZE=10000

3.8 呼叫

  • 使用上下箭頭呼叫以前的歷史命令
  • 使用 !n 重複執行第n條歷史命令
  • 使用 !! 重複執行上一條命令
  • 使用 !字元 重複執行最後一條以該字串開頭的命令

3.9 管道符號

3.9.1 多命令順序執行

(1) ; 分號,沒有任何邏輯關係的連線符。當多個命令用分號連線時,各命令之間的執行成功與否彼此沒有任何影響,都會一條一條執行下去。

(2) || 邏輯或,當用此連線符連線多個命令時,前面的命令執行成功,則後面的命令不會執行。前面的命令執行失敗,後面的命令才會執行。

(3) && 邏輯與,當用此連線符連線多個命令時,前面的命令執行成功,才會執行後面的命令,前面的命令執行失敗,後面的命令不會執行,與 || 正好相反。

(4) | 管道符,當用此連線符連線多個命令時,前面命令執行的正確輸出,會交給後面的命令繼續處理。若前面的命令執行失敗,則會報錯,若後面的命令無法處理前面命令的輸出,也會報錯。

- date;ls;date;ls
- ls && echo yes || echo no
複製程式碼

3.9.2 管道符號

  • 命令1的正確輸出會作為命令2的操作物件
  • 命令1|命令2
    ls /etc/ | more
    netstat -an | grep ESTABLISHED | wc -l
    複製程式碼

3.9.3 萬用字元

匹配檔名和目錄名 |萬用字元|作用| |:----|:----| |?|匹配一個任意字元| |*|匹配0個或任意字元,也就是可以匹配任意內容| |[]|匹配中括號中任意一個字元| |[-]|匹配中括號中任意一個字元,-代表範圍| |[^]|匹配不是中括號中的一個字元|

3.9.4 其它符號

符號作用
''單引號。在單引號中所有的特殊符號,如$和`都沒有特殊含義
""雙引號,在雙引號裡特殊符號都沒有特殊含義,但是 $ ` \ 例外,擁有呼叫變數值,引用命令和轉義的含義
反引號,擴起來的是系統命令
$()和反引號一樣
#在shell指令碼中,#開頭的行代表註釋
$用於呼叫變數的值
\轉義符號
-  a=`ls`
-  b=$(ls)
複製程式碼

4. vi編輯器

  • VI visual interface
  • 視覺化介面
  • 類似與windows中的記事本
  • vim支援多級撤銷
  • 跨平臺
  • 語法高亮
  • 支援圖形介面

4.1 操作模式

  • :w 儲存
  • :q 退出
  • :! 強制儲存
  • :ls 列出所有的檔案
  • :n 下一個
  • :N 上一個
  • :15 跳轉到指定行
  • /xxx 從游標位置開始向後搜尋 xxx 字串
  • ?xxx 從游標位置開始向前搜尋

5. 使用者和使用者組

  • 使用作業系統的人都是使用者
  • 使用者組是具有相同系統許可權的一組使用者

5.1 使用者組

5.1.1 /etc/group

  • /etc/group 儲存當前系統中所有使用者組資訊
  • group:x:123:abc,def
  • 組名稱:組密碼佔位符:組編號:組中使用者名稱列表
  • root 組編號為0
  • 1-499系統預留的編號 預留給安裝的軟體和服務的
  • 使用者手動建立的使用者組從500開始
  • 組密碼佔位符都是x

5.1.2 /etc/gshadow

  • 存放當前系統中使用者組的密碼資訊
  • 和group中的記錄一一對應
  • Group: * : :abc
  • 組名稱 組密碼 組管理者 組中使用者名稱

5.1.3 /etc/passwd

  • 儲存當前系統中所有使用者的資訊
  • user:x:123:456:xxxxx:/home/user:/bin/bash
  • 使用者名稱:密碼佔位符:使用者編號: 使用者註釋資訊:使用者主目錄:shell型別

5.1.4 /etc/shadow

  • 存放當前系統中所有使用者的密碼資訊
  • user:xxx:::::::
  • 使用者名稱:密碼:

6. 使用者操作

新增組

groupadd student
複製程式碼

修改組名稱

groupmod -n stu student 
複製程式碼

修改組編號

groupmod -g 111 stu 
複製程式碼

新增分組並指定編號

groupadd -g 222 teacher 
複製程式碼

刪除分組

groupdel 222 
複製程式碼

新增分組

groupadd teacher 
複製程式碼

為使用者指定所屬組

useradd -g teacher zhangsan 
複製程式碼

為使用者指定所屬組

useradd -g teacher lisi 
複製程式碼

為使用者指定工作目錄

useradd -d /home/zhangsan zhangsan 
複製程式碼

指定註釋

usermod -c iamateacher zhangsan 
複製程式碼

修改使用者名稱

usermod -l zhangsan zhangsan2
複製程式碼

指定資料夾

usermod -d /home/zhangsan2 zhangsan2 
複製程式碼

修改使用者所屬組

usermod -g stu zhangsan2 
複製程式碼

刪除使用者

userdel zhangsan2 
複製程式碼

刪除所屬資料夾

userdel -r lisi 
複製程式碼

7. 使用者命令

顯示登入的使用者名稱

whoami
複製程式碼

顯示指定使用者資訊,包括使用者編號,使用者名稱 主要組的編號及名稱,附屬組列表

id zhangsan  
複製程式碼

顯示zhangsan使用者所在的所有組

groups zhangsan 
複製程式碼

顯示使用者詳細資料

finger zhangsan  
複製程式碼

8. 附錄

8.1 系統啟動

8.1.1 BIOS

  • 計算機通電後,第一件事就是讀取刷入ROM晶片的開機程式,這個程式叫做(Basic Input/Output System)

8.1.2 硬體自檢

  • BIOS程式首先檢查,計算機硬體能否滿足執行的基本條件,這叫做"硬體自檢"(Power-On Self-Test)
  • 如果硬體出現問題,主機板會發出不同含義的蜂鳴,啟動中止。如果沒有問題,螢幕就會顯示出CPU、記憶體、硬碟等資訊。

8.1.3 啟動順序

  • 硬體自檢完成後,BIOS把控制權轉交給下一階段的啟動程式。
  • 這時,BIOS需要知道,"下一階段的啟動程式"具體存放在哪一個裝置
  • BIOS需要有一個外部儲存裝置的排序,排在前面的裝置就是優先轉交控制權的裝置。這種排序叫做"啟動順序"(Boot Sequence)
  • BIOS按照"啟動順序",把控制權轉交給排在第一位的儲存裝置。
  • 這時,計算機讀取該裝置的第一個扇區,也就是讀取最前面的512個位元組。如果這512個位元組的最後兩個位元組是0x55和0xAA,表明這個裝置可以用於啟動;如果不是,表明裝置不能用於啟動,控制權於是被轉交給"啟動順序"中的下一個裝置。
  • 這最前面的512個位元組,就叫做"主開機記錄"(Master boot record,縮寫為MBR)

8.1.4 主開機記錄的結構

  • "主開機記錄"只有512個位元組,放不了太多東西。它的主要作用是,告訴計算機到硬碟的哪一個位置去找作業系統。
    • (1) 第1-446位元組:是用來記錄系統的啟動資訊的,呼叫作業系統的機器碼
    • (2) 第447-510位元組(64個位元組):分割槽表(Partition table),分割槽表的作用,是將硬碟分成若干個區
    • (3) 第511-512位元組:主開機記錄簽名(0x55和0xAA)

8.1.5 分割槽表

  • 磁碟分割槽是使用分割槽編輯器在磁碟上劃分幾個邏輯部分
  • 磁碟一旦劃分成多個分割槽,不同類的目錄與檔案可以儲存進不同的分割槽內
  • "主開機記錄"因此必須知道將控制權轉交給哪個區
  • 分割槽表的長度只有64個位元組,裡面又分成四項,每項16個位元組。所以,一個硬碟最多隻能分四個一級分割槽,又叫做"主分割槽"
    • (1) 第1個位元組:如果為0x80,就表示該主分割槽是啟用分割槽,控制權要轉交給這個分割槽。四個主分割槽裡面只能有一個是啟用的。
    • (2) 第2-4個位元組:主分割槽第一個扇區的物理位置(柱面、磁頭、扇區號等等)。
    • (3) 第5個位元組:主分割槽型別,比如FAT32、NTFS等。
    • (4) 第6-8個位元組:主分割槽最後一個扇區的物理位置。
    • (5) 第9-12位元組:該主分割槽第一個扇區的邏輯地址。
    • (6) 第13-16位元組:主分割槽的扇區總數。

8.1.6 硬碟啟動

  • 計算機的控制權就要轉交給硬碟的某個分割槽了
  • 四個主分割槽裡面,只有一個是啟用的。計算機會讀取啟用分割槽的第一個扇區,叫做"卷引導記錄"(Volume boot record,縮寫為VBR)

8.1.7 作業系統

  • 控制權轉交給作業系統後,作業系統的核心首先被載入記憶體。
  • 以Linux系統為例,先載入/boot目錄下面的kernel。核心載入成功後,第一個執行的程式是/sbin/init。它根據配置檔案(Debian系統是/etc/initab)產生init程式。這是Linux啟動後的第一個程式,pid程式編號為1,其他程式都是它的後代
  • 然後,init執行緒載入系統的各個模組,比如視窗程式和網路程式,直至執行/bin/login程式,跳出登入介面,等待使用者輸入使用者名稱和密碼。



相關文章