Skip to content
ปรับแต่งฮาร์ดแวร์และความปลอดภัยรอบเครื่อง

ปรับแต่งฮาร์ดแวร์และความปลอดภัยรอบเครื่อง

งานหลังติดตั้ง: แรม 48GB, memtest, zram, เพดานชาร์จ, สำรอง LUKS header, ลายนิ้วมือ, แจ้งเตือน
Post-install hardware and safety tasks

1. สำรอง LUKS header

header 16 MiB เก็บ master key ที่เข้ารหัสด้วยรหัสของเรา → เสีย = ข้อมูลทั้งดิสก์หาย แม้จำรหัสได้

# บน P15
sudo cryptsetup luksHeaderBackup /dev/nvme0n1p2 --header-backup-file /tmp/p15-luks-header.img
ls -l /tmp/p15-luks-header.img       # 16777216 = 32768 sector × 512
sudo chown green: /tmp/p15-luks-header.img
# บน MSI (ดู prompt ก่อน!)
scp <user>@<P15-IP>:/tmp/p15-luks-header.img ~/
sha256sum ~/p15-luks-header.img; ssh <user>@<P15-IP> sha256sum /tmp/p15-luks-header.img
# บน P15
rm -f /tmp/p15-luks-header.img
  • /tmp อยู่ใน RAM = ไฟล์ลับไม่ถูกเขียนลง SSD
  • เปลี่ยนรหัส LUKS เมื่อไหร่ ต้องสำรองใหม่ (ไฟล์เก่า + รหัสเก่า ยังเปิดได้)
  • เก็บไว้ USB แยก ไม่แขวนกุญแจสำรองไว้ที่ประตู

2. แรม 48GB

sudo dmidecode -t memory | grep -E '^\s+(Size|Locator|Speed|Configured Memory Speed|Part Number):'
ช่องแผงใช้งานจริง
A-DIMM0Crucial 26672133
A-DIMM1ว่าง (ใต้คีย์บอร์ด)
B-DIMM0Samsung 26672133
B-DIMM1แผงเดิมร้าน 32002133
  • ลดเหลือ 2133 (ทายไว้ 2666): 2 แผงในช่อง B (2DPC) + สามยี่ห้อ → BIOS เลือกค่าปลอดภัย
  • ช่อง A 16 / ช่อง B 32 → flex mode (32GB dual + 16GB single channel)
  • Ollama บน CPU ขึ้นกับแบนด์วิดท์แรม → วัด tokens/วินาที เทียบก่อนตัดสินใจจัดใหม่
  • หลังหมดประกัน: จัดให้สองช่องเท่ากัน (แผงที่ 4 → 64GB dual)

3. memtest86+

sudo pacman -S memtest86+-efi
pacman -Ql memtest86+-efi                      # /boot/memtest86+/memtest.efi
printf 'title   Memtest86+\nefi     /memtest86+/memtest.efi\n' | sudo tee /boot/loader/entries/memtest.conf
sudo bootctl list
  • efi = chain-load ส่งต่อทั้งหมดให้ .efi อื่น (ต่างจาก linux+initrd)
  • ผล: 1 pass, 0 errors ✓
  • ลบแพ็กเกจต้องลบ entry เองด้วย (pacman ไม่รู้จักไฟล์ที่เราเขียน)

4. zram

sudo tee /etc/systemd/zram-generator.conf <<'EOF'
[zram0]
zram-size = ram / 2
compression-algorithm = zstd
swap-priority = 100
EOF
sudo systemctl daemon-reload && sudo systemctl start systemd-zram-setup@zram0.service
zramctl; swapon --show
  • generator = systemd สร้าง unit จาก config ให้เอง ไม่ต้อง enable
  • ได้ 23.4G (ทายไว้ 7.6G) → เพราะ อัพแรมเป็น 48GB แล้ว config ถูกต้อง

5. เพดานชาร์จแบต (ThinkPad)

cat /sys/class/power_supply/BAT0/charge_control_{start,end}_threshold
echo 80 | sudo tee /sys/class/power_supply/BAT0/charge_control_end_threshold
echo 75 | sudo tee /sys/class/power_supply/BAT0/charge_control_start_threshold
  • ตั้ง end ก่อน start
  • ช่องว่าง 75–80 = hysteresis (เหมือน route flap dampening)
  • ค่าเก็บใน EC → ยังต้องพิสูจน์หลังรีบูต

6. ลายนิ้วมือ (ใช้กับหน้าต่าง polkit เท่านั้น)

lsusb | grep -iE 'finger|synaptics|broadcom|goodix|validity|elan'   # 06cb:00bd Synaptics
fprintd-enroll          # ⚠️ รันใน kitty ที่อยู่ใน i3 (ไม่ใช่ SSH)
fprintd-verify
pacman -Ql polkit | grep pam.d                     # /usr/lib/pam.d/polkit-1
sudo cp /usr/lib/pam.d/polkit-1 /etc/pam.d/polkit-1
sudo sed -i '/^auth *include *system-auth/i auth       sufficient   pam_fprintd.so' /etc/pam.d/polkit-1
pkexec echo "ผ่านด้วยลายนิ้วมือ"

PAM = AAA method list: sufficient pam_fprintd = ลองนิ้วก่อน ไม่ผ่านไปถามรหัส

ใช้กับตัดสินใจเหตุผล
polkit (ใช้เมาส์)✅สะดวก ผ่าน login มาแล้ว
sudo (พิมพ์)❌รอสแกนก่อนถามรหัส = ช้าลง
login / ปลดล็อกจอ❌ถูกบังคับแตะนิ้วได้

หลัก /etc ทับ /usr/lib: แก้ไฟล์ใน /etc เสมอ แต่ต้องตรวจเป็นระยะ:

diff /usr/lib/pam.d/polkit-1 /etc/pam.d/polkit-1    # ต้องต่างแค่บรรทัด fprintd

7. แจ้งเตือน (dunst)

sudo pacman -S dunst
notify-send "ทดสอบ" "สวัสดีจาก P15"     # ใน i3
pgrep -a dunst                         # D-Bus ปลุกขึ้นมาเอง (activation)

ค้างทำ (ยังไม่ได้ทดสอบ — ไม่ใส่คำสั่ง)

  • SSH เข้า P15 ด้วย key อย่างเดียว (sshd_config.d)
  • ปิด Network Boot ใน BIOS (PXE, LENOVO CLOUD)
  • รหัส Supervisor ของ BIOS (ลืม = เปลี่ยนเมนบอร์ด)
  • gnome-keyring ให้ Chrome (cookie ถูกเข้ารหัสด้วยกุญแจที่ฝังในโปรแกรม = เสี่ยง infostealer)

ปัญหาที่เคยเจอ & สิ่งที่ทายผิด (Troubleshooting)

เหตุการณ์บทเรียน
scp รันบน P15 เอง (495 MB/s)ความเร็วที่เป็นไปไม่ได้คือหลักฐาน ดู prompt ก่อนกด Enter
rm ถามเรื่อง write-protectedไฟล์ r-------- → rm ถามตามมารยาท ใช้ rm -f เมื่อแน่ใจ
memtest ดับกลางทาง (99%)แบตหมด (AC = 0) → รันตอนเสียบสายเท่านั้น
zram 23.4G ไม่ตรงทายตรวจ “ข้อมูลนำเข้า” (แรมเปลี่ยน) ไม่ใช่แค่ config
fprintd-enroll Timeoutpolkit ปฏิเสธ SSH session → ทำที่หน้าเครื่อง
ไม่มี /etc/pam.d/polkit-1อยู่ใน /usr/lib/pam.d/ → copy มาแก้ใน /etc
ไดรเวอร์ Broadcom ในรายการของเครื่อง Dell เดิม ตรวจด้วย lsusb

คำถามชวนคิด

  1. ถ้าเครื่องค้างแบบสุ่มหลังใส่แรมสามยี่ห้อ คุณจะใช้ memtest + การถอดทีละแผงหาตัวเสียอย่างไร ให้ใช้รอบทดสอบน้อยที่สุด
  2. ไฟล์สำรอง LUKS header ตกไปอยู่ในมือคนอื่น แต่เขาไม่รู้รหัส ความเสี่ยงคืออะไร และถ้าวันหนึ่งรหัสหลุดด้วย ต้องทำอะไรบ้าง
  3. ทำไม polkit ถึงแยก “คนหน้าเครื่อง” ออกจาก “คนที่ SSH เข้ามา” ลองเปรียบกับนโยบาย console vs VTY บนอุปกรณ์ network