Linux入門指引(一) 安裝之前:一個基本的GNU/Linux系統的構成

來源:互聯網
上載者:User
什麼是Linux

Linux是一種自由和開放源碼的類UNIX作業系統核心。目前存在著許多不同的Linux發行版,可安裝在各種各樣的電腦硬體裝置,從手機、平板電腦、路由器和影音遊戲控制台,到桌上型電腦,大型電腦和超級電腦。 Linux是一個領先的作業系統核心,世界上運算最快的10台超級電腦啟動並執行都是基於Linux核心的作業系統。

Linux作業系統也是自由軟體和開放原始碼發展中最著名的例子。只要遵循GNU通用公用許可證,任何人和機構都可以自由地使用Linux的所有底層原始碼,也可以自由地修改和再發布。嚴格來講,Linux這個詞本身只表示Linux核心,但在實際上人們已經習慣了用Linux來形容整個基於Linux核心,並且使用GNU
工程各種工具和資料庫的作業系統(也被稱為GNU/ Linux)。
通常情況下,Linux被打包成供桌上型電腦和伺服器使用的Linux發行版本。一些流行的主流Linux發行版本,包括Debian(及其衍生版本Ubuntu),Fedora和openSUSE等。 Linux得名於電腦業餘愛好者Linus Torvalds。

而不是如百度百科所講的Linux作業系統是UNIX作業系統的一種複製系統。它誕生於1991 年的 Linux案頭[1]10 月5 日(這是第一次正式向外公布的時間)。以後藉助於Internet網路,並通過全世界各地電腦愛好者的共同努力,已成為今天世界上使用最多的一種UNIX 類作業系統,並且使用人數還在迅猛增長。

Linux只是個核心,而不是作業系統,所以在這我們再理解一下作業系統是由什麼組成的。


作業系統

作業系統(英語:Operating System,簡稱OS)是管理電腦硬體與軟體資源的電腦程式,同時也是電腦系統的核心與基石。作業系統需要處理如管理與配置記憶體、決定系統資源供需的優先次序、控制輸入與輸出裝置、操作網路與管理檔案系統等基本事務。作業系統也提供一個讓使用者與系統互動的操作介面。 作業系統的型態非常多樣,不同機器安裝的作業系統可從簡單到複雜,可從手機的嵌入式系統到超級電腦的大型作業系統。許多作業系統製造者對它涵蓋範疇的定義也不盡一致,例如有些作業系統整合了圖形化使用者介面(GUI),而有些僅使用命令列介面(CLI),而將GUI視為一種非必要的應用程式。

作業系統位於底層硬體與使用者之間,是兩者溝通的橋樑。使用者可以通過作業系統的使用者介面,輸入命令。作業系統則對命令進行解釋,驅動硬體裝置,實現使用者要求。以現代標準而言,一個標準PC的作業系統應該提供以下的功能:

  • 進程管理(Processing management)
  • 記憶體管理(Memory management)
  • 檔案系統(File system)
  • 網路通訊(Networking)
  • 安全機制(Security)
  • 使用者介面(User interface)
  • 驅動程式(Device drivers)

而讓我們來看一下兩者之間的不同之處,這是一張linux的架構圖我們可以發現核心只是位於底層。

幾乎完整的Linux架構圖
使用者
模式
應用程式(sh、vi、OpenOffice.org等)
複雜庫(KDE、glib等)  
  簡單庫(opendbm、sin等)  
C庫(open、fopen、socket、exec、calloc等)
核心
模式
系統中斷、調用、錯誤等軟硬體訊息
核心(驅動程式、進程、網路、記憶體管理等)
硬體(處理器、記憶體、各種裝置)

我們可以發現,由linux核心+shell可以構成一個作業系統,而linux本身只是個核心,也就是圖中的核心模式,負責控制系統的這些部分。也就是我們可以發現,Linux核心構成了一個作業系統除使用者介面以外的部分,而shell就是這最後的使用者介面。

而linux核心以外的部分就是由GNU計劃構成的。

可以參考:GNU及其作業系統
何處的中國電腦文化(三)


Shell

Shell是系統的使用者介面,提供了使用者與核心進行互動操作的一種介面。它接收使用者輸入的命令並把它送入核心去執行。

實際上Shell是一個命令直譯器,它解釋由使用者輸入的命令並且把它們送到核心。不僅如此,Shell有自己的程式設計語言用於對命令的編輯,它允許使用者編寫由shell命令組成的程式。Shell程式設計語言具有普通程式設計語言的很多特點,比如它也有迴圈結構和分支控制結構等,用這種程式設計語言編寫的Shell程式與其他應用程式具有同樣的效果

bash 是一個為GNU計劃編寫的Unix shell。它的名字是一系列縮寫:Bourne-Again SHell — 這是關於Bourne shell(sh)的一個雙關語(Bourne again / born again)。Bourne shell是一個早期的重要shell,由史蒂夫·伯恩在1978年前後編寫,並同Version 7 Unix一起發布。bash則在1987年由布萊恩·福克斯創造。在1990年,Chet
Ramey成為了主要的維護者。


shell將會是我們在GNU/linux中經常用到的經常有到的工具之一,用來操作電腦用的。在遷移到linux之前我們可以試用cygwin來進行類比:

Cygwin是許多自由軟體的集合,最初由Cygnus
Solutions開發,用於各種版本的Microsoft
Windows上,運行UNIX類系統。Cygwin

GCC

GCC(GNU Compiler Collection,GNU編譯器套裝),是一套由GNU開發的程式設計語言編譯器。它是一套以GPL及LGPL許可證所發行的自由軟體,也是GNU計劃的關鍵區段,亦是自由的類Unix及蘋果電腦Mac OS X 作業系統的標準編譯器。GCC(特別是其中的C語言編譯器)也常被認為是跨平台編譯器的事實標準。

GCC原名為GNU C語言編譯器(GNU C Compiler),因為它原本只能處理C語言。GCC很快地擴充,變得可處理C++。之後也變得可處理Fortran、Pascal、Objective-C、Java、Ada,以及Go與其他語言。


同shell一樣,對於GNU/linux系統而言,GCC的作用也是無可取代的。當然如果只是一般用途的話,GCC對於一般使用者可能沒用,但是在些GNU/Linux系統上,我們可能就需要自己編譯源碼成二進位檔案,而沒有軟體包,因而其重要性是不言而喻的。自然的如果我們自己動手編譯GNU/Linux作業系統的話,我們會理解其的重要意義。有興趣的同學可以試一下:Linux
From Scratch (LFS)。

啟動引導程式

最後,當我們構成以上的那些之後,我們就需要一個引導程式,以便使系統啟動,引導進核心。

啟動程式(bootloader)於電腦或其他電腦應用上,是指引導作業系統啟動的程式。啟動程式啟動方式與程式視應用機型種類。例如在普通PC上,引導程式通常分為兩部分:第一階段引導程式位於主引導記錄,用於引導位於某個分區上的第二階段引導程式,如NTLDR、GNU GRUB等。

BIOS 開機完成後,bootloader就接手初始化硬體裝置、建立儲存空間空間的映射,以便為作業系統核心準備好

正確的軟硬體環境。

簡單的bootloader的虛擬彙編碼,如其後的八個指令:

  • 0: 將P暫存器的值設為8
  • 1: 檢查紙帶({paper tape)讀取器,是否已經可以進行讀取
  • 2: 如果還不能進行讀取, 跳至1
  • 3: 從紙帶讀取器,讀取一byte至累加器
  • 4: 如為帶子結尾,跳至8
  • 5: 將暫存器的值,儲存至P暫存器中的數值所指定的地址
  • 6: 增加P暫存器的值
  • 7: 跳至1

但是隨著電腦作業系統越來越複雜,位於MBR的空間已經放不下引導作業系統的代碼,於是就有了第二階段的引導程式,而MBR中代碼的功能也從直接引導作業系統變成了引導第二階段的引導程式。


通常在一個GNU/Linux系統中選用GNU GRUB做為引導程式,例如Ubuntu就是用GRUB2。

GNU GRUB(簡稱“GRUB”)是一個來自GNU項目的啟動引導程式。GRUB是多啟動規範的實現,它允許使用者可以在電腦內同時擁有多個作業系統,並在電腦啟動時選擇希望啟動並執行作業系統。GRUB可用於選擇作業系統分區上的不同核心,也可用於向這些核心傳遞啟動參數。

GNU GRUB的前身為Grand Unified Bootloader。它主要用於類Unix系統;同大多Linux發行版一樣,GNU系統也採用GNU GRUB作為它的啟動器。Solaris從10 1/06版開始在x86系統上也採用GNU GRUB作為啟動器。

以上也就構成了一個簡單的作業系統。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.