P15 Arch Linux — ภาพรวมการติดตั้ง
ติดตั้ง Arch แบบมือ (ไม่ใช้ archinstall) บน ThinkPad P15 Gen 1 พร้อมดิสก์เข้ารหัส LUKS2 + btrfs + snapper
Manual Arch install with full-disk encryption, snapshots and hybrid NVIDIA
ใช้ทำอะไร (Purpose)
เครื่องหลักสำหรับงาน OSINT / วิเคราะห์ข้อมูลคดีด้วย Ollama แบบ local จึงต้อง
- เข้ารหัสทั้งดิสก์ (เครื่องหาย / ส่งเคลมประกัน ข้อมูลคดีต้องอ่านไม่ได้)
- ย้อนกลับได้ เมื่ออัพเดทพัง (snapper)
- ใช้ GPU ได้แต่ไม่เปลืองไฟ (NVIDIA หลับเมื่อไม่ใช้)
แกนหลัก: Boot chain 5 hop
ทุกขั้นของการติดตั้งคือ “การสร้าง hop ใด hop หนึ่ง” แต่ละ hop รู้แค่ next hop
(เหมือน router ที่รู้แค่ next hop ของ packet)
กดเปิดเครื่อง
│
[1] UEFI firmware ──── อ่าน NVRAM: "Linux Boot Manager" → ESP
│
[2] systemd-boot ──── อ่าน /boot/loader/entries/arch.conf → kernel + initramfs
│
[3] kernel + initramfs ── sd-encrypt ถามรหัส → เปิด LUKS → mount subvol @
│
[4] root (@) ──── systemd อ่าน /etc/fstab → mount subvolume ที่เหลือ
│
[5] systemd → ly → i3บูตไม่ขึ้น = มี hop หนึ่งหา next hop ไม่เจอ → debug ไล่ทีละ hop แบบ network
โครงสร้างดิสก์ (Disk Layout)
nvme0n1 (GPT, สารบัญสำรองท้ายดิสก์)
├─ p1 1 GiB EF00 "ESP" → FAT32 "ESP" → /boot (fmask/dmask 0077)
└─ p2 475.9G 8309 "LUKS" → LUKS2 (aes-xts, argon2id, discards)
└─ /dev/mapper/cryptroot → btrfs "ARCH"
├─ @ (256) → /
├─ @home (257) → /home
├─ @snapshots (258) → /.snapshots
├─ @log (259) → /var/log
└─ @pkg (260) → /var/cache/pacman/pkgแผนที่บันทึก (Map)
| ไฟล์ | เนื้อหา | Hop |
|---|---|---|
| 01-buy-check-and-iso | ตรวจเครื่องมือสอง, ตรวจ ISO, เขียน USB | — |
| 02-disk-luks-btrfs | GPT, LUKS2, btrfs, subvolume, mount | 1, 3, 4 (ที่อยู่) |
| 03-install-and-boot-chain | pacstrap, fstab, chroot, initramfs, systemd-boot, NVRAM | 1–4 |
| 04-snapper-safety-net | snapper, snap-pac, cleanup | — |
| 05-nvidia-hybrid-rtd3 | NVIDIA + การ์ดหลับ | — |
| 06-dotfiles-and-packages | Stow, รายการแพ็กเกจ, SSH key/agent | 5 |
| 07-audio-bluetooth | PipeWire, BT | — |
| 08-thai-input | layout + ฟอนต์ไทย | — |
| 09-hardware-tuning | แรม, zram, แบต, ลายนิ้วมือ, แจ้งเตือน | — |
| 10-music-lyrics-pipeline | yt-dlp + srt-clean + mpv | — |
| 99-commands-reference | คำสั่งทั้งหมดที่ผ่านจริง | — |
การตัดสินใจหลัก (Key Decisions)
| เรื่อง | เลือก | เหตุผล |
|---|---|---|
| ติดตั้ง | มือ ไม่ใช้ archinstall | เข้าใจทุก hop, archinstall ลากไดรเวอร์ทุกยี่ห้อมา |
| เข้ารหัส | LUKS2 ทั้ง root | ข้อมูลคดี + ส่งเคลมประกัน |
| bootloader | systemd-boot | UEFI ล้วน, config อ่านง่าย |
| filesystem | btrfs + subvolume แยก | snapshot/rollback โดยไม่ย้อน log กับ home |
| kernel | linux + linux-lts | lts = backup link ถ้า NVIDIA กับ kernel ใหม่ทะเลาะกัน |
| swap | zram | ไม่ต้องมี swap บนดิสก์ที่เข้ารหัส |
| GPU | Hybrid + nvidia-open-dkms | ไดรเวอร์สายหลักของ Arch (Turing) |
หลักคิดที่ใช้ตลอดงาน (Method)
- ทายผลก่อนรัน แล้วเทียบกับผลจริง ทายผิด = ได้เรียนรู้เพิ่ม
- พิสูจน์ด้วยหลักฐาน ไม่ใช้คำว่า “น่าจะ” (เงียบ ≠ สำเร็จ ต้องตรวจซ้ำ)
- แยกตัวแปรทีละตัว เวลา debug
- ตรวจแหล่งของหลักฐาน (log ของเครื่องไหน, ข้อความถูกตัดตอนไหม)
- บันทึก session ด้วย
scriptจากเครื่องที่ SSH เข้ามา
เครื่องมือบันทึก (Session Logging)
# บนเครื่อง MSI ก่อน SSH เข้า P15
script -a ~/p15-install-$(date +%F).log
ssh root@<IP ของ P15>- log เก็บฝั่ง MSI (P15 ตอนบูต ISO เก็บทุกอย่างใน RAM)
- รหัสผ่านที่ไม่แสดงบนจอ → ไม่ติดใน log
- จบงาน:
exitสองครั้ง
คำถามชวนคิด
- ถ้าบูตแล้วจอค้างที่หน้าถามรหัส LUKS แต่พิมพ์รหัสถูกแล้วยังไม่ผ่าน ปัญหาอยู่ที่ hop ไหนได้บ้าง และคุณจะเก็บหลักฐานอะไรเพื่อแยกสาเหตุ
- ทำไมการแยก
@logออกจาก@จึงสำคัญกับคนทำงานสืบสวน มากกว่าคนทั่วไป - ถ้าต้องติดตั้งเครื่องที่ ไม่มี การ์ด NVIDIA แต่ใช้ดิสก์แบบเดียวกัน ขั้นตอนไหนในแผนที่นี้จะเปลี่ยน และขั้นไหนเหมือนเดิมทุกตัวอักษร