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 | . | 1 | root | root | 800 | Sep 16 00:19 | logs |
---|---|---|---|---|---|---|---|
檔案型別和許可權 | 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 | 修改檔案內容 |
引數 | 含義 |
---|---|
-5 | 5天內修改的檔案 |
5 | 5天前當前修改的檔案 |
+5 | 5天前修改的檔案 |
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 | 換行符 |
\r | Enter鍵 |
\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
程式,跳出登入介面,等待使用者輸入使用者名稱和密碼。