當用戶打開電源后,BIOS開機自檢,確定啟動設(shè)備,安裝啟動設(shè)備,啟動設(shè)備上面安裝的GRUB開始引導(dǎo)Linux,Linux首先先進行內(nèi)核引導(dǎo),通過跟切換,執(zhí)行init程序,init程序確定啟動級別,根據(jù)啟動級別進行系統(tǒng)初始化和運行的服務(wù),然后返回init啟動終端,用戶通過驗證成功登陸Shell,這就是一個從開機到登陸的啟動過程。
澄海網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)2013年開創(chuàng)至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
一、硬件引導(dǎo)啟動
當用戶打開電源后POST開始自檢,檢測硬件設(shè)備是否確實或者存在故障(是否影響正常開機),如果不影響正常開機,就把任務(wù)交給BIOS。BIOS通過搜索,安裝啟動確定啟動設(shè)備,啟動項為硬盤,BIOS去讀取硬盤的前512字節(jié)到內(nèi)存,找到BootLoader,確定GRUB
二、GRUB引導(dǎo)啟動內(nèi)核
這一部分概況起來就是:GRUB程序加載執(zhí)行并開始引導(dǎo)kernel程序
Boot Loader就是在操作系統(tǒng)內(nèi)核運行之前運行的一小段程序。通過GRUB引導(dǎo)可以確定內(nèi)核程序,因為引導(dǎo)扇區(qū)只有446字節(jié),GRUB只是一個小的程序安裝在里面,真正使用的在MBR后面的扇區(qū)存放,我們想使用Bootloader GRUB功能必須讀取后面的文件,Bootloader GRUB功能程序的運行和加載配置選項分為三個階段
Stage1階段:
Stage1階段其實就是執(zhí)行系統(tǒng)安裝時預(yù)先寫入到MBR的Bootloader中的程序。
Stage1階段的任務(wù)僅是將硬盤0柱面0磁道2扇區(qū)的內(nèi)容讀入內(nèi)存并執(zhí)行,它是Stage1.5階段或Stage2階段的入口,引導(dǎo)進入Stage1.5階段或Stage2階段。 在此Stage1階段,還沒有識別文件系統(tǒng)的能力。
Stage1.5階段:
stage1.5階段是stage1階段和stage2階段的中間橋梁。stage1.5階段具有識別啟動分區(qū)文件系統(tǒng)的能力,此后GRUB程序便有能力去訪問/boot分區(qū)下/grub目錄下的 stage2文件,并將stage2載入內(nèi)存執(zhí)行。
Stage2階段
Stage2階段執(zhí)行時,首先會解析GRUB程序的配置文件grub.conf,并依配置文件決定是否顯示系統(tǒng)啟動菜單。然后加載內(nèi)核鏡像到內(nèi)存中,通過initrd程序建立RAMDisk內(nèi)存虛擬根文件系統(tǒng)。此時控制權(quán)將轉(zhuǎn)交給內(nèi)核程序。
三、內(nèi)核引導(dǎo)啟動
這一部分主要是通過在內(nèi)存中建立虛擬根文件系統(tǒng)實現(xiàn)相關(guān)設(shè)備的驅(qū)動并建立和切換到真正的根文件系統(tǒng)。
解壓內(nèi)核鏡像加載到內(nèi)存,以及initrd程序建立RAMDisk內(nèi)存虛擬根文件系統(tǒng)后,內(nèi)核開始驅(qū)動基本硬件,并調(diào)用虛擬根文件系統(tǒng)中的init程序加載驅(qū)動模塊初始化系統(tǒng)中各種設(shè)備的相關(guān)配置工作,其中包括CPU、I/O、存儲設(shè)備等。當所需的驅(qū)動程序加載完后,會根據(jù)grub.conf配置文件中“root=XXX”部分所指定的內(nèi)容創(chuàng)建一個根設(shè)備,然后將根文件系統(tǒng)以只讀的方式掛載,并切換到真正的根文件系統(tǒng)上,同時調(diào)用系統(tǒng)進程的/sbin/init程序,進入系統(tǒng)初始化階段。
四、系統(tǒng)初始化
這一步是通過/sbin/init,init程序準備軟件運行壞境,啟動系統(tǒng)服務(wù)
通過/etc/inittab文件確定運行級別,然后去執(zhí)行系統(tǒng)初始化腳本/etc/rc.sysinit,為用戶初始化用戶空間環(huán)境,在完成初始化后,根據(jù)運行級別,系統(tǒng)開始對應(yīng)級別的目錄啟動服務(wù),關(guān)閉那些不要的服務(wù)(里面S99local - ../rc.local)用戶自動服務(wù)啟動腳本
運行級別:為系統(tǒng)運行或維護等目的而設(shè)定;0-6:7個級別
0:關(guān)機
1:單用戶模式(root自動登錄), single, 維護模式
2: 多用戶模式,啟動網(wǎng)絡(luò)功能,但不會啟動NFS;維護模式
3:多用戶模式,正常模式;文本界面
4:預(yù)留級別;可同3級別
5:多用戶模式,正常模式;圖形界面
6:重啟
默認級別:3, 5
切換級別:init #
查看級別:runlevel ; who -r
五、啟動終端,用戶登錄
這一步是用戶登錄shell過程
如果沒有改變級別,默認情況執(zhí)行/sbin/mingetty打開6個純文本終端,讓用戶輸入用戶名和密碼。輸入完成后,再調(diào)用login程序,核對密碼。如果密碼正確,就從文件 /etc/passwd 讀取該用戶指定的shell,然后啟動這個shell。更多Linux介紹請查看《Linux就該這么學(xué)》。
要充分理解本文,必須具備Windows 環(huán)境下桌面應(yīng)用程序的工作經(jīng)驗,我認為讀者對如何使用 Linux 桌面有一個基本的了解。使用一個運行的 Linux 計算來機探討本文的概念和示例是很有幫助的。
有時候第一次在 Linux 上運行一個應(yīng)用程序需要一點額外工作。有些應(yīng)用程序,比如服務(wù)器服務(wù),可能無法安裝為服務(wù),因此您需要從命令行啟動這些應(yīng)用程序。對于啟動這些應(yīng)用程序的用戶帳戶而言,需要在應(yīng)用程序文件中設(shè)置執(zhí)行許可標志 (x)。
Linux 在內(nèi)核空間或用戶空間運行進程。用戶空間 是操作系統(tǒng)的區(qū)域,應(yīng)用程序通常在此運行。簡單地說,每個用戶帳戶有其自己的用戶空間,應(yīng)用程序在這個領(lǐng)域內(nèi)運行。
默認情況下,只有 root 用戶有權(quán)訪問內(nèi)核空間。root 用戶 是 Linux 中的超級用戶,相當于 Windows 中的管理員帳戶。在 root 用戶帳戶下運行應(yīng)用程序可能會引起安全風(fēng)險,是不可取的。
很多服務(wù)器服務(wù)需要 root 權(quán)限啟動服務(wù)。然而,服務(wù)啟動后,root 帳戶通常會將其移至服務(wù)帳戶。嚴格地說,Linux 中的服務(wù)帳戶 才是標準的用戶帳戶。主要區(qū)別是服務(wù)帳戶僅用于運行一個服務(wù),而不是為任何實際登錄的用戶準備的。
您可以使用 chmod 命令在一個文件中設(shè)置執(zhí)行權(quán)限。在 Linux 中,umask 設(shè)置通常用來防止下載的文件被執(zhí)行,也有充分的理由相信,因為它有助于維護 Linux 計算機的安全性。
大多數(shù) Linux 發(fā)行版具有一個值為 022 的 umask 設(shè)置,這意味著,默認情況下一個新文件權(quán)限設(shè)置為 644。權(quán)限的數(shù)字表示形式采用讀 (4)、寫 (2)、執(zhí)行 (1) 的格式。因此,默認權(quán)限為 644 的應(yīng)用程序下載意味著文件所有者有讀寫權(quán)限,而組用戶和其他用戶只有讀權(quán)限。
例如,為每個人賦予一個文件的執(zhí)行權(quán)限,使用 chmod a+x 命令。a 表示所有人,加號 (+) 表示添加,而 x 表示執(zhí)行。同樣地,如果應(yīng)用程序是一個服務(wù)器服務(wù),您應(yīng)該確保只有授權(quán)帳戶才有權(quán)執(zhí)行此服務(wù)。
如果一個應(yīng)用程序能夠在標準用戶帳戶權(quán)限下運行,但只有特定組中的用戶才需要使用它,您可以將該組所有者權(quán)限設(shè)置為可執(zhí)行,然后將這些用戶添加到該組中。
更具體地說,您可以在一個可執(zhí)行文件中設(shè)置訪問控制列表 (ACL) 權(quán)限,賦予特定用戶或組權(quán)限來運行該應(yīng)用程序。使用 setfacl 實用工具設(shè)置 ACL 權(quán)限。
對于這些需要以 root 用戶啟動進程的應(yīng)用程序,比如服務(wù)器服務(wù),您有幾個選擇??偨Y(jié)了允許用戶執(zhí)行需要 root 權(quán)限的服務(wù)器服務(wù)的各種選項。
作為 root 用戶 不推薦用于服務(wù)器服務(wù)。當用戶已經(jīng)知道 root 密碼而且應(yīng)用程序泄露不是首要關(guān)注問題時,可用于應(yīng)用程序。
SetUID 由于安全問題,不推薦使用。SetUID 允許標準用戶以另一個用戶方式,比如 root 用戶,執(zhí)行一個文件。
sudo 很常用,并且被認為是一個很好的實踐。sudo 授予一個用戶或組成員權(quán)限以執(zhí)行可能額外需要 root 權(quán)限的文件。該用戶不需要知道 root 密碼。
帶有文件權(quán)限的標準用戶帳戶 在一個文件上為用戶所有者、組所有者或其他人(所有人)設(shè)置執(zhí)行權(quán)限。這是授予那些不需要 root 權(quán)限來執(zhí)行應(yīng)用程序的用戶的常用方法。
帶有 ACL 權(quán)限的標準用戶帳戶 使用較少,但是如果您不想授予一個用戶 sudo 訪問或者更改文件的權(quán)限,這也是一個可行的解決方案。在一個文件上使用 setfacl 命令,您可以授予一個特定用戶或用戶組執(zhí)行該文件的權(quán)力。
在管理 Linux 服務(wù)器時,從命令行運行應(yīng)用程序是一項基本的任務(wù)。很多應(yīng)用程序使用 shell 腳本(類似于 Windows 批處理文件 .bat)來啟動應(yīng)用程序并執(zhí)行其他任務(wù),比如設(shè)置變量以及為其他用戶分配進程。例如,應(yīng)用程序可能需要一個 Java? Virtual Machine (JVM) 來執(zhí)行。那樣的話,shell 腳本可以設(shè)置適當?shù)沫h(huán)境變量,然后執(zhí)行 Java 命令來運行 Java Archive (JAR) 或類文件。這同樣適用于使用 Perl、Python、甚至 C# 的應(yīng)用程序。(當然,C# 編譯的應(yīng)用程序可以在 Linux 上運行)
從命令行或者 shell 提示符執(zhí)行應(yīng)用程序的一個常用方法是使用 ./ 命令。如果您在 Linux 中使用句號 (.) 和正斜杠 (/),就意味著告訴環(huán)境您想要以可執(zhí)行文件運行該文件。例如,運行一個名為 myapp 的可執(zhí)行文件,您可以使用 ./myapp 命令。同樣地,您可以在文件名之前加上語言環(huán)境,比如:
sh php python perl java
但更多情況下,套裝應(yīng)用程序使用 shell 腳本,以 #! 符號設(shè)置環(huán)境變量提供該語言的運行時可執(zhí)行路徑,比如 #!/usr/bin/python。您也應(yīng)該熟悉這種方法。
清單 1 使用 catalina.sh 默認腳本通過 ./ 方法啟動 Apache Tomcat 應(yīng)用程序服務(wù)器。然后,使用 sh 方法啟動服務(wù)器。因為默認端口是 8080,標準用戶不需要對其進行特別修改就可以啟動該服務(wù)。
如果是使用Ubuntu的話,你可以利用CTRL+ALT+T組合鍵打開終端。當然你也可以使用超級鍵(Windows鍵)打開Dash,搜索“TERM”,然后點擊“Term”圖標來打開終端窗口。 對于其他的桌面環(huán)境來說,例如XFCE、KDE、LXDE、Cinnamon以及MATE,你可以在菜單中找到終端。有些環(huán)境會在??繖诨蛘呙姘迳厦姘K端圖標。 通常情況下,你可以在終端里面直接輸入應(yīng)用程序名來啟動一個應(yīng)用程序。比如說,你可以通過輸入“firefox”來啟動Firefox。 在終端啟動應(yīng)用程序的好處是,你可以包含一些額外的參數(shù)。 例如,你可以通過下列命令來打開一個Firefox瀏覽窗口,然后利用默認的搜索引擎搜索相關(guān)信息: firefox -search "linux.cn" 你可能會注意到,如果你啟動Firefox,程序打開以后,回到了終端窗口控制,這就意味著你可以繼續(xù)在終端進行工作。 通常情況下,如果你在終端啟動了應(yīng)用程序,控制會切換到新啟動的應(yīng)用程序,只有程序被關(guān)閉以后才會重新切換到終端控制。這是因為你在前臺啟動了這個程序。 如果要在Linux終端打開應(yīng)用程序并且返回終端控制,那么你需要將應(yīng)用程序啟動為后臺進程。 和下面所列的命令一樣,我們可以通過增加一個()符號,將應(yīng)用程序在后臺啟動。 libreoffice 譯者注:如果需要加參數(shù)的話,記得把符號放在最后。 譯者注:一般情況下,關(guān)閉終端時,在這個終端啟動的后臺程序也會被終止,要使終端關(guān)閉以后,后臺程序依然保持執(zhí)行可以使用下列命令 nohup command [arg...] 如果應(yīng)用程序目錄沒有安裝在PATH變量包含的目錄里面的話,我們就沒有辦法直接通過應(yīng)用程序名來啟動程序,必須輸入應(yīng)用程序的整個路徑來啟動它。 /path/to/yourprogram 如果你不確定程序輸入哪個Linux目錄結(jié)構(gòu)的話,可以使用find或者location命令來定位它。 可以輸入下列符號來找到一個文件: find /path/to/start/from -name programname 例如,你可以輸入下列命令來找到Firefox: find / -name firefox 命令運行的結(jié)果會嗖的一下輸出一大堆,別擔(dān)心,你也可以通過less或者more來進行分頁查看。 find / -name firefox | more find / -name firefox | less 當find命令查找到?jīng)]有權(quán)限訪問的文件夾時,會報出一條拒絕訪問錯誤, 你可以通過sudo命令來提示權(quán)限。當然,如果你沒有安裝sudo的話,就只能切換到一個擁有權(quán)限的用戶了。 sudo find / -name firefox | more 如果你知道你要查找的文件在你的當前目錄結(jié)構(gòu)中,那么你可以使用點來代替斜杠: sudo find . -name firefox | more 你可能需要sudo來提升權(quán)限,也可能根本就不需要,如果這個文件在你的主目錄里面,那么就不需要使用sudo。 有些應(yīng)用程序則必須要提升權(quán)限才能運行,否則你就會得到一大堆拒絕訪問錯誤,除非你使用一個具有權(quán)限的用戶或者使用sudo提升權(quán)限。 這里有個小竅門。如果你運行了一個程序,但是它需要提升權(quán)限來操作,輸入下面命令試試: sudo !!
準確說,linux
不存在“用命令行登陸”的說法。
準確應(yīng)該是從本地字符終端登陸。因為在登陸前,是沒有命令行的,命令行是一個用戶交互操作界面,在你還沒有登陸的時候,是不存在“命令行”的。
至于如何切換到本地字符終端,圖形狀態(tài)下用
ctrl
+
alt
+
f1
到
f6
即可,一般
linux
的設(shè)計都是
1-6
是字符終端,7
是圖形終端,部分發(fā)行版
f1
是字符終端,f2-f7
是字符終端。
你切換到這個終端里,就可以看到提示你輸入用戶名的提示了,輸入用戶名后回車就是輸入密碼。密碼無回顯,正確輸入后回車即可,別因為沒看到密碼哪一行按了鍵盤沒反應(yīng)就覺得機器壞了。
;?????Ubuntu已安裝的軟件可以通過終端進入,命令快捷方式(跟Windows下類似),這里以Firefox為例:
終端啟動軟件方法:
1.把Firefox安裝文件拷貝到/usr/local目錄下
sudo mv Firefox**.tar.gz /usr/local2.進入/usr/local,解壓Firefox**.tar.gz
sudo tar -jxvf Firefox**.tar.gz3.進入Firefox目錄,運行firefox
cd Firefox./firefox建立桌面快捷方式:
1.創(chuàng)建一個文件名為Firefox.desktop文件,將下面的代碼拷貝進去
[Desktop Entry]Categories=Development;Comment[zh_CN]=Comment=Exec=/usr/local/Firefox #Exec=軟件執(zhí)行文件的路徑GenericName[zh_CN]=IDEGenericName=IDEIcon=/usr/local/Firefox/icon.xpm #Icon=快捷方式圖標MimeType=Name[zh_CN]=eclipseName=火狐瀏覽器 #Name=快捷方式名稱Path=StartupNotify=trueTerminal=falseType=ApplicationX-DBUS-ServiceName=X-DBUS-StartupType=X-KDE-SubstituteUID=falseX-KDE-Username=owen2.給文件添加可執(zhí)行權(quán)限
chmod +x Firefox.desktop3.將該文件復(fù)制到桌面
注:在ubuntu11.04之前的版本中,有更簡單的方法來創(chuàng)建桌面快捷方式:右鍵點擊桌面-創(chuàng)建啟動器即可。
具體步驟如下:
1、首先我們在命令行運行程序需要借助jdk的環(huán)境依賴,打開jdk包。
2、接下來我們需要打開運行窗口,然后在運行窗口中輸入cmd命令,如下圖所示
3、在CMD命令行界面中我們輸入cd命令進入到程序文件所在的目錄,如下圖所示
4、接下來執(zhí)行命令對程序文件進行編譯,如下圖所示
5、編譯完畢以后我們會在文件夾下面看到一個class文件,這個就是虛擬機編譯完產(chǎn)生的文件,如下圖所示
6、完成上述步驟后,即可在linux命令行中執(zhí)行應(yīng)用程序。