Linux Fundamentals
What is Linux
อธิบายระบบปฏิบัติการ Linux สถาปัตยกรรม Kernel และ Distribution รวมถึงเหตุผลที่วงการ Server และ Cloud นิยมใช้งาน เพื่อปูพื้นฐานก่อนเริ่มสั่งการผ่าน Command Line
1. ที่มาและความต้องการ: ทำไมงาน Server และ Cloud จึงต้องพึ่งพา Linux
เมื่อก้าวเข้าสู่งานสายพัฒนาซอฟต์แวร์ Cloud หรือ DevOps หลายคนคุ้นเคยกับระบบปฏิบัติการที่มีหน้าจอคลิกเมาส์ (GUI) อย่าง Windows หรือ macOS แต่เมื่อต้องดูแลเซิร์ฟเวอร์จริง คุณจะพบว่าคอมพิวเตอร์เซิร์ฟเวอร์นับล้านเครื่องทั่วโลกทำงานอยู่บน Linux โดยไม่มีหน้าต่างกราฟิกให้คลิกเลยแม้แต่น้อย เซิร์ฟเวอร์ต้องการความเสถียร ประสิทธิภาพสูง ไม่กินทรัพยากรเครื่องไปกับหน้าจอแสดงผล และต้องการระบบที่สามารถสั่งการทำงานอัตโนมัติ (Automation) ผ่านข้อความได้อย่างแม่นยำ การเข้าใจว่า Linux คืออะไรและมีกลไกอย่างไร จึงเป็นบันไดขั้นแรกที่จำเป็นก่อนเริ่มพิมพ์คำสั่งใดๆ
- Linux เป็นโครงสร้างพื้นฐานเบื้องหลังของเว็บเซิร์ฟเวอร์, Cloud, Docker container, และสมาร์ตโฟนระบบ Android
- ระบบถูกออกแบบให้ทำงานต่อเนื่องได้เป็นปีๆ โดยไม่ต้องรีสตาร์ตเครื่องบ่อยครั้ง
- การจัดการระบบทำผ่านตัวอักษรบน Command Line ช่วยให้เขียนสคริปต์สั่งงานอัตโนมัติได้อย่างสมบูรณ์
2. แบบจำลองความคิด: สถาปัตยกรรมและการแบ่งชั้นของระบบ Linux
ในระบบคอมพิวเตอร์ Linux การทำงานถูกแบ่งออกเป็นระดับชั้นที่ประสานงานกันอย่างชัดเจน: 1. **Hardware (ฮาร์ดแวร์):** ชิ้นส่วนกายภาพ เช่น CPU, RAM, Hard Disk, และการ์ดเครือข่าย 2. **Kernel (เคอร์เนล):** แกนกลางของระบบปฏิบัติการ ทำหน้าที่จัดสรรทรัพยากรฮาร์ดแวร์และดูแลความปลอดภัย 3. **Shell และ Utilities (เชลล์และโปรแกรมระบบ):** ด่านหน้ารับคำสั่งจากผู้ใช้เพื่อแปลความหมายและประสานงานกับเคอร์เนล 4. **Applications (แอปพลิเคชัน):** โปรแกรมระดับผู้ใช้ เช่น เว็บเซิร์ฟเวอร์, ฐานข้อมูล, หรือเครื่องมือพัฒนา บางครั้งมีการเปรียบเทียบโครงสร้างนี้กับ "ผังการบริหารเมือง" โดย Kernel ทำหน้าที่เหมือนฝ่ายบริหารโครงสร้างพื้นฐานกลางที่ดูแลน้ำ ไฟฟ้า และถนน (CPU, RAM, ดิสก์) และ Application ทำหน้าที่เหมือนร้านค้าที่มาขออนุญาตใช้ทรัพยากรส่วนกลาง *(เปรียบเทียบได้แค่บทบาทการเป็นตัวกลางจัดสรรทรัพยากรส่วนกลาง ไม่ครอบคลุมถึงนโยบาย สังคม หรือมิติอื่นของเมือง)*
ลำดับชั้นการทำงาน: ผู้ใช้สั่งงานผ่าน Shell จากนั้น Kernel จะเป็นตัวกลางจัดสรรทรัพยากรของเครื่อง Hardware
ลองทำนายบทบาทการทำงาน
หากโปรแกรมเว็บเซิร์ฟเวอร์ต้องการเขียนไฟล์บันทึก (log) ลงในฮาร์ดดิสก์ โปรแกรมจะสั่งการฮาร์ดแวร์โดยตรง หรือต้องส่งคำขอผ่านส่วนประกอบใด? (เฉลย: ต้องส่งคำขอผ่าน Kernel ผ่านระบบ System Calls เพราะ Kernel มีหน้าที่ควบคุมสิทธิ์และความปลอดภัยในการเข้าถึงฮาร์ดแวร์ ป้องกันไม่ให้โปรแกรมเข้าถึงข้อมูลของโปรแกรมอื่นโดยพลการ)
3. กายวิภาคและองค์ประกอบ: แยกแยะ Kernel, Distribution และ Userland
คำว่า "Linux" ในความหมายทางเทคนิคดั้งเดิมคือชื่อของ **Kernel** ที่ถูกสร้างขึ้นโดย Linus Torvalds ในปี 1991 เพียงอย่างเดียว ลำพังเคอร์เนลไม่สามารถเปิดใช้งานเป็นระบบปฏิบัติการที่สมบูรณ์ได้หากไม่มีเครื่องมือและโปรแกรมระบบแวดล้อม (Userland) จึงเกิดสิ่งที่เรียกว่า **Linux Distribution (หรือเรียกย่อว่า Distro)** ซึ่งเป็นการนำ Linux Kernel มารวมกับชุดโปรแกรมอำนวยความสะดวก (GNU utilities), ตัวจัดการแพ็กเกจ (Package Manager), และการตั้งค่าระบบ กลายเป็นชุดระบบปฏิบัติการสำเร็จรูปพร้อมใช้งาน
| องค์ประกอบ | บทบาทหน้าที่สำคัญ | ตัวอย่างในระบบ |
|---|---|---|
| Kernel | แกนกลางจัดการ CPU, Memory, Disk และสื่อสารกับอุปกรณ์ | Linux Kernel 6.x |
| Distribution (Distro) | ชุดระบบปฏิบัติการสำเร็จรูป รวมเคอร์เนล เครื่องมือ และโปรแกรมติดตั้ง | Ubuntu, Debian, Fedora, RHEL, Alpine |
| Shell | โปรแกรมรับคำสั่งจากผู้ใช้ แปลความหมาย และส่งต่อให้เคอร์เนล | Bash, Zsh, Sh |
| Package Manager | เครื่องมือจัดการติดตั้ง อัปเดต และถอนการติดตั้งโปรแกรม | APT (Ubuntu/Debian), DNF (Fedora), APK (Alpine) |
4. พื้นผิวเปรียบเทียบ: ข้อแตกต่างสำคัญระหว่าง Kernel, Distro และ Terminal
ความสับสนอันดับหนึ่งของผู้เริ่มต้นคือการใช้คำศัพท์เหล่านี้ปะปนกัน ตารางกฎต่อไปนี้คือหลักยึดที่ช่วยให้คุณสื่อสารและแก้ปัญหาในสายงานไอทีได้อย่างแม่นยำ:
กฎเหล็กและความแตกต่างของระบบ Linux ที่ต้องจำให้ขึ้นใจ
Linux คือ Kernel ไม่ใช่ระบบปฏิบัติการทั้งชุดโดยลำพัง
Linux รับผิดชอบการบริหารฮาร์ดแวร์ แต่ต้องอาศัยโปรแกรมระบบภายนอกร่วมด้วยจึงจะทำงานเป็นระบบสมบูรณ์
แต่ละ Distribution มีระบบจัดการแพ็กเกจต่างกัน
แม้ทุก Distro จะรันบน Linux Kernel เหมือนกัน แต่วิธีติดตั้งโปรแกรมอาจต่างกัน เช่น Ubuntu ใช้คำสั่ง apt ส่วน Fedora ใช้ dnf
Terminal และ Shell ไม่ใช่ตัวระบบปฏิบัติการ
หน้าต่างสีดำ (Terminal) เป็นเพียงช่องทางแสดงผล และ Shell เป็นเพียงตัวแปลคำสั่ง ทั้งสองเป็นเครื่องมือเพื่อสั่งงานเคอร์เนลอีกทอดหนึ่ง
Linux จัดการไฟล์ด้วยโครงสร้างต้นไม้เดี่ยว
ไม่มีไดรฟ์ C: หรือ D: แยกชิ้น ทุกโฟลเดอร์และอุปกรณ์จัดเก็บข้อมูลทั้งหมดอยู่ใต้ราก / (Root Directory) ร่วมกัน
5. ตรวจสอบความเข้าใจและก้าวต่อไป
ทดสอบความเข้าใจพื้นฐานระบบปฏิบัติการ Linux
คำว่า 'Linux' ในความหมายทางเทคนิคแท้จริง หมายถึงส่วนประกอบใดของระบบ?
คำศัพท์ที่ใช้เรียกชุดระบบปฏิบัติการสำเร็จรูปที่นำ Linux Kernel มารวมกับเครื่องมือและระบบจัดการแพ็กเกจ (เช่น Ubuntu, Fedora) คืออะไร?
ข้อใดอธิบายลำดับการส่งคำสั่งจากผู้ใช้ไปยังระบบคอมพิวเตอร์ได้อย่างถูกต้อง?
ส่วนประกอบใดในระบบ Linux ที่ทำหน้าที่ติดตั้ง อัปเดต และถอนการติดตั้งโปรแกรมหรือไลบรารี?
- Linux คือ Kernel ที่ทำหน้าที่เป็นแกนกลางจัดสรรทรัพยากรฮาร์ดแวร์ ไม่ใช่ระบบปฏิบัติการที่สมบูรณ์ในตัวเองลำพัง
- Distribution คือการนำ Linux Kernel มาประกอบเข้ากับ GNU utilities และ Package Manager กลายเป็นระบบพร้อมใช้งานจริง
- ผู้ใช้สั่งงานผ่าน Terminal และ Shell เป็นด่านหน้า เพื่อประสานงานกับ Kernel โดยไม่ต้องสัมผัสฮาร์ดแวร์โดยตรง
- ก้าวต่อไป: ในบท 'terminal-shell' เราจะเจาะลึกหน้าต่าง Terminal และตัวแปลคำสั่ง Shell เพื่อเตรียมสั่งงานจริง โดยบทนี้สมมุติว่าคุณเข้าใจบทบาทของ Linux และความแตกต่างระหว่าง Kernel กับ Distribution แล้ว