前端linux基礎(chǔ),這一篇就夠了

1. Linux安裝

2.linux常用命令

2.1 常見目錄
/bin

存放二進(jìn)制可執(zhí)行文件(ls,cat,mkdir等),常用命令一般都在這里。

/etc

存放系統(tǒng)管理和配置文件

/home

存放所有用戶文件的根目錄,是用戶主目錄的基點(diǎn),比如用戶user的主目錄就是/home/user,可以用~user表示

/usr

用于存放系統(tǒng)應(yīng)用程序,比較重要的目錄/usr/local 本地系統(tǒng)管理員軟件安裝目錄(安裝系統(tǒng)級的應(yīng)用)。這是最龐大的目錄,要用到的應(yīng)用程序和文件幾乎都在這個目錄。

/usr/x11r6 存放x window的目錄

/usr/bin 眾多的應(yīng)用程序

/usr/sbin 超級用戶的一些管理程序

/usr/doc linux文檔

/usr/include linux下開發(fā)和編譯應(yīng)用程序所需要的頭文件

/usr/lib 常用的動態(tài)鏈接庫和軟件包的配置文件

/usr/man 幫助文檔

/usr/src 源代碼,linux內(nèi)核的源代碼就放在/usr/src/linux里

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

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

/opt

額外安裝的可選應(yīng)用程序包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這里。

/proc

虛擬文件系統(tǒng)目錄,是系統(tǒng)內(nèi)存的映射??芍苯釉L問這個目錄來獲取系統(tǒng)信息。

/root

超級用戶(系統(tǒng)管理員)的主目錄(特權(quán)階級^o^)

/sbin

存放二進(jìn)制可執(zhí)行文件,只有root才能訪問。這里存放的是系統(tǒng)管理員使用的系統(tǒng)級別的管理命令和程序。如ifconfig等。

/dev

用于存放設(shè)備文件。

/mnt

系統(tǒng)管理員安裝臨時文件系統(tǒng)的安裝點(diǎn),系統(tǒng)提供這個目錄是讓用戶臨時掛載其他的文件系統(tǒng)。

/boot

存放用于系統(tǒng)引導(dǎo)時使用的各種文件

/lib

存放跟文件系統(tǒng)中的程序運(yùn)行所需要的共享庫及內(nèi)核模塊。共享庫又叫動態(tài)鏈接共享庫,作用類似windows里的.dll文件,存放了根文件系統(tǒng)程序運(yùn)行所需的共享文件。

/tmp

用于存放各種臨時文件,是公用的臨時文件存儲點(diǎn)。

/var

用于存放運(yùn)行時需要改變數(shù)據(jù)的文件,也是某些大文件的溢出區(qū),比方說各種服務(wù)的日志文件(系統(tǒng)啟動日志等。)等。

/lost+found

這個目錄平時是空的,系統(tǒng)非正常關(guān)機(jī)而留下“無家可歸”的文件(windows下叫什么.chk)就在這里

2.2 命令基本格式
2.2.1 命令提示符
[root@xiaoming ~]#
root 當(dāng)前登錄用戶

localhost 主機(jī)名

~ 當(dāng)前工作目錄,默認(rèn)是當(dāng)前用戶的家目錄,root就是/root,普通用戶是 /home/用戶名

提示符 超級用戶是 #,普通用戶是$

2.2.2 命令格式
命令 [選項(xiàng)] [參數(shù)]

當(dāng)有多個選項(xiàng)時,可以寫在一起

一般參數(shù)有簡化和完整寫法兩種 -a 與 --all等效

2.2.3 ls
查詢目錄中的內(nèi)容

ls [選項(xiàng)] [文件或者目錄]

選項(xiàng)

-a 顯示所有文件,包括隱藏文件

-l 顯示詳細(xì)信息

-d 查看目錄本身的屬性而非子文件 ls /etc/

-h 人性化的方式顯示文件大小

-i 顯示inode,也就是i節(jié)點(diǎn),每個節(jié)點(diǎn)都有ID號

默認(rèn)當(dāng)前目錄下的文件列表

 -l
顯示詳細(xì)信息

drwxr-xr-x .  1 root  root   800 Sep 16 00:19 logs




 文件類型和權(quán)限
-rw-r--r--
文件類型 - 文件、d 目錄、l 軟鏈接文件

u(所有者)、g(所屬組)、o(其他人)

r(read) 讀取、w(write) 寫入、x(execute) 執(zhí)行

2.3 文件處理命令
2.3.1 mkdir
建立目錄 make directory

mkdir -p [目錄名]

-p 遞歸創(chuàng)建

2.3.2 cd
切換所在目錄 change directory

cd [目錄]

上次目錄

~ 家目錄

家目錄

. 當(dāng)前目錄

.. 上級目錄

相對路徑是參照當(dāng)前所在目錄

絕對路徑是從根目錄開始

按TAB鍵可以補(bǔ)全命令和目錄

2.3.3 pwd
顯示當(dāng)前目錄 pwd

2.3.4 rmdir
刪除目錄 remove empty directory

rmdir [目錄名]

2.3.5 rm
刪除文件或者目錄 remove

rm [文件或者目錄]

-r 刪除目錄

-f 強(qiáng)制刪除

rm -rf 文件或者目錄] 遞歸強(qiáng)制刪除所有目錄

2.3.6 cp
copy 復(fù)制命令

copy [源文件或者目錄] [目標(biāo)文件]

-r 復(fù)制目錄,默認(rèn)是復(fù)制文件

-p 連帶文件屬性復(fù)制

-d 若源文件是鏈接文件,則復(fù)制連接屬性

-a 相當(dāng)于 -rpd

2.3.7 mv
移動文件或者改名 move

mv [源文件或者目錄] [目標(biāo)文件]

2.3.8 ln
鏈接命令,生成鏈接文件 link

2.3.8.1 硬鏈接特征
擁有相同的i節(jié)點(diǎn)和存儲block塊,可以看作是同一個文件

可以通過i節(jié)點(diǎn)訪問

不能跨分區(qū)

不能針對目錄使用

一般不使用

2.3.8.2 軟鏈接特征
ln -s [源文件] [目標(biāo)文件]

-s 創(chuàng)建軟鏈接

類似Windows快捷方式

軟鏈接擁有自己的i節(jié)點(diǎn)和Block塊,但是數(shù)據(jù)塊中只保存源文件的文件名和i節(jié)點(diǎn)號,并沒有實(shí)際的文件數(shù)據(jù)

lrwxrwxrwx l 軟鏈接 軟鏈接的文件權(quán)限都是 777

修改任意一個文件,另一個都會改變

刪除源文件,軟鏈接不能使用

軟鏈接源文件必須寫絕對路徑

2.4 文件搜索命令
2.4.1 locate
在后臺數(shù)據(jù)庫中按文件名搜索,速度比較快

數(shù)據(jù)保存在/var/lib/mlocate后臺數(shù)據(jù)庫,每天更新一次

可以updatedb命令立刻更新數(shù)據(jù)庫

只能搜索文件名

/etc/updatedb.conf 建立索引的配置文件

PRUNE_BIND_MOUNTS = "yes" 全部生效,開啟搜索限制

PRUNEFS 不搜索的文件系統(tǒng)

PRUNENAMES 忽略的文件類型

PRUNEPATHS 忽略的路徑 /tmp

2.4.2 whereis
搜索命令所在路徑以及幫助文檔所在位置

whereis 命令名 whereis ls






-b 只查找可執(zhí)行文件

-m 只查找?guī)椭募?br>
2.4.3 which
可以看到別名 which ls

能看到的都是外部安裝的命令

無法查看Shell自帶的命令,如 which cd

2.4.4 環(huán)境變量
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

定義的是系統(tǒng)搜索命令的路徑

echo $PATH

2.4.5 find
文件搜索命令

find [搜索范圍] [搜索條件]

2.4.5.1 按名稱搜索
避免大范圍的搜索,會非常消耗系統(tǒng)資源

find / -name aaa.log
2.4.5.2 通配符
find是在系統(tǒng)當(dāng)中搜索符合條件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配

通配符

* 匹配任意內(nèi)容

? 匹配任意一個字符

[] 匹配任意一個中括號內(nèi)的字符

find . -name "ab[cdef]"
2.4.5.3 -i
不區(qū)分大小寫

find / -iname A.log
2.4.5.4 -user
按所有者進(jìn)行搜索

find /root -user root
find /root -nouser
2.4.5.5 按時間搜索
find /nginx/access.log -mtime +5

參數(shù)    含義
atime    文件訪問時間
ctime    改變文件屬性
mtime    修改文件內(nèi)容

參數(shù)    含義
-5    5天內(nèi)修改的文件
5    5天前當(dāng)前修改的文件
+5    5天前修改的文件
2.4.5.6 按大小搜索
k小寫,M大寫

find . -size 100k
參數(shù)

含義
-8k    小于8K
8k    等于8K
+8k    大于8K
+8M    小于8M
2.4.5.7 按i節(jié)點(diǎn)搜索
find . -inum 123456
2.4.5.8 綜合應(yīng)用
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 對上個命令的結(jié)果進(jìn)行操作

2.4.5.9 grep
在文件當(dāng)中匹配符合條件的字符串

grep "10" access.log

-i 忽略大小寫

-v 排除指定字符串

find命令,在系統(tǒng)當(dāng)中搜索符合條件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配

grep命令 在文件當(dāng)中搜索符合條件的字符串,如果需要匹配,使用正則表達(dá)式進(jìn)行匹配,正則表達(dá)式時包含匹配

2.5 幫助命令
2.5.1 基本用法
man 命令 獲取指定命令的幫助

man ls 查看ls的幫助

man -f ls
whatis ls
man 1 ls
man 1p ls
2.5.2 關(guān)鍵字搜索
- man -k passwd
2.5.3 shell 內(nèi)部幫助
whereis找到就是外部,找不到就是內(nèi)部

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 關(guān)機(jī)和重啟命令
2.7.1 shutdown
shutdown 關(guān)機(jī)命令

-c 取消前一個關(guān)機(jī)命令

-h 關(guān)機(jī)

-r 重啟

shutdown -r 06:00
shutdown -c
2.7.2 init
關(guān)機(jī)

init 0
重啟

init 6
系統(tǒng)的運(yùn)行級別

0 關(guān)機(jī)

1 但用戶

2 不 完全多用戶,不包含NFS服務(wù)

3 完全多用戶

4 未分配

5 圖形界面

6 重啟

2.7.3 logout
退出登錄

logout
2.9 查看登錄用戶信息
2.9.1 w
查看登錄用戶信息

USER 登錄的用戶名

TTY 登錄的終端 tty1 本地終端 pts/0遠(yuǎn)程終端

FROM 登錄的IP

LOGIN 登錄時間

IDLE 用戶閑置時間

JCPU 該終端所有進(jìn)程占用的時間

PCPU 當(dāng)前進(jìn)程所占用的時間

WHAT 正在執(zhí)行的命令

2.9.2 who
查看登錄用戶信息

USER 登錄的用戶名

TTY 登錄的終端 tty1 本地終端 pts/0遠(yuǎn)程終端

LOGIN 登錄時間(登錄的IP)

2.9.3 last
查看當(dāng)前登錄和過去登錄的用戶信息 默認(rèn)讀取 /var/log/wtmp 文件

用戶名

登錄終端

登錄IP

登錄時間

退出時間(在線時間)

2.9.4 lastlog
查看所有用戶的最后一次登錄時間

用戶名

登錄終端

登錄IP

最后一次登錄時間

3. shell

shell是一個命令行解釋器,它為用戶提供了一個向Linux內(nèi)核發(fā)送請求以便運(yùn)行程序的界面系統(tǒng)級程序

用戶可以用Shell來啟動、掛起、停止或者編寫一些程序

Shell還是一個功能相當(dāng)強(qiáng)大的編程語言,易編寫,易調(diào)試,靈活性較強(qiáng)。

Shell是解釋執(zhí)行的腳本語言,在Shell中可以直接調(diào)用Linux系統(tǒng)命令。

3.1 查看支持的shell
/etc/shells

3.2 echo
輸出命令

--e 支持反斜線控制的字符轉(zhuǎn)換

控制字符    作用
\a    輸出警告音
\b    退格鍵,也就是向左刪除鍵
\n    換行符
\r    回車鍵
\t    制表符,也就是Tab鍵
\v    垂直制表符
\onnn    按照八進(jìn)制ASCII碼表輸出字符,其中0為數(shù)字零,nnn是三位八進(jìn)制數(shù)
\xhh    按照十六進(jìn)制ASCII碼表輸出字符,其中hh是兩位十六進(jìn)制數(shù)
3.3 編寫執(zhí)行shell
#!/bin/bash
echo -e "\e[1;34m hello world \e[0m"
賦予執(zhí)行權(quán)限,直接運(yùn)行

chmod 755 hello.sh
./hello.sh
通過Bash調(diào)用執(zhí)行腳本

bash hello.sh
3.4 別名
命令別名 == 小名

臨時生效

alias

alias rm="rm -i"

寫入環(huán)境變量配置文件 vi ~/.bashrc

source ~/.bashrc

unalias 別名 刪除別名

3.5 命令的生效順序
絕對路徑或者相對路徑

別名

bash內(nèi)部命令

按照$PATH環(huán)境變量定義的目錄查找順序找到的第一個命令






3.6 命令快捷鍵
命令    含義
ctrl+c    強(qiáng)制終止當(dāng)前命令
ctrl+l    清屏
ctrl+a    光標(biāo)移動到命令行首
ctrl+e    光標(biāo)移動到命令行尾
ctrl+u    從光標(biāo)所在的位置刪除到行首
ctrl+z    把命令放入后臺
ctrl+r    在歷史命令中搜索
3.7 歷史命令
history [選項(xiàng)] [歷史命令保存文件]

選項(xiàng)

-c 清空歷史命令

-w 把緩存中的歷史命令寫入歷史命令保存文件 ~/.bash_history

默認(rèn)保存1000條 /etc/profile HISSIZE=10000

3.8 調(diào)用
使用上下箭頭調(diào)用以前的歷史命令

使用 !n 重復(fù)執(zhí)行第n條歷史命令

使用 !! 重復(fù)執(zhí)行上一條命令

使用 !字符 重復(fù)執(zhí)行最后一條以該字符串開頭的命令

3.9 管道符號
3.9.1 多命令順序執(zhí)行
(1) ; 分號,沒有任何邏輯關(guān)系的連接符。當(dāng)多個命令用分號連接時,各命令之間的執(zhí)行成功與否彼此沒有任何影響,都會一條一條執(zhí)行下去。

(2) || 邏輯或,當(dāng)用此連接符連接多個命令時,前面的命令執(zhí)行成功,則后面的命令不會執(zhí)行。前面的命令執(zhí)行失敗,后面的命令才會執(zhí)行。

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

(4) | 管道符,當(dāng)用此連接符連接多個命令時,前面命令執(zhí)行的正確輸出,會交給后面的命令繼續(xù)處理。若前面的命令執(zhí)行失敗,則會報錯,若后面的命令無法處理前面命令的輸出,也會報錯。

- 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個或任意字符,也就是可以匹配任意內(nèi)容| |[]|匹配中括號中任意一個字符| |[-]|匹配中括號中任意一個字符,-代表范圍| |[^]|匹配不是中括號中的一個字符|

3.9.4 其它符號
符號    作用
''    單引號。在單引號中所有的特殊符號,如$和`都沒有特殊含義
""    雙引號,在雙引號里特殊符號都沒有特殊含義,但是 $ ` \ 例外,擁有調(diào)用變量值,引用命令和轉(zhuǎn)義的含義

反引號,擴(kuò)起來的是系統(tǒng)命令
$()    和反引號一樣
#    在shell腳本中,#開頭的行代表注釋
$    用于調(diào)用變量的值
\    轉(zhuǎn)義符號
-  a=`ls`
-  b=$(ls)

4. vi編輯器

VI visual interface

可視化接口

類似與windows中的記事本

vim支持多級撤銷

跨平臺

語法高亮

支持圖形界面

4.1 操作模式
:w 保存

:q 退出

:! 強(qiáng)制保存

:ls 列出所有的文件

:n 下一個

:N 上一個

:15 跳轉(zhuǎn)到指定行

/xxx 從光標(biāo)位置開始向后搜索 xxx 字符串

?xxx 從光標(biāo)位置開始向前搜索

5. 用戶和用戶組

使用操作系統(tǒng)的人都是用戶

用戶組是具有相同系統(tǒng)權(quán)限的一組用戶

5.1 用戶組
5.1.1 /etc/group
/etc/group 存儲當(dāng)前系統(tǒng)中所有用戶組信息

group:x:123:abc,def

組名稱:組密碼占位符:組編號:組中用戶名列表

root 組編號為0

1-499系統(tǒng)預(yù)留的編號 預(yù)留給安裝的軟件和服務(wù)的

用戶手動創(chuàng)建的用戶組從500開始

組密碼占位符都是x

5.1.2 /etc/gshadow
存放當(dāng)前系統(tǒng)中用戶組的密碼信息

和group中的記錄一一對應(yīng)

Group: * : :abc

組名稱 組密碼 組管理者 組中用戶名

5.1.3 /etc/passwd
存儲當(dāng)前系統(tǒng)中所有用戶的信息

user:x:123:456:xxxxx:/home/user:/bin/bash

用戶名:密碼占位符:用戶編號: 用戶注釋信息:用戶主目錄:shell類型

5.1.4 /etc/shadow
存放當(dāng)前系統(tǒng)中所有用戶的密碼信息

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
顯示用戶詳細(xì)資料

finger zhangsan  

8. 附錄

8.1 系統(tǒng)啟動
8.1.1 BIOS
計算機(jī)通電后,第一件事就是讀取刷入ROM芯片的開機(jī)程序,這個程序叫做(Basic Input/Output System)

8.1.2 硬件自檢
BIOS程序首先檢查,計算機(jī)硬件能否滿足運(yùn)行的基本條件,這叫做"硬件自檢"(Power-On Self-Test)

如果硬件出現(xiàn)問題,主板會發(fā)出不同含義的蜂鳴,啟動中止。如果沒有問題,屏幕就會顯示出CPU、內(nèi)存、硬盤等信息。

8.1.3 啟動順序
硬件自檢完成后,BIOS把控制權(quán)轉(zhuǎn)交給下一階段的啟動程序。

這時,BIOS需要知道,"下一階段的啟動程序"具體存放在哪一個設(shè)備

BIOS需要有一個外部儲存設(shè)備的排序,排在前面的設(shè)備就是優(yōu)先轉(zhuǎn)交控制權(quán)的設(shè)備。這種排序叫做"啟動順序"(Boot Sequence)

BIOS按照"啟動順序",把控制權(quán)轉(zhuǎn)交給排在第一位的儲存設(shè)備。

這時,計算機(jī)讀取該設(shè)備的第一個扇區(qū),也就是讀取最前面的512個字節(jié)。如果這512個字節(jié)的最后兩個字節(jié)是0x55和0xAA,表明這個設(shè)備可以用于啟動;如果不是,表明設(shè)備不能用于啟動,控制權(quán)于是被轉(zhuǎn)交給"啟動順序"中的下一個設(shè)備。

這最前面的512個字節(jié),就叫做"主引導(dǎo)記錄"(Master boot record,縮寫為MBR)

8.1.4 主引導(dǎo)記錄的結(jié)構(gòu)
"主引導(dǎo)記錄"只有512個字節(jié),放不了太多東西。它的主要作用是,告訴計算機(jī)到硬盤的哪一個位置去找操作系統(tǒng)。

(1) 第1-446字節(jié):是用來記錄系統(tǒng)的啟動信息的,調(diào)用操作系統(tǒng)的機(jī)器碼

(2) 第447-510字節(jié)(64個字節(jié)):分區(qū)表(Partition table),分區(qū)表的作用,是將硬盤分成若干個區(qū)

(3) 第511-512字節(jié):主引導(dǎo)記錄簽名(0x55和0xAA)

8.1.5 分區(qū)表
磁盤分區(qū)是使用分區(qū)編輯器在磁盤上劃分幾個邏輯部分

磁盤一旦劃分成多個分區(qū),不同類的目錄與文件可以存儲進(jìn)不同的分區(qū)內(nèi)

"主引導(dǎo)記錄"因此必須知道將控制權(quán)轉(zhuǎn)交給哪個區(qū)

分區(qū)表的長度只有64個字節(jié),里面又分成四項(xiàng),每項(xiàng)16個字節(jié)。所以,一個硬盤最多只能分四個一級分區(qū),又叫做"主分區(qū)"

(1) 第1個字節(jié):如果為0x80,就表示該主分區(qū)是激活分區(qū),控制權(quán)要轉(zhuǎn)交給這個分區(qū)。四個主分區(qū)里面只能有一個是激活的。

(2) 第2-4個字節(jié):主分區(qū)第一個扇區(qū)的物理位置(柱面、磁頭、扇區(qū)號等等)。

(3) 第5個字節(jié):主分區(qū)類型,比如FAT32、NTFS等。

(4) 第6-8個字節(jié):主分區(qū)最后一個扇區(qū)的物理位置。

(5) 第9-12字節(jié):該主分區(qū)第一個扇區(qū)的邏輯地址。

(6) 第13-16字節(jié):主分區(qū)的扇區(qū)總數(shù)。

8.1.6 硬盤啟動
計算機(jī)的控制權(quán)就要轉(zhuǎn)交給硬盤的某個分區(qū)了

四個主分區(qū)里面,只有一個是激活的。計算機(jī)會讀取激活分區(qū)的第一個扇區(qū),叫做"卷引導(dǎo)記錄"(Volume boot record,縮寫為VBR)

8.1.7 操作系統(tǒng)
控制權(quán)轉(zhuǎn)交給操作系統(tǒng)后,操作系統(tǒng)的內(nèi)核首先被載入內(nèi)存。

以Linux系統(tǒng)為例,先載入/boot目錄下面的kernel。內(nèi)核加載成功后,第一個運(yùn)行的程序是/sbin/init。它根據(jù)配置文件(Debian系統(tǒng)是/etc/initab)產(chǎn)生init進(jìn)程。這是Linux啟動后的第一個進(jìn)程,pid進(jìn)程編號為1,其他進(jìn)程都是它的后代

然后,init線程加載系統(tǒng)的各個模塊,比如窗口程序和網(wǎng)絡(luò)程序,直至執(zhí)行/bin/login程序,跳出登錄界面,等待用戶輸入用戶名和密碼。

作者:碼出宇宙

歡迎關(guān)注微信公眾號 :碼出宇宙

掃描添加好友邀你進(jìn)技術(shù)交流群,加我時注明【姓名+公司(學(xué)校)+職位】