# GNU Project

## โครงการ GNU (GNU Project)

ได้ถูกริเริ่มจากนักวิจัยจาก M.I.T ชื่อนาย Richard Matthew Stallman ซึ่งถูกเรียกขานว่า RMS เนื่องจากระบบปฏิบัติการ UNIX ไม่ได้ฟรีอีกต่อไปแล้ว โครงการ GNU นี้จึงได้เริ่มต้นขึ้นตั้งแต่เดือนกันยายน ปี ค.ศ. 1984 โดยวัตถุประสงค์หลักของโครงการนี้คือการพยายามเริ่มต้นสร้างแกนหลักของระบบปฏิบัติการ (Core OS) หรือเคอร์เนล (Kernel) โดยเรียกกันว่า HURD รวมถึงการสร้างกลุ่มโปรแกรมเครื่องมือต่างๆ เช่น C compiler (gcc), make (GNU make), Emacs, C library (glibc), และ coreutils (เช่นคำสั่ง ls, cp เป็นต้น) ใหม่ทั้งหมดเพื่อให้ทุกคนสามารถนำไปใช้ได้ฟรีเพื่อทดแทนระบบปฏิบัติการ UNIX แต่อย่างไรก็ตามการพัฒนาตัว HURD ก็ยังไม่เป็นไปตามแผนจำเป็นต้องหยุดกลางคัน นอกจากนั้น Stallman ได้ก่อตั้งองค์กรซอฟท์แวร์เสรี (Free Software Foundation) ซึ่งเป็นองค์กรที่ทำหน้าที่ให้การสนับสนุนการพัฒนาซอฟท์แวร์เสรี ที่มีบทบาทมากในปัจจุบันนี้

ระบบปฏิบัติการที่มีบทบาทในการกระตุ้นวงการพัฒนา ซึ่งได้รับอิทธิพลมาจากโครงการ GNU คือระบบปฏิบัติการ MINIX ย่อมาจาก “Minimal UNIX” ภายใต้พื้นฐานสถาปัตยกรรม Microkernel ซึ่งถูกพัฒนาโดยนาย Andrew S. Tanenbaum ในปี ค.ศ. 1987 และเขาเองก็ได้เขียนหนังสือชื่อว่า “Operating Systems: Design and Implementation” ร่วมกับนาย Albert Woodhull เพื่อต้องการที่จะเผยแพร่แนวทางการออกแบบและพัฒนาระบบปฏิบัติการให้กับวงการด้านนี้

{% hint style="info" %}
The GNU Core Utilities
{% endhint %}

| [**arch**](https://www.maizure.org/projects/decoded-gnu-coreutils/arch.html)       | [**base64**](https://www.maizure.org/projects/decoded-gnu-coreutils/base64.html)     | [**basename**](https://www.maizure.org/projects/decoded-gnu-coreutils/basename.html) | [**cat**](https://www.maizure.org/projects/decoded-gnu-coreutils/cat.html)             | [**chcon**](https://www.maizure.org/projects/decoded-gnu-coreutils/chcon.html)       |
| ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| [**chgrp**](https://www.maizure.org/projects/decoded-gnu-coreutils/chgrp.html)     | [**chmod**](https://www.maizure.org/projects/decoded-gnu-coreutils/chmod.html)       | [**chown**](https://www.maizure.org/projects/decoded-gnu-coreutils/chown.html)       | [**chroot**](https://www.maizure.org/projects/decoded-gnu-coreutils/chroot.html)       | [**cksum**](https://www.maizure.org/projects/decoded-gnu-coreutils/cksum.html)       |
| [**comm**](https://www.maizure.org/projects/decoded-gnu-coreutils/comm.html)       | [**cp**](https://www.maizure.org/projects/decoded-gnu-coreutils/cp.html)             | [**csplit**](https://www.maizure.org/projects/decoded-gnu-coreutils/csplit.html)     | [**cut**](https://www.maizure.org/projects/decoded-gnu-coreutils/cut.html)             | [**date**](https://www.maizure.org/projects/decoded-gnu-coreutils/date.html)         |
| [**dd**](https://www.maizure.org/projects/decoded-gnu-coreutils/dd.html)           | [**df**](https://www.maizure.org/projects/decoded-gnu-coreutils/df.html)             | [**dir**](https://www.maizure.org/projects/decoded-gnu-coreutils/dir.html)           | [**dircolors**](https://www.maizure.org/projects/decoded-gnu-coreutils/dircolors.html) | [**dirname**](https://www.maizure.org/projects/decoded-gnu-coreutils/dirname.html)   |
| [**du**](https://www.maizure.org/projects/decoded-gnu-coreutils/du.html)           | [**echo**](https://www.maizure.org/projects/decoded-gnu-coreutils/echo.html)         | [**env**](https://www.maizure.org/projects/decoded-gnu-coreutils/env.html)           | [**expand**](https://www.maizure.org/projects/decoded-gnu-coreutils/expand.html)       | [**expr**](https://www.maizure.org/projects/decoded-gnu-coreutils/expr.html)         |
| [**factor**](https://www.maizure.org/projects/decoded-gnu-coreutils/factor.html)   | [**false**](https://www.maizure.org/projects/decoded-gnu-coreutils/false.html)       | [**fmt**](https://www.maizure.org/projects/decoded-gnu-coreutils/fmt.html)           | [**fold**](https://www.maizure.org/projects/decoded-gnu-coreutils/fold.html)           | [**groups**](https://www.maizure.org/projects/decoded-gnu-coreutils/groups.html)     |
| [**head**](https://www.maizure.org/projects/decoded-gnu-coreutils/head.html)       | [**hostid**](https://www.maizure.org/projects/decoded-gnu-coreutils/hostid.html)     | [**hostname**](https://www.maizure.org/projects/decoded-gnu-coreutils/hostname.html) | [**id**](https://www.maizure.org/projects/decoded-gnu-coreutils/id.html)               | [**install**](https://www.maizure.org/projects/decoded-gnu-coreutils/install.html)   |
| [**join**](https://www.maizure.org/projects/decoded-gnu-coreutils/join.html)       | [**kill**](https://www.maizure.org/projects/decoded-gnu-coreutils/kill.html)         | [**link**](https://www.maizure.org/projects/decoded-gnu-coreutils/link.html)         | [**ln**](https://www.maizure.org/projects/decoded-gnu-coreutils/ln.html)               | [**logname**](https://www.maizure.org/projects/decoded-gnu-coreutils/logname.html)   |
| [**ls**](https://www.maizure.org/projects/decoded-gnu-coreutils/ls.html)           | [**md5sum**](https://www.maizure.org/projects/decoded-gnu-coreutils/md5sum.html)     | [**mkdir**](https://www.maizure.org/projects/decoded-gnu-coreutils/mkdir.html)       | [**mkfifo**](https://www.maizure.org/projects/decoded-gnu-coreutils/mkfifo.html)       | [**mknod**](https://www.maizure.org/projects/decoded-gnu-coreutils/mknod.html)       |
| [**mktemp**](https://www.maizure.org/projects/decoded-gnu-coreutils/mktemp.html)   | [**mv**](https://www.maizure.org/projects/decoded-gnu-coreutils/mv.html)             | [**nice**](https://www.maizure.org/projects/decoded-gnu-coreutils/nice.html)         | [**nl**](https://www.maizure.org/projects/decoded-gnu-coreutils/nl.html)               | [**nohup**](https://www.maizure.org/projects/decoded-gnu-coreutils/nohup.html)       |
| [**nproc**](https://www.maizure.org/projects/decoded-gnu-coreutils/nproc.html)     | [**numfmt**](https://www.maizure.org/projects/decoded-gnu-coreutils/numfmt.html)     | [**od**](https://www.maizure.org/projects/decoded-gnu-coreutils/od.html)             | [**paste**](https://www.maizure.org/projects/decoded-gnu-coreutils/paste.html)         | [**pathchk**](https://www.maizure.org/projects/decoded-gnu-coreutils/pathchk.html)   |
| [**pinky**](https://www.maizure.org/projects/decoded-gnu-coreutils/pinky.html)     | [**pr**](https://www.maizure.org/projects/decoded-gnu-coreutils/pr.html)             | [**printenv**](https://www.maizure.org/projects/decoded-gnu-coreutils/printenv.html) | [**printf**](https://www.maizure.org/projects/decoded-gnu-coreutils/printf.html)       | [**ptx**](https://www.maizure.org/projects/decoded-gnu-coreutils/ptx.html)           |
| [**pwd**](https://www.maizure.org/projects/decoded-gnu-coreutils/pwd.html)         | [**readlink**](https://www.maizure.org/projects/decoded-gnu-coreutils/readlink.html) | [**realpath**](https://www.maizure.org/projects/decoded-gnu-coreutils/realpath.html) | [**rm**](https://www.maizure.org/projects/decoded-gnu-coreutils/rm.html)               | [**rmdir**](https://www.maizure.org/projects/decoded-gnu-coreutils/rmdir.html)       |
| [**runcon**](https://www.maizure.org/projects/decoded-gnu-coreutils/runcon.html)   | [**seq**](https://www.maizure.org/projects/decoded-gnu-coreutils/seq.html)           | [**shred**](https://www.maizure.org/projects/decoded-gnu-coreutils/shred.html)       | [**shuf**](https://www.maizure.org/projects/decoded-gnu-coreutils/shuf.html)           | [**sleep**](https://www.maizure.org/projects/decoded-gnu-coreutils/sleep.html)       |
| [**sort**](https://www.maizure.org/projects/decoded-gnu-coreutils/sort.html)       | [**split**](https://www.maizure.org/projects/decoded-gnu-coreutils/split.html)       | [**stat**](https://www.maizure.org/projects/decoded-gnu-coreutils/stat.html)         | [**stdbuf**](https://www.maizure.org/projects/decoded-gnu-coreutils/stdbuf.html)       | [**stty**](https://www.maizure.org/projects/decoded-gnu-coreutils/stty.html)         |
| [**sum**](https://www.maizure.org/projects/decoded-gnu-coreutils/sum.html)         | [**tac**](https://www.maizure.org/projects/decoded-gnu-coreutils/tac.html)           | [**tail**](https://www.maizure.org/projects/decoded-gnu-coreutils/tail.html)         | [**tee**](https://www.maizure.org/projects/decoded-gnu-coreutils/tee.html)             | [**test**](https://www.maizure.org/projects/decoded-gnu-coreutils/test.html)         |
| [**timeout**](https://www.maizure.org/projects/decoded-gnu-coreutils/timeout.html) | [**touch**](https://www.maizure.org/projects/decoded-gnu-coreutils/touch.html)       | [**tr**](https://www.maizure.org/projects/decoded-gnu-coreutils/tr.html)             | [**true**](https://www.maizure.org/projects/decoded-gnu-coreutils/true.html)           | [**truncate**](https://www.maizure.org/projects/decoded-gnu-coreutils/truncate.html) |
| [**tsort**](https://www.maizure.org/projects/decoded-gnu-coreutils/tsort.html)     | [**tty**](https://www.maizure.org/projects/decoded-gnu-coreutils/tty.html)           | [**uname**](https://www.maizure.org/projects/decoded-gnu-coreutils/uname.html)       | [**unexpand**](https://www.maizure.org/projects/decoded-gnu-coreutils/unexpand.html)   | [**uniq**](https://www.maizure.org/projects/decoded-gnu-coreutils/uniq.html)         |
| [**unlink**](https://www.maizure.org/projects/decoded-gnu-coreutils/unlink.html)   | [**uptime**](https://www.maizure.org/projects/decoded-gnu-coreutils/uptime.html)     | [**users**](https://www.maizure.org/projects/decoded-gnu-coreutils/users.html)       | [**vdir**](https://www.maizure.org/projects/decoded-gnu-coreutils/vdir.html)           | [**wc**](https://www.maizure.org/projects/decoded-gnu-coreutils/wc.html)             |
| [**who**](https://www.maizure.org/projects/decoded-gnu-coreutils/who.html)         | [**whoami**](https://www.maizure.org/projects/decoded-gnu-coreutils/whoami.html)     | [**yes**](https://www.maizure.org/projects/decoded-gnu-coreutils/yes.html)           |                                                                                        |                                                                                      |

## กำเนิด Linux

จนกระทั่งปี ค.ศ. 1991 นักศึกษาสาขาวิทยาการคอมพิวเตอร์ มหาวิทยาลัย Helsinki ประเทศฟินแลนด์ ชื่อนาย Linus Torvalds ได้ซื้อเครื่องคอมพิวเตอร์ชนิดตั้งโต๊ะของบริษัท IBM รุ่น Intel 80386 เพื่อใช้เป็นเครื่องฯสำหรับการล๊อกอินเพื่อเข้าไปใช้งานะรบบในห้องแล๊ปของมหาวิทยาลัย ซึ่งในขณะนั้นระบบปฏิบัติการ MS-DOS และ MINIX จะเป็นระบบปฏิบัติการหลักในเครื่องคอมพิวเตอร์ทั่วไป เขาจึงได้มีแนวคิดที่จะสร้างระบบปฏิบัติการแบบเปิดและฟรี โดยมีพื้นฐานคล้ายระบบปฏิบัติการ UNIX (UNIX-like) ในช่วงแรกของการพัฒนาเขาได้พยายามพัฒนาเทอร์มินัล (Terminal Emulator) บนตัวระบบปฏิบัติการ MINIX แต่ก็ติดปัญหาทางด้านเทคนิคอยู่หลายอย่าง เขาจึงได้ตัดสินใจพัฒนาขึ้นเองใหม่ โดยได้ใช้เครื่องมือจากโครงการ GNU ทั้งหมด ไม่ว่าจะเป็น C library, gcc, binutils, fileutils, make, emacs เป็นต้น รวมทั้งการพัฒนา Kernel โดยพยายามพัฒนาโปรแกรมทั้งหมดตามมาตราฐาน POSIX เช่นเดียวกันระบบปฏิบัติการ UNIX จนในที่สุดก็สามารถออกมาได้สำเร็จในชื่อที่ตั้งขึ้นมาว่า “Freax” ซึ่งเป็นการผสมคำจากคำทั้งสามคำคือ Free, Freak และ X และได้เปลี่ยนมาเป็น “Linux” ตามชื่อตัวเขาเอง ทาง Linus Torvalds ก็ได้เปิดเผยโค้ดโปรแกรมของระบบปฏิบัติการทั้งหมดสู่สาธารณะ เพื่อให้นักพัฒนาทั่วโลกช่วยกันปรับปรุงแก้ไข โดยได้ทำการส่งข้อความผ่านกลุ่มผู้ใช้ใน MINIX ด้วยข้อความดังนี้ “*I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones.*”

โดยรุ่นของระบบปฏิบัติการลีนุกซ์ ในเลข Linux 0.01 ยังค่อนข้างมีข้อจำกัดอยู่มาก คือจะสามารถถูกใช้ได้กับเครื่อง Intel 80386 เท่านั้น โดยภายในไฟล์ที่ได้เผยแพร่ออกไปจะประกอบไปด้วย 4 ไฟล์ที่ระบุรายละเอียดดังนี้

1. linux-0.01.tar.Z - sources to the kernel
2. bash.Z - compressed bash binary if you want to test it
3. update.Z - compressed update binary
4. RELNOTES-0.01

> [*http://www.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES-0.01*](http://www.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES-0.01)

ในที่สุดการเผยแพร่ในครั้งนี้ก็ได้เกิดการปฏิวัติโดยไม่คาดฝันเพราะมีนักพัฒนาจากทั่วทุกสารทิศจำนวนไม่น้อยที่ได้นำระบบปฏิบัติการนี้ไปพัฒนาจนเกิดความพยายามร่วมกันในการพัฒนาระบบปฏิบัติการลีนุกซ์อย่างจริงจังเป็นประวัติการณ์ แม้ว่าตัวนาย Linus Torvalds เองได้ถูกนาย Andrew Tanenbaum ผู้สร้าง MINIX ดูถูกไว้ว่าระบบปฏิบัติการลีนุกซ์จะล้าสมัยและจบลงก่อนปี ค.ศ. 1992 แต่ในที่สุดก็ได้พิสูจน์ว่าระบบปฏิบัติการลีนุกซ์ของเขานั้นสามารถยืนหยัดมาได้จนถึงวันนี้ ด้วยจุดแข็งของ Linux Kernel ของนาย Linus Torvalds และ GNU applications ของนาย Richard Stallman จนนิยมเรียกว่า GNU/Linux (*อ่านว่า กะ-นู-สแลส-ลีนุกซ์*) ซึ่งนาย Linus Torvalds ก็ยังคงเป็นผู้ควบคุมจัดการ (Supervisor) การพัฒนา Linux Kernel และดูแลองค์กร Linux Foundation ต่อไป


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dev.tesa.or.th/tesa-developer/tesa-technical-contents/linux-os/zero-to-linux-hero/anatomy-of-linux-kernel/gnu-project.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
