Gentoo เป็นการกระจาย Linux ที่ทรงพลังและขยายได้ เป็นหนึ่งในระบบปฏิบัติการน้อยๆ ที่ยังคงใช้ระบบจัดการแพ็กเกจแบบซอร์สโค้ด (source-based) ตามหลักการเดิมของ Linux ตัวจัดการแพ็กเกจของมันคือ Portage ซึ่งเป็นเครื่องมืออันทรงพลังที่ช่วยให้คุณปรับแต่งและเพิ่มประสิทธิภาพทุกด้านของระบบได้ตามต้องการ
ทำไมถึงใช้การกระจายแบบ Source-Based?
ปัจจุบัน การกระจาย Linux ส่วนใหญ่จัดเตรียมแพ็กเกจที่คอมไพล์ไว้ล่วงหน้า (precompiled) หมายความว่าการสร้างแพ็กเกจเกิดขึ้นบนเครื่องของนักพัฒนา
แม้การคอมไพล์แพ็กเกจจะไม่ใช่ปัญหาในยุคอินเทอร์เน็ตความเร็วสูง แต่มอเดลการกระจายแบบนี้ยังมีประเด็นที่ควรพิจารณา:
- ไบนารีที่คอมไพล์แล้วหมายความว่าคุณไม่สามารถควบคุมได้ว่าโปรแกรมถูกคอมไพล์อย่างไร และมีฟีเจอร์อะไรบ้าง
- การพึ่งพาไบนารีหมายความว่าคุณต้องวางใจให้กับนักพัฒนาการกระจายอย่างเต็มที่ว่าเขาจะไม่ใส่โค้ดอันตรายในที่เก็บ (repositories)
ทำไมถึงควรใช้ Gentoo?
เหตุผลคือ Gentoo เป็นการกระจาย Linux ที่ทรงพลัง มันให้การเข้าถึงและอิสระเกือบไม่มีข้อจำกัดในการเปลี่ยนแปลงและปรับแต่งระบบทั้งหมด
Portage: หัวใจสำคัญของ Gentoo
Portage เป็นส่วนประกอบหลักที่จัดการระบบ Gentoo Linux มันติดตั้ง จัดการ และปรับแต่งแพ็กเกจของบุคคลที่สาม นอกจากนี้ Portage ยังจัดการการตั้งค่าระบบพื้นฐานอีกด้วย
ความแตกต่างหลักของ Portage คือมันอนุญาตให้คุณติดตั้งแพ็กเกจจากซอร์สโค้ด แม้ว่าจะทำได้ในการกระจายอื่นๆ แต่ Portage นำมาทำเป็นวิธีเริ่มต้นในการรับแพ็กเกจ
การรับได้ Gentoo
คุณสามารถดาวน์โหลด Gentoo จากเว็บไซต์อย่างเป็นทางการได้ ที่นั่นคุณสามารถเลือกโปรแกรมติดตั้งสำหรับแพลตฟอร์มต่างๆ Gentoo รองรับทั้ง amd64 และ arm64
หลังจากดาวน์โหลดไฟล์ ISO แล้ว คุณสามารถใช้โปรแกรมเขียน USB เช่น balenaEtcher เพื่อสร้างแฟลชไดรฟ์ที่บูตได้
การติดตั้ง Gentoo Linux
ก่อนจะเริ่มติดตั้ง Gentoo สิ่งสำคัญคือกระบวนการนี้เป็นแบบแมนูวลทั้งหมด หมายถึงจะต้องรันคำสั่งจำนวนมาก จึงแนะนำให้คุณอ่านคู่มือนี้พร้อมกับดูคู่มืออย่างเป็นทางการของ Gentoo (Handbook) เพื่อข้อมูลเพิ่มเติมระหว่างการติดตั้ง
เสียบแฟลชไดรฟ์เข้าคอมพิวเตอร์และบูตเครื่อง จะเข้าสู่หน้าจอติดตั้ง Gentoo
การตั้งค่าการเชื่อมต่อเครือข่าย
เพื่อติดตั้ง Gentoo คุณต้องเชื่อมต่ออินเทอร์เน็ต โปรแกรมติดตั้งจะเชื่อมต่ออัตโนมัติหากใช้สายลาน (wired) จากนั้นรันคำสั่งต่อไปเพื่อตรวจสอบการเชื่อมต่อ:
ping -c 5 maketecheasier.com
หากต้องเชื่อมต่อ Wi-Fi ต้องตั้งค่า wpa_supplicant เพื่อเชื่อมต่อกับ Access Point:
wpa_passphrase 'Your_SSID_Here' 'Your_Password_Here' >> /etc/wpa_supplicant/wpa_supplicant.conf
หลังจากนั้น รีโหลด daemon dhcpcd เพื่อเริ่มการเชื่อมต่อ:
rc-service dhcpcd restart
การแบ่งพาร์ติชันฮาร์ดดิสก์
ต่อไป ต้องจัดรูปแบบดิสก์ที่จะติดตั้ง Gentoo โดยใช้คำสั่ง fdisk
fdisk เป็นเครื่องมือแบ่งพาร์ติชันดิสก์บรรทัดคำสั่ง เริ่มต้นด้วย:
fdisk /your/disklabel
หากไม่แน่ใจโครงสร้างพาร์ติชันเดิม ให้ตรวจสอบด้วยแฟล็ก -l:
fdisk -l
การใช้ fdisk แบ่งพาร์ติชัน
ภายใน fdisk ให้ลบพาร์ติชันเก่าทั้งหมดโดยกด G
จากนั้นสร้างพาร์ติชันใหม่:
- กด N เพื่อสร้างพาร์ติชันใหม่ fdisk จะถามหมายเลขพาร์ติชัน กด Enter เพื่อใช้ค่าเริ่มต้น
- fdisk จะถาม First และ Last sector กด Enter สำหรับ First sector และระบุขนาดสำหรับ Last sector รูปแบบคือ:
+size(G|M|K)
+บอกว่าขนาดเป็นสัมพัทธ์กับ first sector ที่เลือกsizeเป็นตัวเลขที่คุณกำหนด- ตัวเลือกสุดท้ายบอกหน่วยเป็น GB, MB หรือ KB
การแบ่งพาร์ติชันสำหรับระบบ UEFI
การแบ่งพาร์ติชันต่อไปขึ้นอยู่กับว่าคุณใช้ BIOS หรือ UEFI หากใช้คอมพิวเตอร์สมัยใหม่ มักจะเป็น UEFI
เพื่อสร้างดิสก์ที่รองรับ UEFI ต้องสร้างพาร์ติชัน EFI System ก่อน พาร์ติชันแรก ขนาดประมาณ 100-256MB
ตั้งค่าประเภทพาร์ติชันเป็น EFI System โดยกด T แล้วพิมพ์ 1
การแบ่งพาร์ติชันส่วนที่เหลือ
พาร์ติชันถัดไปคือ /boot สำหรับเก็บ Linux kernel และ bootloader ควรประมาณ 500MB-1GB (ตัวอย่างใช้ 1GB)
สร้างพาร์ติชัน SWAP สำหรับหน่วยความจำเสมือน กฎทั่วไปคือ 0.5-2 เท่าของ RAM ตัวอย่างมี RAM 8GB จึงตั้ง SWAP 16GB
ตั้งค่าประเภทพาร์ติชันนี้เป็น 19 (Linux swap)
สุดท้าย สร้างพาร์ติชัน root (/) สำหรับระบบส่วนที่เหลือ โดยกด Enter ที่ Last sector เพื่อใช้พื้นที่ทั้งหมดที่เหลือ
กด P เพื่อตรวจสอบตารางพาร์ติชัน
กด W เพื่อบันทึกการเปลี่ยนแปลง
การจัดรูปแบบดิสก์ใน Gentoo
ขั้นตอนต่อไปคือจัดรูปแบบไฟล์ระบบ (format) ก่อนอื่น จัดรูปแบบพาร์ติชัน EFI System เป็น FAT:
mkfs.vfat /dev/sda1
จัดรูปแบบพาร์ติชัน /boot ด้วย ext2:
mkfs.ext2 /dev/sda2
สร้างและเปิดใช้งาน SWAP:
mkswap /dev/sda3 && swapon /dev/sda3
จัดรูปแบบพาร์ติชัน root เป็น ext4:
mkfs.ext4 /dev/sda4
การดาวน์โหลด Stage 3 Tarball
มาท์พาร์ติชัน root ที่สร้างไว้ไปที่ /mnt/gentoo เพราะการติดตั้งจะทำงานบนฮาร์ดดิสก์ของเครื่อง:
mount /dev/sda4 /mnt/gentoo && cd /mnt/gentoo
ดาวน์โหลด Stage 3 tarball จาก gentoo.org โดยใช้ wget:
wget https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/20220227T170528Z/stage3-amd64-desktop-openrc-20220227T170528Z.tar.xz
Tarball นี้มีโปรแกรมขั้นพื้นฐานสำหรับการติดตั้ง Linux ขั้นต่ำ แตกไฟล์ด้วย tar:
tar xpvf ./stage3-amd64-desktop-openrc-20220227T170528Z.tar.xz --xattrs-include='*.*' --numeric-owner
การเลือก Mirror และคัดลอกข้อมูล DNS
ระบุตำแหน่งดาวน์โหลดแพ็กเกจด้วยคำสั่ง mirrorselect:
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
จะเปิดโปรแกรม TUI ให้เลือกเซิร์ฟเวอร์ที่ใกล้ที่สุด
คัดลอกไฟล์ repository สำหรับ Gentoo ไปที่ /etc/portage:
mkdir -p /mnt/gentoo/etc/portage/repos.conf && \ cp /mnt/gentoo/usr/share/portage/config/repos.conf \ /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
คัดลอกข้อมูล resolver จาก USB installer ไป /mnt/gentoo เพื่อให้เครือข่ายทำงานหลัง chroot:
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
การ Mount ไฟล์อุปกรณ์และ Chroot
Mount ไดเรกทอรีพิเศษจาก USB installer ไปฮาร์ดดิสก์ เพื่อให้อุปกรณ์ทำงานหลัง chroot:
mount --types proc /proc /mnt/gentoo/proc mount --rbind /sys /mnt/gentoo/sys mount --make-rslave /mnt/gentoo/sys mount --rbind /dev /mnt/gentoo/dev mount --make-rslave /mnt/gentoo/dev mount --bind /run /mnt/gentoo/run mount --make-slave /mnt/gentoo/run
รันคำสั่ง chroot เพื่อย้าย root directory จาก USB ไปฮาร์ดดิสก์:
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="[chroot] ${PS1}"
การ Mount /boot และอัปเดต Gentoo
Mount พาร์ติชัน /boot และ /boot/efi:
mount /dev/sda2 /boot mkdir /boot/efi mount /dev/sda1 /boot/efi
อัปเดต Gentoo repositories เพื่อรับแพ็กเกจล่าสุด:
emerge-webrsync
คำสั่งนี้จะดาวน์โหลด EBUILDS ล่าสุดจาก mirror ที่เลือก
การอัปเดตระบบ Gentoo ครั้งแรก
อัปเดตระบบให้ตรงกับ EBUILDS ล่าสุด:
emerge --ask --verbose --update --deep --newuse @world
คำสั่งนี้จะตรวจสอบแพ็กเกจ Stage 3 กับ repository และคอมไพล์อัปเดตทุกแพ็กเกจที่มีเวอร์ชันใหม่ กระบวนการนี้ใช้เวลานาน
เขตเวลาและ Locale
ตั้งค่าข้อมูลเฉพาะภูมิภาค: เขตเวลาและ system locale หาเขตเวลาที่ใกล้ที่สุดใน /usr/share/zoneinfo แล้วเขียนลง /etc/timezone เช่น:
echo "Asia/Bangkok" > /etc/timezone emerge --config sys-libs/timezone-data
ตั้งค่า locale โดยแก้ไข /etc/locale.gen:
nano -w /etc/locale.gen
เพิ่ม locale ที่ต้องการ เช่นภาษาอังกฤษสหรัฐ:
en_US ISO-8859-1 en_US.UTF-8 UTF-8
จากนั้นรัน locale-gen เพื่อสร้าง locale ใหม่
การติดตั้ง Linux Kernel
มีหลายวิธีติดตั้ง Kernel ใน Gentoo สำหรับบทความนี้ใช้ kernel สำเร็จรูปจากนักพัฒนา Gentoo:
emerge --ask sys-kernel/installkernel-gentoo sys-kernel/gentoo-kernel-bin
การตั้งค่า fstab
แก้ไขไฟล์ /etc/fstab เพื่อบอกระบบว่าต้อง mount พาร์ติชันไหนที่ไหน:
nano -w /etc/fstab
ตัวอย่างสำหรับระบบ UEFI:
/dev/sda1 /boot/efi vfat defaults 0 2 /dev/sda2 /boot ext2 defaults,noatime 0 2 /dev/sda3 none swap sw 0 0 /dev/sda4 / ext4 noatime 0 1
การตั้งรหัสผ่าน Root
ตั้งรหัสผ่าน root เนื่องจาก Stage 3 ตั้งรหัสสุ่มไว้ หากไม่ตั้งจะเข้าระบบไม่ได้หลัง reboot:
passwd
การติดตั้งเครื่องมือเพิ่มเติม
ติดตั้งเครื่องมือสำหรับเครือข่าย (Ethernet และ Wi-Fi):
emerge --ask net-misc/dhcpcd net-wireless/iw net-wireless/wpa_supplicant rc-update add dhcpcd default
ติดตั้ง system logger:
emerge --ask app-admin/sysklogd rc-update add sysklogd default
ติดตั้ง filesystem utilities:
emerge --ask sys-fs/dosfstools sys-fs/ntfs3g
การติดตั้ง Bootloader
ขั้นตอนสุดท้ายคือติดตั้ง GRUB bootloader:
emerge --ask sys-boot/grub
เริ่มต้นและตั้งค่า GRUB:
grub-install --target=x86_64-efi --efi-directory=/boot/efi grub-mkconfig -o /boot/grub/grub.cfg
Unmount และ reboot:
exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
หลัง reboot คุณจะได้ระบบ Gentoo Linux ใหม่ เริ่มติดตั้งซอฟต์แวร์และแพ็กเกจเพื่อสร้างระบบของตัวเอง หากยังไม่แน่ใจว่าจะใช้ Desktop Environment อะไร อ่านบทความเรื่อง Best Desktop Environments on Linux
คำถามที่พบบ่อย
1. มีวิธีเร่งความเร็วการคอมไพล์ใน Gentoo ไหม?
มี! เพิ่มค่าใน /etc/portage/make.conf เช่น ตั้งค่าเพื่อใช้ CPU cores ทั้งหมดระหว่างคอมไพล์:
MAKEOPTS="-j4" # เปลี่ยนตัวเลขตามจำนวน CPU cores ของเครื่องคุณ
2. ระบบบูตไม่ได้! แสดง GRUB แต่หลังจากนั้นหน้าจอว่างเปล่า
อาจเกิดจาก fstab ไม่ถูกต้อง แก้โดยเสียบ USB installer และทำตามขั้นตอน chroot ไปฮาร์ดดิสก์อีกครั้ง
3. Xorg ไม่แสดงฟอนต์ มีปัญหาอะไรไหม?
ส่วนใหญ่เพราะ Xft ไม่ได้ติดตั้ง ต้องเพิ่ม USE flag xft ใน /etc/portage/make.conf:
USE="xft"