1 คะแนน โดย GN⁺ 2024-04-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ประวัติของ Alpine Linux

    • Alpine Linux เป็นดิสทริบิวชัน Linux แบบอิสระ ไม่แสวงหากำไร และใช้งานทั่วไป ออกแบบมาสำหรับผู้ใช้ระดับสูงที่ให้ความสำคัญกับความปลอดภัย ความเรียบง่าย และการใช้ทรัพยากรอย่างมีประสิทธิภาพ
    • ไบนารีใน userland ทั้งหมดคอมไพล์เป็น PIE (Position Independent Executables) และเปิดใช้ stack smashing protection เพื่อป้องกันการโจมตีทั้งกลุ่ม เช่น ช่องโหว่แบบ zero-day ได้ล่วงหน้า
    • ในปี 2005 Natanael Copa ได้เริ่มพูดคุยถึงการเริ่มต้นโครงการ และเช่นเดียวกับ BSD มันถูกใช้ทั้งในระบบฝังตัว เราเตอร์ อุปกรณ์พกพา รวมถึงเซิร์ฟเวอร์และเดสก์ท็อปทั่วไป
    • ด้วยขนาดที่กะทัดรัดและการพึ่งพา dependency ที่จำกัด จึงเป็นที่นิยมในฐานะเบสของคอนเทนเนอร์ Linux ด้วย
    • ยังมี toolchain ที่สามารถรันใน chroot(8) ได้อย่างง่ายดาย จึงน่าสนใจสำหรับผู้ที่ใช้ NetBSD chroots(8) และ FreeBSD jail อย่างกว้างขวาง
  • การติดตั้ง Alpine Linux

    • มีให้เลือกหลายรุ่น รวมถึงบิลด์สำหรับ ARM, PPC64, x86 และ x86_64
    • กระบวนการติดตั้งเรียบง่ายมาก เพียงเข้าสู่ระบบเป็น root ในสภาพแวดล้อม live แล้วรัน setup-alpine
    • จะมีคำถามพื้นฐานเกี่ยวกับ keymap, เครือข่าย, เขตเวลา, การยืนยันตัวตนของ root เป็นต้น และยังสามารถใส่ SSH key ได้ตั้งแต่ต้น จึงมีประโยชน์เมื่อใช้เครื่องมือ orchestration เพื่อกระจาย VM หรือกลุ่มเซิร์ฟเวอร์ หรือเมื่อต้องดีพลอยกับผู้ให้บริการโฮสติงที่ไม่จัดเตรียมสื่อให้
    • สามารถเลือกได้จาก SSH server และ NTP client หลายตัว เช่น OpenSSH ที่ชอบและ openntpd อีกทั้งยังตรวจพบการทำงานบน Xen ได้อย่างถูกต้อง
    • สามารถตั้งค่า LVM ได้เช่นกัน แต่ตอนนี้ยังยึดตามพาร์ทิชันมาตรฐานแบบ sys ของ Alpine ที่ใช้ ext4
  • การสำรวจหลังติดตั้ง

    • เมื่อบูต Alpine ครั้งแรก ก็จะเข้าใจได้ทันทีว่าทำไม: dmesg(1) บอกว่ากำลังรัน OpenRC อยู่
    • มันพกพาได้ เล็ก เร็ว มีประสิทธิภาพ โปร่งใส และปลอดภัย
    • สำหรับผู้ใช้ BSD ที่คุ้นเคยกับการเขียน rc script จะรู้สึกคุ้นมือมาก
    • การมีอยู่ของ /etc/rc.conf และ crond(8) ทำให้น่ายินดี
    • เป็นเรื่องน่าดีใจมากที่ได้เห็นสิ่งนี้ในดิสทริบิวชัน Linux อย่าง Devuan, Gentoo และ Alpine และมันทำให้ Linux กลับมาสนุกอีกครั้ง
    • พร้อมกับ OpenRC ยังมี musl และ busybox ที่มากับระบบ ช่วยลดขนาดของระบบพื้นฐานและลดพื้นที่การโจมตีลงอีก
    • ยังใช้งาน llvm และ MirBSD Korn shell ซึ่งเป็นหนึ่งใน interactive shell ที่ชอบได้ด้วย
  • แพ็กเกจ

    • ตัวจัดการแพ็กเกจหลักของ Alpine คือ apk และมันจัดการอัปเดตโดยไม่แยกระหว่างระบบพื้นฐานกับแพ็กเกจทั้งหมด เหมือนที่พบได้ทั่วไปใน Linux
    • อยากลองดูเหมือนกันว่าสามารถรันสำเนาแบบไม่ใช้สิทธิ์พิเศษได้เหมือนใน BSD หรือไม่ แต่ยังไม่ได้ตรวจสอบ และก็มี pkgsrc อยู่แล้วจึงไม่ใช่ปัญหา
    • การตั้งค่าอยู่ที่ /etc/apk/repositories และสามารถเปิดใช้คลัง community ได้ด้วยการเอาคอมเมนต์ออกจาก URL ตัวที่สองที่โปรแกรมติดตั้งเตรียมไว้ให้
    • Alpine ยังมีคลัง testing และสามารถเพิ่มคลังของตัวเองได้ด้วย
    • วิธีใช้งานง่าย แต่เพราะความเคยชินเก่า ๆ ก็ยังพิมพ์ apt install ผิดแทน apk add อยู่บ่อยครั้ง
    • มีเว็บอินเทอร์เฟซทางการ และคลังของ Alpine ก็อยู่บน pkgs.org
    • แพ็กเกจ zfs คือสิ่งที่น่าประหลาดใจที่สุด เพราะใช้เพียงสองคำสั่งก็สามารถติดตั้งและโหลดเคอร์เนลโมดูลได้แล้ว (แต่ root on ZFS น่าจะซับซ้อนกว่านั้น)
  • บทสรุป

    • แม้จะเพิ่งลองแบบผิวเผิน แต่ก็มีเหตุผลมากพอให้พิจารณาอย่างจริงจังว่าจะเปลี่ยนมาใช้เป็นดิสทริบิวชัน Linux หลักสำหรับงานทดสอบและเซิร์ฟเวอร์
    • ชอบที่ htop(1) และ lsof(1) แสดงรายการโปรเซสที่พอมองรู้เรื่องได้เพียงเล็กน้อย ใช้ OpenRC การจัดการแพ็กเกจดูเรียบง่าย และการตั้งค่าก็ตรงไปตรงมามาก
    • เคยสงสัยว่า “Occam's Linux” ที่ทันสมัยและใช้งานได้จริงจะมีหน้าตาอย่างไร และนี่ก็คือสิ่งนั้น
    • ถ้าต้องการมากกว่า busybox ก็อยากลองดูว่า uutils ใช้งานได้ไหม แต่สำหรับเซิร์ฟเวอร์ยังไม่ค่อยแน่ใจ

ความเห็นของ GN⁺

  • Alpine Linux ถูกปรับให้เหมาะกับการดีพลอยแบบคอนเทนเนอร์ จึงถูกใช้อย่างแพร่หลายในแพลตฟอร์มคอนเทนเนอร์อย่าง Docker นับว่าเป็นดิสทริบิวชันที่น่าพิจารณาเมื่อจะทำสถาปัตยกรรมไมโครเซอร์วิสด้วยคอนเทนเนอร์

  • การใช้ musl libc เป็นค่าเริ่มต้นอาจเป็นได้ทั้งข้อดีและข้อเสีย musl มีจุดเด่นด้านความเบาและความปลอดภัยเมื่อเทียบกับ glibc แต่ก็อาจมีปัญหาด้านความเข้ากันได้กับบางแอปพลิเคชัน จึงควรตรวจสอบความเข้ากันได้ของแอปที่จะใช้งานล่วงหน้า

  • การใช้ ash เป็นเชลล์เริ่มต้นก็เป็นอีกจุดที่น่าสนใจ ash มีความสามารถจำกัดกว่า bash แต่เบาและเร็วมาก จึงน่าจะเหมาะกับสภาพแวดล้อมที่ทรัพยากรจำกัด เช่น ระบบฝังตัว ขณะเดียวกันสำหรับผู้ใช้ทั่วไปก็อาจไม่ค่อยสะดวกนัก

  • หากเป็นผู้ที่ใช้งานระบบปฏิบัติการสาย BSD เป็นหลักอยู่แล้ว Alpine Linux ที่มอบสภาพแวดล้อมคุ้นเคยน่าจะดูมีเสน่ห์ไม่น้อย แต่ดูเหมือนว่าการรองรับสภาพแวดล้อมเดสก์ท็อปยังไม่สมบูรณ์นัก จึงน่าจะเหมาะกับการใช้งานด้านเซิร์ฟเวอร์หรือระบบฝังตัวมากกว่า

  • โดยรวมแล้ว Alpine Linux ดูเป็นดิสทริบิวชันที่เบาและเน้นความปลอดภัยซึ่งมีจุดยืนของตัวเองพอสมควร อย่างไรก็ตาม เนื่องจากระบบนิเวศของมันยังไม่ใหญ่มากนัก เมื่อต้องเจอปัญหาอาจได้รับการสนับสนุนจากชุมชนไม่มากเท่าที่ควร แต่ก็คาดว่าเมื่อเวลาผ่านไป จุดแข็งของ Alpine Linux จะช่วยดึงดูดผู้ใช้เพิ่มขึ้นเรื่อย ๆ

1 ความคิดเห็น

 
GN⁺ 2024-04-28
ความคิดเห็นจาก Hacker News

สรุป:

  • ไบนารีของ Linux ถูกคอมไพล์แบบ PIE (Position Independent Executable) จึงมีความปลอดภัยสูงกว่า

  • GLIBC มีการทำฮีปที่เสริมความแข็งแกร่งมากที่สุด จึงมีฟังก์ชันบรรเทาช่องโหว่ของฮีป เช่น การ free ซ้ำ ได้มากกว่า

  • Alpine ใช้ musl จึงปลอดภัยน้อยกว่า GLIBC อย่างไรก็ตาม ระบบที่เล็กและเข้าใจง่ายก็ช่วยด้านความปลอดภัยได้

  • Illumos (OpenSolaris) ทำให้ทุกอย่างเรียบง่ายขึ้นมากหลังจากใช้ Linux มาหลายสิบปี

  • สิ่งที่เคยทำงานบน Solaris 10 ส่วนใหญ่ยังใช้ได้ถึงปัจจุบันด้วยการแก้ไขเพียงเล็กน้อย

  • zone ดีกว่า Docker container 10 เท่า และมี ZFS ในตัว

  • จัดการบริการด้วย SMF ข้อเสียอย่างเดียวคือคอนฟิกด้วย XML

  • มีการแชร์ประสบการณ์ใช้งานเซิร์ฟเวอร์ OmniOS และ SmartOS

  • ในฐานะผู้ใช้ BSD ได้ลองรัน Alpine บน bhyve เป็นครั้งแรก

  • ด้วยพื้นฐานจาก busybox ยูทิลิตีใน /bin และ /sbin ไม่จำเป็นต้องเป็นไบนารีแยกกัน ทำให้ user space เล็กและบูตได้เร็ว

  • มี tmux และ zsh ก็เพียงพอสำหรับการใช้งานแบบยูนิกซ์ส่วนใหญ่

  • แม้ต้องติดตั้งแพ็กเกจ apk เพิ่มจำนวนมาก แต่โดยรวมแล้วเป็นประสบการณ์ Linux ที่ดีที่สุด

  • อยากให้มี ZFS ในตัวและรองรับ virtio binding สำหรับ bhyve

  • แนะนำ Void Linux ให้ผู้ใช้ BSD เช่นกัน สร้างโดยนักพัฒนา NetBSD มีทั้งเวอร์ชัน glibc และ musl และใช้ runit เป็นระบบ init

  • สามารถ build แพ็กเกจจากซอร์สได้ด้วย xbps-src

  • ไม่ชอบใช้ Alpine เพราะไม่มี man page มาให้โดยค่าเริ่มต้น

  • สงสัยว่ามีตัวเลือกให้ติดตั้งเอกสารอัตโนมัติเมื่อ install แพ็กเกจหรือไม่

  • เคยมีโพสต์เกี่ยวกับประสิทธิภาพของ Alpine บน Docker หลายโพสต์ และแนะนำให้ใช้ Debian/Ubuntu

    • เหตุผลที่ Alpine ช้า: Python ทำงานช้าลง ช้ากว่าอิมเมจ Ubuntu ถึง 50%
    • โพสต์ฝ่ายสนับสนุน Alpine: benchmark เปรียบเทียบประสิทธิภาพกับ Debian
  • สงสัยว่าเนื้อหาเหล่านี้ยังใช้ได้อยู่หรือไม่

  • ไม่เข้าใจว่าเหตุใด OpenRC และสิ่งคล้ายกันจึงน่าสนใจ มองว่าตัวเลือกแบบมี supervisor ดีกว่าการจัดการ PID file

  • ยอมรับว่าการไม่รีสตาร์ตอัตโนมัติเป็นข้อดีอย่างหนึ่ง

  • การพึ่งพา syslog อย่างมากก็เป็นเทคโนโลยียุค 80 เช่นกัน

  • เห็นด้วยว่าควรปรับปรุงมุมมองแบบรวมศูนย์เพื่อดูลำดับเหตุการณ์ของหลายเครื่องมือ

  • ข้อดีของ Alpine: จัดการแพ็กเกจแบบ declarative ได้โดยไม่ต้องใช้ Nix เพียงแก้ไข /etc/apk/world แล้วรัน apk fix

  • Slackware คือทางสายกลางระหว่าง BSD กับ Linux มีความเป็น Unix และไม่ซับซ้อน พร้อมพอร์ตทรีที่อุดมสมบูรณ์ผ่าน Slackbuilds

  • musl ไม่รองรับ pthread_attr_setaffinity_np จึงทำให้ซอฟต์แวร์บางตัว เช่น PyTorch รันไม่ได้