Skip to content

Latest commit

 

History

History
173 lines (168 loc) · 16.4 KB

1_1.基礎linux入門.MD

File metadata and controls

173 lines (168 loc) · 16.4 KB

agenda

  • 1_認識Linux作業系統:多人使用與多工作業
  • 2_Linux 核心(kernel) 與 shell
  • 3_Linux 發行版本(distributions)
  • 4_linux目錄結構

1.認識linux作業系統:多人使用與多工作業

  • Linux…是一種自由和開放原始碼(open source)的UNIX-like作業系統。
  • The Linux kernel is a free and open-source, monolithic, modular,multitasking(多工), Unix-like operating system kerne
  • 該作業系統的核心(kernel)由林納斯·托瓦茲Linus Torvalds在1991年首次發布。
  • 核心原始碼公布在github ==> Linux kernel source tree
  • Linux 基金會(Linux Foundation|LF)
    • 是一家非營利性技術貿易協會,致力於促進,保護和推進Linux和協同開發,並支援「歷史上最大的共享技術資源」
    • 2000年的開原始碼發展實驗室(OSDL)與自由標準組織(FSG)合併後從而成為現在的組織。
    • Linux基金會贊助Linux創始人Linus Torvalds和主管維護者Greg Kroah-Hartman的工作 並由領導Linux和開源公司的支援,包括許多知名的科技公司,以及來自全世界的開發商
    • Linux基金會通過活動,培訓和認證以及開源專案擴大了服務範圍。

2_核心(kernel) 與 shell

  • Linux kernel(內核|核心)::英文版WIKI說明 中文版WIKI說明
    • Linux核心是一個單體核心,支援真正的搶占式多工處理(於使用者態,和版本2.6系列之後的核心態)、虛擬記憶體、共享庫、請求分頁、共享寫時複製可執行體(通過核心同頁合併) 、記憶體管理、Internet協定族和執行緒等功能。
    • 1991年傳奇
    • 1992年Tanenbaum–Torvalds debate 塔能鮑姆-托瓦茲辯論 摘錄自WIKI
      • 為了教學上的方便,"Andy" Tanenbaum模倣Version 7 Unix風格,自行創作了一個無版權爭議的作業系統,Minix,讓學生可以在大學中繼續學習發展作業系統,並閱讀到完整原始碼。
      • 這是一個小型的類Unix作業系統,原始碼附屬在Tanenbaum寫作的教科書中,在1987年首度釋出。原始碼大小為三個磁碟片,原始碼完整公開,在購買到磁片後,讀者可以自行編譯與安裝,也可以自由閱讀與修改。
      • Linus Torvalds在芬蘭就讀大學時,其祖父贈送他一台Intel 80386個人電腦。他不滿其附贈的DOS系統效能太差,在閱讀了Tanenbaum教授的教科書後,他決定根據教科書上的內容,自行創作自己的作業系統。
      • 1991年,Linus Torvalds在Usenet新聞組comp.os.minix登載帖子,向社群釋出了他自行創作的作業系統內核完整原始碼,也就是日後的Linux。
      • 1992年在Usenet討論群組(新聞組)comp.os.minix上發起的一場辯論,主角為Minix創作者Tanenbaum與Linux核心原始作者Linus Torvalds
      • 討論的主題在於作業系統內核架構的選擇
        • "Andy" Tanenbaum認為,以微內核架構設計的作業系統,在理論上,比宏內核架構更加優越,主張Linux應該以微內核架構來進行重新設計。
        • 但是Linus Torvalds以開發實務上的觀點展開反擊,陳述Linux選擇宏內核架構進行開發的理由,並比較Minix與Linux的效能差異。
    • GNU/Linux命名爭議 GNU/Linux naming controversy
      • GNU/Linux命名爭議,是在自由及開放原始碼軟體社群成員內的,關於是應該把使用GNU軟體與Linux核心組合之作業系統稱為「GNU/Linux」還是「Linux」的爭議。
      • GNU/Linux這一名稱是由自由軟體基金會Free Software Foundation(FSF)的創立者與GNU計劃的發起人Richard Stallman所提出的。
      • GNU的開發者與其支持者,希望以該名稱來作為此作業系統的正式名稱。他們認為,此作業系統,包括了GNU系統軟體套件與Linux核心,使用GNU/Linux這個名稱,可以良好概括它的主要內容。
      • GNU計畫原本就是以發展一個自由的作業系統為遠程計畫,但遲遲沒有完成。而Linux核心的出現剛好可以補足這個缺口。
      • 但Linux核心本身並不是GNU計劃的一部份,GNU/Linux這個名稱在Linux社群中並沒有得到一致認同。
      • 一些諸如Debian的發行版社群採用了GNU/Linux這一名稱,但許多Linux社群中的成員認為使用Linux這一名稱更好,主張Linux這個名稱朗朗上口,且在公眾與媒體中更為通用。
      • Linux核心專案的發起人Linus Torvalds偏好於使用Linux,但對於GNU/Linux這個名字並不強烈反感。
  • shell
    • shell 是提供使用者輸入各種指令(linux command)來執行各種工作 <==我們今天要學一些基本指令
    • linux有許多不同功能特色的shell ==> bourne Shell﹑C Shell﹑Korn Shell﹑Zsh Shell﹑等等
    • 今天要學的是 BASH (Bourne Again SHell) == GNU 所加強的一個 Bourne shell 版本﹐ 也是大多數 Linux 套件的預設 shell
    • 不同Shell提供大同小異的指令(linux command) 看看 WIKI羅列的shell :Comparison of command shells
    • 你可以將不同指令(linux command)串在一起寫成程式== > shell programming
    • Linux Shell programming推薦書籍
  • lab 實作 如何查詢 Linux 的發行版名稱與版本?
    • 檢查你使用中的linux核心: 打開terminal ==> 輸入 uname -a
    • 打開terminal ==> 輸入 bash --version
    • 查詢 Linux 發行版與版本 ==> ls -l /etc/*-release ==> cat /etc/lsb-release cat /etc/os-release
    • 使用 lsb_release 指令查詢 ==> lsb_release -a
    • cat /proc/version
  • 有時間也可以學學Windows Shell

3_Linux發行版本(distributions) WIKI說明

4_linux目錄結構

  • windows 作業系統目錄結構
  • Linux 作業系統目錄結構
    • 沒有 C: D:
    • 檔案系統階層標準(Filesystem Hierarchy Standard|FHS)
      • 定義了Linux作業系統中的主要目錄及目錄內容
      • FHS由Linux基金會維護
      • 當前的版本是2.3(3.0?),在2004年1月29日公布。
      • FHS 標準被不少流行的 UNIX 和 UNIX-like 發行版所使用,使用這些系統時常常會用到這些知識。
      • 一些發行版可能不完全遵守這樣的條例,也有些使用符號連結之類的形式以便自定義系統。然而,這些方式得到的文件系統結構實際上與 FHS 差別不大。
      • WIKI
    • 最上層目錄 /
    • /etc ==> Etcetera(等等) 的縮寫 | 存放所有的系統管理所需要的設定檔和子目錄
      • /etc/passwd
    • /bin ==> Binaries (二進位檔案) 的縮寫 | 存放著最經常使用的命令
    • /sbin ==> Superuser Binaries (超級使用者的二進位檔案) 的縮寫| 存放 系統管理員使用的系統管理程式。
    • /boot ==> 啟動 Linux 時使用的一些核心檔,包括一些連接檔以及鏡像檔
    • /dev ==> Device(設備) 的縮寫 | 存放的是 Linux 的外部設備
    • /root ==> 最高權限使用者(管理者)登入時的目錄
    • /home ==> 一般使用者登入時的目錄
      • /home/ksu ==> ksu使用者登入時的目錄
    • /lib ==> Library(庫) 的縮寫 | 存放著系統最基本的動態連接共用庫(類似於 Windows 裡的 DLL 檔)
    • /lost+found ==> 一般情況下是空的 | 當系統非法關機後,這裡就存放了一些文件。
    • /media ==> linux 系統會自動識別一些設備,如USB隨身碟/光碟機等等,當識別後,Linux 會把識別的設備掛載到這個目錄。
    • /mnt ==> 讓使用者臨時掛載別的檔案系統的| 可以將光碟機掛載在 /mnt/ 上,然後進入該目錄就可以查看光碟機裡的內容了。
    • /opt ==> optional(可選) 的縮寫 | 給主機額外安裝軟體所擺放的目錄 |預設是空的。
    • /proc ==> Processes(進程) 的縮寫| /proc 是一種虛擬檔案系統,存儲的是當前內核運行狀態的一系列特殊檔
      • 這個目錄是一個虛擬的目錄,它是系統記憶體的映射
      • 我們可以通過直接訪問這個目錄來獲取系統資訊。
      • 這個目錄的內容不在硬碟上而是在記憶體裡,我們也可以直接修改裡面的某些檔
      • 範例:可通過下面的命令來遮罩主機的ping命令,使別人無法ping你的機器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    • /tmp ==> temporary(臨時) 的縮寫 | 來存放一些暫存檔案的。
    • /var ==> variable(變數) 的縮寫 | 存放著在不斷擴充著的東西 | 習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌檔(重要)。
    • /run ==> 暫存檔案系統,存儲系統啟動以來的資訊| 當系統重啟時,這個目錄下的檔應該被刪掉或清除
    • /srv ==> 存放一些服務啟動之後需要提取的資料。
    • /usr == >unix shared resources(共用資源) 的縮寫| 非常重要的目錄,使用者的很多應用程式和檔都放在這個目錄下(類似於 windows 下的 program files 目錄)。
      • /usr/bin == > 使用者使用的應用程式
      • /usr/sbin == > 超級使用者(root)使用的管理程式和系統守護程式。
      • /usr/src == > 內核原始程式碼預設的放置目錄。
    • 其他更多說明請參考LINUX書籍

後續研讀建議