第一周就先熟悉一下 Linux 的基礎操作,會用到圖形介面一點點~還有雲端系統的操作!
Linux 是作業系統,作業系統的目的是在管理硬體,因此你得要先瞭解一下什麼是硬體?另外,Linux 作業系統到底有哪些東西? 而為什麼 Linux 在操作上授權為免費?瞭解這些基本資料後,再來實際操作一下 Linux 的圖形 (GUI) 與文字 (Command Line) 模式的運作~ 同時查詢一下一般用戶家目錄的資料吧!Linux 的學習確實稍微困難,請大家從這一章仔細的開始進行操作的行為喔!
Linux 是安裝在電腦硬體系統上面的一套作業系統,目的是用來管理電腦硬體的!所以我們得要先了解一下硬體的常見組成,以及常見的硬體分類, 這樣才好入門 Linux 喔!
目前的電腦硬體系統主要經由底下的元件所組成:
上述主機部份是整體系統最重要的部份,該部份的組成為:控制單元、算術邏輯單元以及記憶體單元(含主記憶體、外部儲存裝置)等。
目前的電腦硬體架構主要均由中央處理單元 (CPU) 所定義的各項連結元件所組成,而目前世界上消費市場中,最常見到的 CPU 架構大概可以分為兩大類:
為了簡化硬體的資源操作,因此後來有開發作業系統來管理硬體資源的分配。因此程式設計師僅須考量程式的運作流程,而無須考量記憶體配置、 檔案系統讀寫、網路資料存取等,在程式開發上面較為簡易。硬體、作業系統、作業系統提供的開發界面以及應用程式的相關性,可以使用底下的圖示來說明:
現代的作業系統主要的目的就是在控管硬體的資源,並且提供一組開發環境讓其他第三方協力廠商可以方便的在該作業系統上面開發相關的軟體。 故作業系統主要包含的部份是:『核心+系統呼叫』。
現代的 Linux 作業系統主要以可跨硬體平台的 C 程式語言所寫成,且 Linux 自從 3.x 以來的核心版本已經支援了 ARM 的 CPU 架構, 因此 Linux 可以輕鬆的在不同的硬體平台間編譯後安裝。但你依舊不可以直接拿 x86 架構的編譯好的 Linux 去安裝在 ARM 的平台上! 因為兩者對個別硬體的設計還是不太相同的!
Linux 並非憑空撰寫而來,其發展有一定的歷史背景。由於這些歷史背景,目前 Linux 是自由軟體,可以自由的使用、學習、修改、編譯、再發行, 而且是相對穩定的作業系統。
GNU 的 GPL 授權主要強調自由的學習,Free Software(自由軟體)是一種自由的權力,並非是『價格!』 舉例來說,你可以擁有自由呼吸的權力、你擁有自由發表言論的權力,但是,這並不代表你可以到處喝『免費的啤酒!(free beer)』, 也就是說,自由軟體的重點並不是指『免費』的,而是指具有『自由度, freedom』的軟體,史托曼進一步說明了自由度的意義是: 使用者可以自由的執行、複製、再發行、學習、修改與強化自由軟體。
GNU 的 GPL 授權有底下的權力與義務:
由於自由軟體使用的英文為 free software,這個 free 在英文是有兩種以上不同的意義,除了自由之外,免費也是這個單字! 因為有這些額外的聯想,因此許多的商業公司對於投入自由軟體方面確實是有些疑慮存在的!許多人對於這個情況總是有些擔心~
為了解決這個困擾,1998 年成立的『開放原始碼促進會 (Open Source Initiative)』提出了開放原始碼 (Open Source,亦可簡稱開源軟體) 這一名詞! 另外,並非軟體可以被讀取原始碼就可以被稱為開源軟體喔!該軟體的授權必須要符合底下的基本需求,才可以算是 open source 的軟體。
Linux kernel 主要由 http://www.kernel.org 維護,目前的版本已經出現到 4.x 版。Linux kernel 1.0 在 1994 年釋出, 在 1996 年釋出 2.0 版,在 2.0 之後,核心的開發分為兩個部份,以廣為使用的 2.6 來說明的話,主要的分類有:
這種奇數、偶數的編號格式在 2011 年 3.0 核心推出之後就失效了。從 3.0 版開始,核心主要依據主線版本 (MainLine) 來開發,開發完畢後會往下一個主線版本進行。例如 4.9 就是在 4.8 的架構下繼續開發出來的新的主線版本。
舊的版本在新的主線版本出現之後,會有兩種機制來處理,一種機制為結束開發 (End of Live, EOL),亦即該程式碼已經結束, 不會有繼續維護的狀態。 另外一種機制為保持該版本的持續維護,亦即為長期維護版本 (Longterm)!例如 4.9 即為一個長期維護版本,這個版本的程式碼會被持續維護,若程式碼有 bug 或其他問題, 核心維護者會持續進行程式碼的更新維護。
為了讓使用者能夠接觸到Linux,於是很多的商業公司或非營利團體,就將Linux Kernel(含tools)與可運行的軟體整合起來, 加上自己具有創意的工具程式,這個工具程式可以讓使用者以光碟/DVD或者透過網路直接安裝/管理Linux系統。 這個『Kernel + Softwares + Tools + 可完整安裝程序』的咚咚,我們稱之為Linux distribution, 一般中文翻譯成可完整安裝套件,或者Linux發佈商套件等。
常見的 Linux distributions 分類有:
| RPM 軟體管理 | DPKG 軟體管理 | 其他未分類 | |
| 商業公司 | RHEL (Red Hat 公司) SuSE (Micro Focus) |
Ubuntu (Canonical Ltd.) | |
| 社群單位 | Fedora CentOS OpenSuSE |
Debian B2D |
Gentoo |
一般用途在個人電腦 (包括筆記型電腦) 的使用,建議可以使用 Ubuntu / Fedora / OpenSuSE 等,若用在 Server 上, 建議可以使用 CentOS 或 Debian。
CentOS 的產生較為有趣,他是取自 Red Hat 的 RHEL 作業系統,將原始碼中與 Red Hat 相關的註冊商標或其他著作相關的資料移除, 改以自己的『企業商用社群版本作業系統』取名,然後再次發行。因此 CentOS 的版本與 RHEL 是亦步亦趨的! (包括 Oracle Linux 與 Scientific Linux 也是同樣的作法)。
用在企業環境與學術環境中,最常見到的應用有:
個人的使用則有:
為方便教師/學生可以在任何地方學習 Linux 作業系統,一個教學環境是需要事先建置的。除了使用實體機器原生的 Linux 之外, 虛擬化的環境更方便教師製作教學單元。因為虛擬化的環境軟/硬體可以模擬的完全一致,對於教師與學生的實作練習以及錯誤重現,都有很大的幫助。
本教材預設使用的 Gocloud 雲端系統為鳥哥在自己的課堂上面搭建的小型雲伺服器,對於同學無間斷的學習是很有幫助的。不過因為系統硬體資源太少了, 所以僅開放給鳥哥實際課程的同學們使用,實際並未對網際網路開放,在此跟大家說聲抱歉!如果您是自學的朋友,那只好請參考書上的光碟資料, 使用 VirtualBox 軟體作為自學磁碟的系統了!
(ps. 除了 Gocloud 系統之外,老師們也可以選擇 Ovirt (https://ovirt.org/) 作為教學訓練的環境建置, 或者單純在原有的教室 windows 系統上面建置 virtualbox 的環境來教學即可。關於 virtualbox 的建置,可以參考光碟附件。如果是預計使用 ovirt, 可以參考如下的連結:https://www.ovirt.org/documentation/install-guide/Installation_Guide.html)
除非貴單位有購買與安裝 Gocloud 系統,否則請以光碟內容的 virtualbox 環境取代底下的說明。若有安裝 Gocloud 系統, 請依據貴單位的環境設定 (網際網路 IP 或 主機名稱),直接以瀏覽器來連線到 Gocloud 系統,系統示意圖如下所示:
如果是第一次使用的學生,那就請先來註冊一下!按下如上圖的箭頭指向的地方,點下去就會出現註冊的項目了,如下所示:
一般來說,如果是學校單位,鳥哥建議如上述畫面所示,最好請學生依據自己的學號作為帳號,真實姓名作為姓名填寫, 這樣老師比較知道學生與帳號的對應,在考試出題與作答時,會比較清楚對應。如果沒有強調這一點,那學生註冊的姓名可能會比較傷腦筋。 等到註冊完畢後,還要等老師將你的帳號開通之後才能夠使用。因此,此時請稍微等待一小段時間喔!
等到老師將你的帳號開通,並且假設老師已經將硬碟製作好給你了,此時請回到圖 1.2.1 去輸入帳號與密碼欄位, 並按下登入系統或 [Enter],那就能夠登入系統了。登入系統會出現如下的圖示:
畫面中最上方為學生可以操作的系統功能,其中比較常用的是:
除非貴單位有購買與安裝 Gocloud 系統,否則請以光碟內容的 virtualbox 環境取代底下的說明。若有安裝 Gocloud 系統, 在你登入 Gocloud 網站系統後,點選『啟動/關閉主機』後,應該會得到如下的畫面。如果一切順利的話,那麼你應該會取得至少一個以上的硬碟環境。 如下圖的 2 號箭頭處。如果找不到任何硬碟,請與您的授課教師聯繫。選擇正確的磁碟後,請按下『開啟機器』的按鈕來啟動雲端虛擬機器。
如果一切順利,那麼你就會得到如下的畫面示意圖,基本上,我們最重要的是取得如下圖 1 號箭頭指的方框處的 URL (spice 開頭那項), 請複製該項目,並且將他貼上 圖1.2.4 所需要指定的 URL 方框中,按下連線 (Connect) 即可取得如 圖1.2.7 的雲端虛擬機器視窗了!
remote viewer 軟體左上方主要有兩個基本功能可以選擇:
另外請注意,由於目前你應該有兩個完全獨立的系統,一個是你自己的系統,一個是 Gocloud 的雲端虛擬機器, 若要操作 Gocloud 的雲端虛擬機器時,你應該要將滑鼠移動到 remote viewer 的視窗內,這樣才能夠完整的使用虛擬機器的資源!
取得雲端 Linux 機器後,就能夠開始操作 Linux 系統了。接下來先來學習如何登入 Linux、了解圖形界面、文字界面的操作差異, 並建立好『良好的操作行為』,這對於未來的幫助會很大的
本教材預計在訓練學員們了解 Linux 在伺服器的使用上,應該如何操作與學習,因此使用了 CentOS 這套 Linux 作業系統來學習。 請大家依據教材的內容慢慢實做練習,以理解整個系統的使用!
在圖1.2.7 的畫面中,使用滑鼠左鍵將螢幕向上拉動,就會出現等待登入的畫面,如下所示:
你可以:
本教材提供虛擬機的帳號與密碼為『student/student@linux』,請依據此帳號密碼來登入系統。
如果一切處理順利,那就可以出現圖形化視窗。你可以先到『應用程式』-->『喜好』-->『終端機』點選,點出一個終端機界面, 然後再到畫面右上角的三角形點選,就能夠看到一些設定值的項目,如下所示:
預設的中文輸入法似乎怪怪的,沒有辦法正確的輸入中文。你該如何設定中文輸入法呢?
由於使用圖形界面時,會在使用者的家目錄建立相當多的圖形界面操作設定檔與暫存檔。不過在系統管理員 (root) 的角色下,
我們希望不要有太多雜亂的資料,因此建議『不要在圖形環境下使用 root 的帳號登入系統』喔!你可以在其他的登入界面使用 root 的帳號!
如下一個小節的純文字模式介紹~
Linux預設的情況下會提供六個Terminal來讓使用者登入, 切換的方式為使用:[Ctrl] + [Alt] + [F1]~[F6]的組合按鈕。
系統會將[F1] ~ [F6]命名為tty1 ~ tty6的操作介面環境。 也就是說,當你按下[ctrl] + [Alt] + [F1]這三個組合按鈕時 (按著[ctrl]與[Alt]不放,再按下[F1]功能鍵), 就會進入到tty1的terminal介面中了。同樣的[F2]就是tty2! 按下[Ctrl] + [Alt] + [F1]就可以回到原本的 X 圖形界面中。整理一下登入的環境如下:
CentOS Linux 7 (Core) Kernel 3.10.0-327.el7.x86_64 on an x86_64 localhost login: student Password: <==這裡輸入你的密碼 Last login: Thu Apr 14 19:46:30 on :0 <==上次登入的情況 [student@localhost ~]$ _ <==游標閃爍,等待你的指令輸入
上面顯示的內容為:
上述比較重要的資料在第 6 行,CentOS 的 bash 提示字元通常的格式就是『 [使用者帳號@本主機名 工作目錄]提示字元 』。 其中比較重要的項目是:
另外,文字界面等待登入畫面的第一、第二行的內容其實是來自於/etc/issue這個檔案!
那麼如何離開系統呢?其實應該說『登出Linux』才對!登出很簡單,直接這樣做:
[student@localhost ~]$ exit
就能夠登出Linux了。但是請注意:『離開系統並不是關機!』 基本上,Linux本身已經有相當多的工作在進行,你的登入也僅是其中的一個『工作』而已, 所以當你離開時,這次這個登入的工作就停止了,但此時Linux其他的工作是還是繼續在進行的!
站在伺服器角度的立場來看,使用純文字模式來進行系統的操作是很重要的!畢竟伺服器通常不會啟用圖形界面。 因此,第一堂課接觸過 Linux 與登入過 Linux 之後,讓我們來使用簡單的指令查詢一下用戶家目錄裡面有哪些資料,以及如何查詢自己曾經下達過的指令吧!
請使用一般用戶的身份登入 Linux 系統,同時啟動一個終端機在桌面上。現在讓我們來執行兩隻指令,確認一下如何操作系統與觀察輸出的資料。
[student@localhost ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
使用 ls 可以單純的列出檔名,就是上面列出的『Desktop Documents Downloads...』等等的資料。 不過並沒有顯示這個檔名相關的各項檔案權限資訊,包括時間、容量等等。若需要查閱比較詳細的資訊,需要使用 ll (LL 的小寫) 來處置。
[student@localhost ~]$ ll drwxr-xr-x. 2 student student 6 3月 7 19:18 Desktop drwxr-xr-x. 2 student student 6 3月 7 19:18 Documents drwxr-xr-x. 2 student student 6 3月 7 19:18 Downloads drwxr-xr-x. 2 student student 6 3月 7 19:18 Music drwxr-xr-x. 2 student student 6 3月 7 19:18 Pictures drwxr-xr-x. 2 student student 6 3月 7 19:18 Public drwxr-xr-x. 2 student student 6 3月 7 19:18 Templates drwxr-xr-x. 2 student student 6 3月 7 19:18 Videos
第一堂課的此時,你需要注意的是最右邊的三個參數,分別是檔案容量、檔案最後被修改的日期、檔名資訊。 以『Pictures』檔名為例,該檔名的容量有 6bytes,而最後被修改的日期為『 3月 7 19:18 』。至於年份則是本年度的意思。
如果想要查閱根目錄 (類似 windows 的『電腦』項目),則使用如下的指令:
[student@localhost ~]$ ll /
總計 32
lrwxrwxrwx. 1 root root 7 2月 18 02:54 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 2月 18 03:01 boot
drwxr-xr-x. 20 root root 3320 4月 19 03:59 dev
drwxr-xr-x. 129 root root 8192 4月 19 03:59 etc
drwxr-xr-x. 3 root root 20 4月 14 19:46 home
lrwxrwxrwx. 1 root root 7 2月 18 02:54 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 2月 18 02:54 lib64 -> usr/lib64
......
此時螢幕上顯示的為根目錄底下的檔名,而不是 student 的家目錄了。這個練習在讓操作者了解到,指令後面可以加參數 (parameters)。 而如果想要知道 student 家目錄底下有沒有『隱藏檔』時,可以使用如下的指令:
[student@localhost ~]$ ll -a
總計 24
drwx------. 14 student student 4096 3月 7 21:32 .
drwxr-xr-x. 3 root root 21 1月 3 22:27 ..
-rw-r--r--. 1 student student 18 8月 3 2016 .bash_logout
-rw-r--r--. 1 student student 193 8月 3 2016 .bash_profile
-rw-r--r--. 1 student student 231 8月 3 2016 .bashrc
drwx------. 11 student student 226 3月 7 22:12 .cache
drwxr-xr-x. 15 student student 276 3月 7 21:29 .config
drwxr-xr-x. 2 student student 6 3月 7 19:18 Desktop
......
可以發現多了相當多以小數點開頭的檔名,這些檔名在 ls 或 ll 時並不會出現,但加上『 -a 』這個『 選項 (Option) 』之後, 就會開始出現了。這個練習在讓操作者了解到,指令後面可以加『選項』來改變指令的處理行為。
最後,如果你想要知道根目錄本身的權限,而不是根目錄底下的檔名,則應該要使用底下的指令:
[student@localhost ~]$ ll -d /
dr-xr-xr-x. 17 root root 4096 2月 18 03:01 /
你將在螢幕上發現到只有根目錄 (/) 這個檔名存在,而不像剛剛『 ll / 』出現一堆檔名資料。 亦即一般情況下,ll 是『瀏覽目錄內的檔名資訊』,而不是看目錄本身。
以 windows 的檔案總管來說,通常檔名的瀏覽畫面中,左側為『目錄』而右側為『該目錄下的檔名』,所以,『 ll 』代表滑鼠點左邊的目錄,
而螢幕輸出右邊的檔名資料之意。
Linux 的文字界面中,可以用幾個簡單的方式去檢查你曾經下達過的指令,最簡單的方法就是使用方向鍵『上與下』, 不但能夠呼叫出之前的指令,也能夠再透過方向鍵『左與右』,與鍵盤上的『home/end』按鍵,直接在一行指令的最前面與最後面直接再修改。 熟悉這個作法,可以讓你快速的編輯一行指令。
但是如果是太久之前做的指令,此時就能夠透過歷史命令『 history 』來呼叫出來。
除了『 !數字 』可以重複執行某個指令外,也能夠直接透過底下的方式來重複執行歷史命令:
在 CentOS 7 底下,預設歷史命令會紀錄 1000 筆,你下次登入後,系統會將上次的歷史命令匯入,亦即,上次你下達過 50 筆紀錄, 則下次啟用終端機後,第一個指令會紀錄在 51 筆。因此,經常查詢 history 可以讓操作者了解以前曾經下達過哪些指令。
離開系統,以終端機界面來說,直接輸入 exit 或者 logout 都可以。以圖形界面來說,畫面中右上角三角形部份點選後, 出現登入者 (student) 的文字,點選後選擇『登出』即可。但登出不是關機。關機時,最好能夠確認系統上面沒有其他工作的用戶。 因此關機前,建議檢查系統上面的用戶狀態。
[student@localhost ~]$ w
04:59:07 up 1:53, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
student :0 :0 03:59 ?xdm? 23.56s 0.14s gdm-session-worker
student pts/0 :0 03:59 59:31 0.03s 0.03s bash
上面表格中,『USER』欄位為登入的使用者,『TTY』就是前面小節談到的終端機,通常為 tty1~tty6。但是在 tty1 使用圖形界面登入時, 會顯示為『 :0 』,亦即圖形界面使用終端機名稱為 :0 之意。另外,每行最後的『WHAT』為該終端機目前使用的指令為何。 所以圖形界面為透過 gdm-session-worker 指令而來,而終端機則使用 bash 這個程式。
至於 pts/0 則可能是 (1)在圖形界面啟動的終端機,或 (2)透過網路連線進來的終端機。並非本機的 tty1~tty6 。
從上表看來,目前確實僅有 student 在線上,若本機器並非伺服器,則此時應該可以進行關機的行為。關機可以使用如下的指令:
[student@localhost ~]$ poweroff [student@localhost ~]$ halt [student@localhost ~]$ shutdown -h now [student@localhost ~]$ systemctl poweroff
上述的任何一個指令均可關機。但無論使用哪個指令關機,其實最終都是呼叫最後一個,亦即『 systemctl poweroff 』進行關機的行為。
在本機 tty1~tty6 登入系統的帳號,無論系統管理員或一般帳號,均可 poweroff 本機。但如果是透過網路連線進來的,則無法關閉 Linux ,
除非使用管理員帳號,才有辦法透過網路關機。
前置動作:請使用 unit01 的硬碟進入作業環境,並請先以 root 身分執行 vbird_book_setup_ip 指令設定好你的學號與 IP 之後,再開始底下的作業練習。
作業結果傳輸:請以 root 的身分執行 vbird_book_check_unit 指令上傳作業結果。 正常執行完畢的結果應會出現【XXXXXX;aa:bb:cc:dd:ee:ff;unitNN】字樣。若需要查閱自己上傳資料的時間, 請在作業系統上面使用: http://192.168.251.250 檢查相對應的課程檔案。