Linux系統爭議——是Linux還是GNU/Linux?

2021-02-15 電手
大家可能都聽過,PC端三大系統:Windows ,Linux,macOS,關於「Linux系統」,你可以知道他是一個叫Linus,脾氣不怎麼好的人創建的。但是Linux系統這樣的的命名方式,到現在其實都是有爭議的,主要是集中在是否要加上GNU。那麼,今天我們就來看看什麼是GNU,Linux與GNU/Linux之爭又是什麼?

在提到GNU之前,不得不先來說說另外一個概念——自由軟體。「自由軟體」,正如字面上的「自由」二字,它尊重用戶的自由。一個軟體如果是自由軟體,這意味著用戶可以自由地運行,複製,分發,學習,修改並改進該軟體。所以,「自由軟體」是關乎自由的問題,與是否收費無關,軟體如何定價並不影響它是否被歸類為自由軟體。
英文Free Software翻譯而來,而 Free一詞既有自由,也有免費的意思。通常為了避免歧義,在使用英文時,會借用法語或西班牙語的「Libre Software」來指自由軟體。自由軟體對商業發展特別是硬體有巨大的貢獻,多數嵌入式設備系統廠商鑑於自身無需支付許可費用和實用性方面的原因考慮也會在自由軟體的基礎上開發作業系統。世界上絕大多數作業系統多少都會包含有自由軟體組件(例如BSD的TCP/IP協議棧廣泛被包括MacOS,Windows在內的專有商業作業系統使用)。隨著越來越多的自由軟體支持 Microsoft Windows 平臺,還有得益於 Android 平臺的普及,當前有上億的用戶在日常生活或工作中使用自由軟體。有了這些自由,軟體用戶,無論是個人還是集體,都可以完全掌控所運行的軟體,並決定這些程序如何為自己服務。如果一個軟體令用戶失去了這種控制權,那麼則稱它就是「非自由」的,或「專有」的程序。如果一個軟體被稱為自由軟體,根據https://www.gnu.org/philosophy/free-sw.en.html 的定義, 認為它需要四項基本特徵(自由度):

自由度0:無論用戶出於何種目的,必須可以按照用戶意願,自由地運行該軟體。
自由度1:用戶可以自由地學習並修改該軟體,以此來幫助用戶完成用戶自己的目的。所以,這就要求軟體的源碼是能查看到的。

自由度2:用戶可以自由地在網際網路分發該軟體。

自由度3:用戶可以自由地分發該軟體修改後的版本。,而他人也可以據此修改,分發再次修改的版本呢(免費,收費都行 )。

一個軟體只有滿足上述的幾個特徵,才可以被成為自由軟體。只有所有用戶使用的代碼都滿足了這四項基本自由,該程序才能被視作自由軟體。例如,有兩個程序,A程序運行的時候會自動調用B程序。發布A程序意味著用戶必須使用到B程序,那麼必須AB兩個程序都是自由的,A程序才算是自由的。如果通過修改A程序,使其不再依賴B程序,那麼僅僅以自由軟體的形式發布B程序即可。另外,「自由軟體」不等於「非商業軟體」。一個自由軟體必須允許商業用戶、商業開發和商業發布。商業開發自由軟體早就司空見慣了,這樣的自由軟體非常重要。你可能需要花錢購買自由軟體,也可能免費拿到。但是無論你如何獲得你的拷貝,作為用戶,你的四大自由都會被保證,你可以自由地運行,修改,發布甚至出售你拿到的自由軟體。假如獲得自由軟體拷貝的用戶遵守了自由軟體的許可證條款,那麼該自由軟體必須為用戶提供自由軟體的四項基本自由。在自由方面對用戶加以限制或者要求付費才能實踐這些自由和不賦予用戶自由沒有什麼兩樣,因此這樣的程序不是自由軟體。

「GNU」這個名字是「GNU's Not Unix」的遞歸首字母縮寫詞,它是一個類Unix作業系統,由多個應用程式、系統庫、開發工具乃至遊戲構成的程序集合。GNU的開發始於1984年1月,稱為GNU工程,在GNU工程下發布的軟體,就被稱為GNU軟體包,因此,也可以說GNU作業系統是包括GNU軟體包(專門由GNU工程發布的程序)和由第三方發布的自由軟體。簡而言之,GNU就是一個自由軟體,是一個作業系統。和Windows, MacOS不同之處,GNU作業系統對使用者是完全自由的,你完全可以自主的運行,修改,分發它。


正如在上面提到的,GNU是一個類Unix作業系統。在這類系統中,用於計算機資源分配和硬體管理的程序稱為「內核」。雖然GNU工程有官方內核程序Hurd,但是目前GNU系統所用的典型內核是Linux。因此就把這樣的組合叫做GNU/Linux作業系統。

GNU/Linux這一名稱是由自由軟體基金會(FSF)的創立者與GNU計劃的發起人理察·斯託曼所提出的。
GNU的開發者們,希望以該名字來作為此作業系統的正式名稱。他們認為,此作業系統,包括了GNU系統軟體包與Linux核心,使用GNU/Linux這個名稱,可以良好概括它的主要內容。而且,GNU項目原本就是以發展一個自由的作業系統為願景,但遲遲沒有完成。而Linux核心的出現剛好可以補足這個缺口。理察·斯託曼認為:「今天有數千萬個用戶,在使用的這個作業系統,他們可以自由的使用。但是他們並不清楚GNU,因為他們以為這個系統是Linux,只是是由一個學生「為了好玩」而發展出來的「。並且他強調,」Linux的成功,是基於GNU項目之上,所以,如果要為這樣的系統起個名,最適合的唯一選擇就是GNU。但我們不認為這是唯一正確答案。因為GNU計劃,過去不是,現在也不是,一個為了發展特定軟體包而創建的項目。……許多人為了這個系統中的自由軟體都做出了貢獻,而這些功勞都應該歸給他們。
在某種程度上,你要設個標準,省略掉許多其他次要貢獻者的名字。所以無論你設置的標準在哪,我們都不會提出抗議。……但是考慮到公平性,以及貢獻,不管標準是什麼,有個名字都是不應該被使用的,那就是「Linux」。把所有的功勞都歸給一個次要的貢獻者(Linux),但是忽略主要的貢獻者(GNU),這是不公平的。「

Linux內核本身並不是GNU計劃的一部分,GNU/Linux這個名稱在Linux社群中並沒有得到一致認同。一些發行版社群例如Debian採用了GNU/Linux這一名稱,但其他許多Linux社群中認為使用Linux這一名稱是更好的,Linux這個名字朗朗上口,且在公眾與媒體中更為通用。Linux內核項目的發起人Linus也偏好於使用Linux,但對於GNU/Linux這個名字並不強烈反感。

在接受記錄片《作業系統革命》(Revolution OS)訪談時,Linux也表達過對GNU/Linux這個名稱的想法,他認為這個稱呼是合理的……這就像是他覺得「RedHat Linux」,或「SuSE Linux」 或「Debian Linux」這些名稱是很好的,因為如果你真的做了一個你自己的Linux發行版時,你必須要幫它取個名稱,但是要把Linux全部通稱「GNU Linux」,我覺得這很荒謬。

使用Linux內核的GNU系統,並不只是一人的傑作,而是全世界無數的知名的,默默無聞的大神們,在推進Libre Software發展進程中的產物。 不管是叫Linux系統還是叫GNU/Linux系統,都不能抹殺這一點。

當小編第一次知道GNU/Linux這樣的叫法的時候,自己也沒有過多在意。

平常我們提到Linux系統的時候,其實也是說某個特定的發行版,比如說怎麼安裝Ubuntu系統,怎麼解決CentOS系統的XX問題,甚至連Linux都沒提到。

關於Linux以及GNU/Linux的看法,歡迎在下方留言 !

相關焦點

  • 一次搞定 Arm Linux 交叉編譯
    之所以整個流程變成了這個樣子,這是由嵌入式系統的特性決定的:一般嵌入式系統裡面使用的晶片性能都比較弱,而且絕大部分都不能像 X86 一樣運行 Windows/Ubuntu 桌面系統,即使能運行,性能也很弱,無法給你提供一個在開發板上寫代碼、編譯代碼的環境。所以我們還是離不開 X86 電腦強大高效的桌面環境進行軟體開發。
  • Linux DNS 查詢剖析(第一部分) | Linux 中國
    1) 其實並沒有名為「DNS 查詢」的系統調用下面文件給出了我主機上 ping 對應的 DNS 相關的系統調用:root@linuxdns1:~# strace -e trace=open -f ping -c1 google.comopen("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3open("/lib/x86_64-linux-gnu/libcap.so.2", O_RDONLY
  • GNU 核心實用程序簡介 | Linux 中國
    許多 Linux 系統管理員最基本和常用的工具主要包括在兩套實用程序中:GNU 核心實用程序(coreutils)和 util-linux。它們的基本功能允許系統管理員執行許多管理 Linux 系統的任務,包括管理和操作文本文件、目錄、數據流、存儲介質、進程控制、文件系統等等。
  • 真實記錄我入門學習Linux系統的經歷
    我始終覺得在大學裡最好的學習途徑還是跟老師多接觸,跟著老師做項目,有個過來人指導會順利不少。學習linux,就是在於實戰,理論是一回事,實戰才能體現理論的價值,更加透徹的理解理論的基本原理。也許,會有人告訴你還有別的Windows存在,但是Linux這扇窗肯定是最烏託邦、最有理想主義色彩的,尤其在這個無處不要向現實低頭的社會。
  • Linux下diff的操作詳解
    -4.19-rc3_lyn linux-4.19-rc3 > linux-4.19-rc3_lyn.patch這個是我經常使用的命令,用來比較生成我修改後的代碼的補丁包,最後用patch命令打補丁到需要使用的內核源碼中去2.在git中也會有diff可以查看兩次版本的差異git diff 04120e84525eca1c590d30b84ce7463b9e8a1497
  • ARM Linux根文件系統Root Filesystem的製作
    在成功製作了交叉編譯器之後,就可以從cross-tool的目錄裡把glibc取出來,假設cross-tool的路徑是/home/lxz/cross-tool,編譯出的編譯器叫做arm-linux-gnu-gcc,gcc版本3.4.5,glibc版本2.3.6,想要把glibc庫拷貝到/home/lxz/glibc,下面的操作還是用命令來說明。
  • Windows 終於開始兼容 Linux 系統-windows下的Linux子系統
    而微軟發布的操作內置Linux子系統,也是從Windows10開始。Windows內置linux子系統很長時間,也好幾個版本了,一直沒有實際測試過,今天閒來沒事,測試一下windows下的Linux子系統(WSL)。
  • Linux下33個常用的Find實例
    在當前目錄查找文件使用的名字在當前目錄下,查找所有名稱為linuxprobe.txt的文件# find . -name linuxprobe.txt./linuxprobe.txt2.在home目錄下查找文件查找home目錄下所有文件名為linuxprobe.txt的文件# find /home -name linuxprobe.txt/home/linuxprobe.txt3.
  • 在Linux右鍵菜單裡添加文件對比快捷方式
    如果Linux系統中的Beyond Compare快捷菜單未出現在文件或文件夾的右鍵菜單中,可參考本篇文章。1、首先,請確保安裝了最新版本的Beyond Compare。隨著Linux不斷更改其支持,Beyond Compare需要升級更新以匹配這些更改。
  • Linux系統入門命令學習經驗
    我大學的專業是電氣工程及其自動化,平時的課程也涉及不到linux,所以旁邊也沒有掌握linux的同學能夠一塊交流,通過自己這段時間的學習,我覺得有些學習總結可以簡單的介紹給大家,供大家在開始業餘學習linux的時候能夠作為一點參考。
  • 最小的Linux系統製作過程詳解
    linux系統的內核原代碼和編譯工具,利用busybox內建的強大功能,在一張軟盤上做的一個很小的linux系統.他具備一個linux系統的基本特徵,支持linux系統最常用的一百多個命令,支持多種文件系統,支持網絡等等,你可以把他當做一張linux起動盤和修復盤來用,你也可以把他當做一個靜態路由的路由器軟體,當然,你也可以把他當做一個linux玩具,向你的朋友炫耀 linux可以做的多麼小.我把他叫做
  • Linux替代Windows系統軟體大比拼
    最近一直在堅持使用linux,說堅持是因為還是向我說的那樣有很多的不便。  當然使用了ubuntu版後,對於我的本本來說很是不錯,驅動沒有需要我做什麼,就全部安裝到位。我想這是因為linux對於inter蕊片支持有關。估計採用其它蕊片的電腦就難說這樣順利。
  • Linux系統從入門到放棄?
    續上一個學期學完了的Linux基礎知識學習過程,這一學期的centos伺服器技術學完後,讓我對於Linux系統的學習又加深了許多。我知道了Linux只是個 內核。現在的Linux作業系統,都是用這麼一個內核,加上其它的應用程式構成的。
  • Deepin Linux系統中的安全軟體
    360安全衛士深度應用商店中,360安全衛士正式上線,具體在在linux系統的作用有多大,還不知道,平常使用linux系統,沒有安裝過安全軟體或者殺毒軟體,相對windows作業系統,linux的病毒問題相對來說少多了
  • Linux 系統內核的調試
    以試驗使用的kgdb補丁為例,linux內核的版本為linux-2.6.7,補丁版本為kgdb-2.2。刪除原來μcLinux目錄裡的linux-2.6.x(即那個linux-2.6.9-uc0),並將我們打好補丁的Linux內核目錄更名為linux-2.6.x。
  • 嵌入式ARM-Linux平臺上的編譯、配置和運行使用
    /configure配置編譯環境;執行make進行編譯export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabi-.執行make進行編譯,完成後執行make install,編譯好的openssl庫和頭文件等被安裝在目錄/usr/local/ssl下export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabi-.
  • 《Linux就該這麼學》與《鳥哥的linux私房菜》哪個更適合初學者?
    對於習慣用Windows系統的人來說,linux就是個另類,很多東西用不慣,更別提是熟練使用了。也就是說無論你使用Windows多好,對於linux系統來說你都是個小白。
  • 走進Linux(下)——arch linux的安裝教程
    New走進Linux(下)——arch linux的安裝教程一、為什麼選擇arch Linux?相比Debian/Ubuntu、SUSE、RedHat/Fedora 等其他發行版, Arch Linux 屬於輕量級選手,其簡單的設計讓它容易被輕鬆擴展和配置成為任何想要的系統類型。
  • linux pwn入門學習到放棄
    區別是ASLR是系統功能選項,PIE和PIC是編譯器功能選項。聯繫點在於在開啟ASLR之後,PIE才會生效。) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fdc0531f000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdc04f55000) /lib64/ld-linux-x86-64.so.2 (0x00007fdc05523000)
  • linux學習
    print/usr/bin/zipwhereis findwhereis -b find man find  #find的幫助手冊 J下 K上 空格下一頁 Q退出whatis unmae #apropos search #搜索一個文件,不知道用什麼命令文件系統架構