DEV Community

Gophernment
Gophernment

Posted on

GNU — จุดเริ่มต้นของ Linux ที่หลายคนไม่เคยรู้

เวลาเราเรียก Linux — เรามักนึกถึงระบบปฏิบัติการที่รันเซิร์ฟเวอร์ 99% ของโลก รัน Android รัน Raspberry Pi แต่สิ่งที่หลายคนไม่รู้คือ Linux ไม่ใช่ "ระบบปฏิบัติการที่สมบูรณ์" ตั้งแต่แรก มันเป็นแค่ kernel — หัวใจที่คอยคุยกับฮาร์ดแวร์

ส่วน shell, compiler, text editor, core utilities — ทั้งหมดนั่นมาจาก โครงการ GNU

เรื่องราวของ GNU และ Linux มันเริ่มจากการที่เครื่องพิมพ์เครื่องหนึ่ง... พัง

📌 ออกเสียงอย่างไร: GNU อ่านว่า "กะ-นู" (hard g, พยางค์เดียว) — GNU's Not Unix

เรื่องเล่าจากเครื่องพิมพ์

ปี 1980 Richard Stallman ทำงานที่ MIT AI Lab เครื่องพิมพ์ Xerox ในห้องแล็บ jam กระดาษบ่อยมาก เขาเลยอยากแก้ซอฟต์แวร์ให้มันแจ้งเตือนตอน jam แต่ Xerox ไม่ยอมให้ source code

สำหรับคนยุค 2026 นี่คือเรื่องปกติ — บริษัทไม่ให้ source code ก็หาอันอื่นสิ

แต่สำหรับ Stallman และวัฒนธรรม hacker ใน MIT AI Lab ยุค 1970s — นี่คือการทรยศ

เพื่อนบ้าน hack รั้วบ้านคุณ และคุณไม่มีสิทธิ์แม้แต่จะรู้ว่ารั้วมันสร้างยังไง

Stallman เขียนไว้ในภายหลังว่า:

"ผมบอกตัวเองไม่ได้ว่า non-disclosure agreement มันไม่มีพิษมีภัย"

กำเนิด GNU

27 กันยายน 1983 — Stallman โพสต์ประกาศโครงการ GNU บน Usenet ภายใต้หัวข้อ "new Unix implementation"

"ผมเชื่อว่ากฎทอง (golden rule) กำหนดว่า ถ้าผมชอบโปรแกรมใด ผมต้องแบ่งปันมันกับคนอื่นที่ชอบมันด้วย ผมไม่สามารถเซ็นสัญญาไม่เปิดเผยข้อมูล (NDA) หรือสัญญาอนุญาตซอฟต์แวร์แบบปิด ด้วยจิตสำนึกที่ดีได้"

— Richard Stallman, GNU Initial Announcement, 27 ก.ย. 1983

เป้าหมาย: สร้างระบบปฏิบัติการแบบ Unix ที่ ทุกคนมีอิสระ ในการใช้ แก้ไข และแชร์

ฟรี ไม่ได้แปลว่า gratis (ของฟรี)
ฟรี แปลว่า libre (เสรีภาพ)
Enter fullscreen mode Exit fullscreen mode

— Free Software Foundation

Stallman เริ่มเขียนทีละ component:

  • GNU Emacs — text editor ในตำนาน (1985)
  • GCC — GNU C Compiler (1987)
  • glibc — C library (1988)
  • Bash — shell ที่เราใช้กันมาจนถึงทุกวันนี้ (1989)
  • Coreutils, binutils, gdb... ไล่เรียงไปเรื่อย ๆ

ภายในปี 1990 — เกือบทั้งระบบปฏิบัติการพร้อมแล้ว ยกเว้น kernel

Hurd — kernel ที่ไม่มีวันเสร็จ

kernel ที่ GNU เลือกใช้คือ GNU Hurd — ออกแบบด้วยสถาปัตยกรรม microkernel บน Mach (CMU) ที่ทะเยอทะยานเกินยุค

ปัญหาคือ:

  • รอ Mach เป็น free software — CMU ล่าช้าในการปล่อย source code เพราะฝ่ายกฎหมาย
  • Multithreaded servers สื่อสารด้วย IPC — "very hard to debug" (คำพูดของ Stallman เอง)
  • Perfect is the enemy of good — ดีไซน์ซ้ำไปซ้ำมาเพื่อความ "สมบูรณ์แบบ" ทางทฤษฎี
  • Hurd 0.1 ออกปี 1996 — 6 ปีหลังจากเริ่มพัฒนา
  • Hurd 0.9 ออกธันวาคม 2016 — ล่าสุด และไม่เคยถึง 1.0

Stallman พูดตรง ๆ:

"GNU Hurd ไม่เหมาะสำหรับ production use และเราไม่รู้ว่ามันจะเหมาะเมื่อไหร่"

เด็กฟินแลนด์กับ kernel ของเขา

25 สิงหาคม 1991 — Linus Torvalds นักศึกษาปี 2 มหาวิทยาลัย Helsinki (อายุ 21 ปี) โพสต์บน Usenet group comp.os.minix:

Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.

I've currently ported bash(1.08) and gcc(1.40), and things seem to work.

สังเกตว่า Linus เองก็พอร์ต bash และ gcc — GNU tools — มาตั้งแต่วันแรก

17 กันยายน 1991 — Linux 0.01 ออกสู่สาธารณะ (คนที่ตั้งชื่อว่า "Linux" คือ Ari Lemmke ผู้ดูแล ftp.funet.fi — Linus อยากให้ชื่อ "Freax" แต่ Lemmke ไม่ชอบ)

Linus เขียนใน release notes ของ 0.01:

"Sadly, a kernel by itself gets you nowhere… Most of the tools used with linux are GNU software and are under the GNU copyleft."

"น่าเศร้าที่ kernel อย่างเดียวมันไปไหนไม่ได้... เครื่องมือส่วนใหญ่ที่ใช้กับ linux คือซอฟต์แวร์ GNU"

ทำไม Linux ถึงสำเร็จ

ทั้งที่ Hurd มีคนเก่งกว่า มี philosophy ล้ำกว่า ทำไม Linux ถึงชนะ?

GNU Hurd Linux
สถาปัตยกรรม Microkernel Monolithic
ออกแบบโดย นักทฤษฎี OS "ค่าเทอมถูกกว่า Sun"
ปรัชญา Perfect from day 1 Release early, release often
ทีม อาสาสมัคร ชุมชน (Git แจกตั้งแต่ 2005)

"Release early, release often" — หลักการที่ Linus สอนโลก open source โดยไม่ตั้งใจ

Linux 0.01 (ก.ย. 1991) — ~10,000 บรรทัด
Linux 0.12 (ก.พ. 1992) — เปลี่ยนไปใช้ GPL — นี่คือจุดเปลี่ยนสำคัญ
Linux 1.0 (มี.ค. 1994) — 176,250 บรรทัด
Linux 6.x (2024) — เกิน 30 ล้านบรรทัด

GNU + Linux = ?

เมื่อ Linux ถือกำเนิด มันขาด userspace tools — shell, compiler, basic utilities

GNU มีของทุกอย่าง — GCC compiler, Bash shell, coreutils

Linux + GNU tools = ระบบปฏิบัติการที่สมบูรณ์ ครั้งแรกที่โลกมี free Unix ทั้งระบบ

"It is due to Linux that we can actually run a version of the GNU system today."

— Richard Stallman

MCC Interim Linux (กุมภาพันธ์ 1992) — ผลงานของ Owen Le Blanc จาก Manchester Computing Centre — คือ distro แรกที่รวม Linux kernel กับ GNU userspace เข้าด้วยกัน ตามด้วย TAMU Linux และ SLS (Softlanding Linux System) ในสิงหาคม 1992

SLS เป็น distro แรกที่คนใช้กันเยอะ... แต่ package management ของมันพังไม่เป็นท่า จนทำให้ Ian Murdock วัย 20 ปี ประกาศบน Usenet ในเดือนสิงหาคม 1993 ว่าจะสร้าง distro ใหม่ที่ "maintained openly, in the spirit of GNU" — distro นั้นคือ Debian

ตามมาด้วย Slackware (กรกฎาคม 1993) ที่พัฒนาโดย Patrick Volkerding — เรียบง่าย ไม่มี dependency resolution แต่ stable จนกลายเป็น distro ที่เก่าแก่ที่สุดที่ยัง maintain อยู่จนถึงทุกวันนี้

เมื่อ Debian เปลี่ยนชื่อเป็น "Debian GNU/Linux" ในต้นปี 1994 ตามคำขอของ Stallman — การถกเถียงเรื่องชื่อก็เริ่มต้นขึ้น

GNU/Linux — การถกเถียงที่ยังไม่จบ

Stallman ยืนกราน: เรียกมันว่า "GNU/Linux" เพราะ:

  • GNU project เริ่มตั้งแต่ 1983 — 7-8 ปีก่อน Linux
  • Stallman อ้างอิงตัวเลขจากงานวิจัยภายในของ Red Hat (2001) และ gNewSense (2008) ว่า ใน distro หนึ่ง ๆ: โค้ด GNU ≈ 15-28%, โค้ด Linux kernel ≈ 1.5-3% (ตัวเลขนี้เป็นที่ถกเถียงในชุมชน — วัดยังไงให้นับ "หน่วย" ของโค้ดอย่างเที่ยงตรง)
  • ถ้าไม่มี GNU — Linus ต้องเขียน compiler, shell, utilities เองทั้งหมด

Linus ตอบกลับ:

"It doesn't really matter what people call Linux, as long as credit is given where credit is due."
— comp.os.linux.misc, 1996

และในหนังสารคดี Revolution OS (2001):

"Calling Linux in general 'GNU Linux' I think is just ridiculous."

แต่ Linus ก็ไม่ได้ดูถูก GNU — ในหนังสืออัตชีวประวัติ Just for Fun (2001) เขาเขียนว่า:

"Richard Stallman is the God of Free Software."

"Stallman, who deserves a monument in his honor for giving birth to the GPL…"

มรดกที่เรายังใช้อยู่ทุกวันนี้

ลองเปิด terminal แล้วพิมพ์:

$ ls --version | head -1
ls (GNU coreutils) 9.x

$ gcc --version | head -1
gcc (GCC) 14.x

$ bash --version | head -1
GNU bash, version 5.x
Enter fullscreen mode Exit fullscreen mode

GNU คือวิญญาณของ Linux — kernel คือหัวใจ แต่ shell, compiler, utilities ที่เราใช้ทุกวันนี้ คือ GNU

ถ้าไม่มีโครงการ GNU: Linus ต้องเขียนทุกอย่างเองตั้งแต่ compiler, linker, shell... และ kernel "งานอดิเรก" ของเขาคงไม่รอด

และถ้าไม่มี Linux: GNU มีเกือบทุกอย่างยกเว้น kernel ที่รันได้จริง — Hurd ก็ยังเป็น prototype มาจนถึงทุกวันนี้

สองโครงการ — หนึ่งปรัชญา หนึ่ง pragmatic — มาบรรจบกันในเวลาที่เหมาะสมพอดี


สำหรับคนที่อยากอ่านเพิ่ม


📅 สิงหาคม 2026 | ⚠️ ตรวจสอบข้อมูล ณ วันที่เขียน

Top comments (0)