การเปิดตัวเคอร์เนล Linux 5.17

หลังจากสองเดือนของการพัฒนา Linus Torvalds ได้เปิดตัว Linux kernel 5.17 การเปลี่ยนแปลงที่โดดเด่นที่สุด ได้แก่ ระบบการจัดการประสิทธิภาพใหม่สำหรับโปรเซสเซอร์ AMD ความสามารถในการแมป ID ผู้ใช้ในระบบไฟล์แบบวนซ้ำ รองรับโปรแกรม BPF ที่คอมไพล์แบบพกพา การเปลี่ยนเครื่องกำเนิดตัวเลขสุ่มหลอกไปเป็นอัลกอริธึม BLAKE2s ยูทิลิตี้ RTLA สำหรับการวิเคราะห์การดำเนินการแบบเรียลไทม์ แบ็กเอนด์ fscache ใหม่สำหรับระบบไฟล์เครือข่ายแคช ความสามารถในการแนบชื่อกับการดำเนินการ mmap ที่ไม่ระบุชื่อ

เวอร์ชันใหม่ประกอบด้วยการแก้ไข 14203 รายการจากนักพัฒนา 1995 คน ขนาดแพตช์คือ 37 MB (การเปลี่ยนแปลงส่งผลกระทบต่อไฟล์ 11366 ไฟล์ เพิ่มโค้ด 506043 บรรทัด และลบ 250954 บรรทัด) ประมาณ 44% ของการเปลี่ยนแปลงทั้งหมดที่นำมาใช้ใน 5.17 เกี่ยวข้องกับไดรเวอร์อุปกรณ์ ประมาณ 16% ของการเปลี่ยนแปลงเกี่ยวข้องกับการอัปเดตโค้ดเฉพาะสำหรับสถาปัตยกรรมฮาร์ดแวร์ 15% เกี่ยวข้องกับสแต็กเครือข่าย 4% เกี่ยวข้องกับระบบไฟล์ และ 4% เกี่ยวข้องกับระบบย่อยเคอร์เนลภายใน

นวัตกรรมที่สำคัญในเคอร์เนล 5.17:

  • ระบบย่อยของดิสก์ I/O และระบบไฟล์
    • นำความเป็นไปได้ของการแมปซ้อนของ ID ผู้ใช้ของระบบไฟล์ที่เมาท์ ใช้เพื่อเปรียบเทียบไฟล์ของผู้ใช้เฉพาะบนพาร์ติชันต่างประเทศที่เมาท์กับผู้ใช้รายอื่นในระบบปัจจุบัน คุณลักษณะที่เพิ่มเข้ามาช่วยให้คุณสามารถใช้การแมปซ้ำๆ ที่ด้านบนของระบบไฟล์ที่ใช้การแมปอยู่แล้ว
    • ระบบย่อย fscache ที่ใช้ในการจัดระเบียบแคชในระบบไฟล์โลคัลของข้อมูลที่ถ่ายโอนผ่านระบบไฟล์เครือข่าย ได้รับการเขียนใหม่ทั้งหมด การใช้งานใหม่นี้โดดเด่นด้วยการลดความซับซ้อนของโค้ดอย่างมีนัยสำคัญ และการแทนที่การดำเนินการที่ซับซ้อนของการวางแผนและการติดตามสถานะออบเจ็กต์ด้วยกลไกที่ง่ายกว่า รองรับ fscache ใหม่ในระบบไฟล์ CIFS
    • ระบบย่อยการติดตามเหตุการณ์ใน fanotify FS จะใช้เหตุการณ์ประเภทใหม่ FAN_RENAME ซึ่งช่วยให้คุณสามารถสกัดกั้นการดำเนินการเปลี่ยนชื่อไฟล์หรือไดเร็กทอรีได้ทันที (ก่อนหน้านี้ FAN_MOVED_FROM และ FAN_MOVED_TO สองเหตุการณ์ที่แยกจากกันถูกนำมาใช้ในการประมวลผลการเปลี่ยนชื่อ)
    • ระบบไฟล์ Btrfs ได้เพิ่มประสิทธิภาพการบันทึกและการดำเนินการ fsync สำหรับไดเร็กทอรีขนาดใหญ่ ซึ่งใช้งานโดยการคัดลอกเฉพาะคีย์ดัชนีและลดจำนวนเมตาดาต้าที่บันทึกไว้ มีการรองรับการจัดทำดัชนีและการค้นหาตามขนาดของบันทึกพื้นที่ว่าง ซึ่งลดเวลาแฝงลงประมาณ 30% และลดเวลาในการค้นหา ได้รับอนุญาตให้ขัดจังหวะการดำเนินการจัดเรียงข้อมูล ความสามารถในการเพิ่มอุปกรณ์เมื่อปิดใช้งานการปรับสมดุลระหว่างไดรฟ์เช่น เมื่อติดตั้งระบบไฟล์ด้วยตัวเลือก skip_balance
    • มีการเสนอไวยากรณ์ใหม่สำหรับการติดตั้งระบบไฟล์ Ceph เพื่อแก้ไขปัญหาที่มีอยู่ที่เกี่ยวข้องกับการเชื่อมโยงกับที่อยู่ IP นอกเหนือจากที่อยู่ IP แล้ว ตอนนี้คุณสามารถใช้ตัวระบุคลัสเตอร์ (FSID) เพื่อระบุเซิร์ฟเวอร์ได้: mount -t ceph [ป้องกันอีเมล]_name=/[subdir] mnt -o mon_addr=monip1[:พอร์ต][/monip2[:พอร์ต]]
    • ระบบไฟล์ Ext4 ได้ย้ายไปยัง API การติดตั้งใหม่ที่แยกการแยกวิเคราะห์ตัวเลือกการเมานต์และขั้นตอนการกำหนดค่า superblock เราได้ยกเลิกการรองรับตัวเลือกการเมานต์ Lazytime และ Nolazytime ซึ่งเพิ่มเข้ามาเป็นการเปลี่ยนแปลงชั่วคราวเพื่อความสะดวกในการเปลี่ยน util-linux เพื่อใช้แฟล็ก MS_LAZYTIME เพิ่มการสนับสนุนสำหรับการตั้งค่าและการอ่านฉลากใน FS (ioctl FS_IOC_GETFSLABEL และ FS_IOC_SETFSLABEL)
    • NFSv4 เพิ่มการสนับสนุนสำหรับการทำงานในระบบไฟล์ที่ไม่คำนึงถึงขนาดตัวพิมพ์ในชื่อไฟล์และไดเร็กทอรี NFSv4.1+ เพิ่มการรองรับสำหรับการกำหนดเซสชันรวม (trunking)
  • บริการหน่วยความจำและระบบ
    • เพิ่มไดรเวอร์ amd-pstate เพื่อให้การควบคุมความถี่แบบไดนามิกเพื่อประสิทธิภาพสูงสุด ไดรเวอร์ดังกล่าวรองรับ CPU และ APU ของ AMD ตั้งแต่รุ่น Zen 2 ซึ่งพัฒนาร่วมกับ Valve และมีเป้าหมายเพื่อปรับปรุงประสิทธิภาพการจัดการพลังงาน สำหรับการเปลี่ยนแปลงความถี่ที่ปรับเปลี่ยนได้ จะใช้กลไก CPPC (การควบคุมประสิทธิภาพของโปรเซสเซอร์ที่ทำงานร่วมกัน) ซึ่งช่วยให้คุณเปลี่ยนตัวบ่งชี้ได้แม่นยำยิ่งขึ้น (ไม่ จำกัด เพียงสามระดับประสิทธิภาพ) และตอบสนองต่อการเปลี่ยนแปลงสถานะได้เร็วกว่า P-state ที่ใช้ ACPI ที่ใช้ก่อนหน้านี้ ไดรเวอร์ (CPUFreq)
    • ระบบย่อย eBPF มีตัวจัดการ bpf_loop() ซึ่งให้ทางเลือกอื่นในการจัดระเบียบลูปในโปรแกรม eBPF รวดเร็วและง่ายขึ้นสำหรับการตรวจสอบโดยผู้ตรวจสอบ
    • ในระดับเคอร์เนลมีการใช้กลไก CO-RE (คอมไพล์ครั้งเดียว - เรียกใช้ทุกที่) ซึ่งช่วยให้คุณสามารถรวบรวมโค้ดของโปรแกรม eBPF ได้เพียงครั้งเดียวและใช้ตัวโหลดสากลพิเศษที่ปรับโปรแกรมที่โหลดให้เข้ากับเคอร์เนลปัจจุบันและประเภท BTF (รูปแบบประเภท BPF)
    • สามารถกำหนดชื่อให้กับพื้นที่ของหน่วยความจำส่วนตัวที่ไม่ระบุชื่อ (จัดสรรผ่าน malloc) ซึ่งสามารถลดความยุ่งยากในการดีบักและเพิ่มประสิทธิภาพการใช้หน่วยความจำในแอปพลิเคชัน ชื่อถูกกำหนดผ่าน prctl ด้วยแฟล็ก PR_SET_VMA_ANON_NAME และแสดงใน /proc/pid/maps และ /proc/pid/smaps ในรูปแบบ "[anon: ]"
    • ตัวกำหนดเวลางานจัดให้มีการติดตามและการแสดงผลใน /proc/PID/sched เวลาที่ใช้โดยกระบวนการในสถานะบังคับไม่ได้ใช้งาน เช่น ใช้เพื่อลดโหลดเมื่อโปรเซสเซอร์ร้อนเกินไป
    • เพิ่มโมดูล gpio-sim ซึ่งออกแบบมาเพื่อจำลองชิป GPIO สำหรับการทดสอบ
    • เพิ่มคำสั่งย่อย "latency" ให้กับคำสั่ง "perf ftrace" เพื่อสร้างฮิสโตแกรมพร้อมข้อมูลเวลาแฝง
    • เพิ่มชุดยูทิลิตี้ “RTLA” สำหรับการวิเคราะห์งานแบบเรียลไทม์ ประกอบด้วยยูทิลิตี้เช่น osnoise (กำหนดอิทธิพลของระบบปฏิบัติการต่อการปฏิบัติงาน) และตัวจับเวลา (เปลี่ยนความล่าช้าที่เกี่ยวข้องกับตัวจับเวลา)
    • แพตช์ชุดที่สองได้รับการรวมเข้ากับการนำแนวคิดของเพจโฟลิโอมาใช้ ซึ่งคล้ายกับเพจแบบผสม แต่มีการปรับปรุงอรรถศาสตร์และการจัดระเบียบงานที่ชัดเจนยิ่งขึ้น การใช้ Tomes ช่วยให้คุณเร่งความเร็วการจัดการหน่วยความจำในระบบย่อยเคอร์เนลบางระบบได้ แพตช์ที่นำเสนอเสร็จสิ้นการแปลงแคชของเพจเป็นการใช้ Tomes และเพิ่มการสนับสนุนเบื้องต้นสำหรับ Tomes ในระบบไฟล์ XFS
    • เพิ่มโหมดการสร้าง "make mod2noconfig" ซึ่งสร้างการกำหนดค่าที่รวบรวมระบบย่อยที่ปิดใช้งานทั้งหมดในรูปแบบของโมดูลเคอร์เนล
    • ข้อกำหนดสำหรับเวอร์ชันของ LLVM/Clang ที่สามารถใช้สร้างเคอร์เนลได้ถูกเพิ่มสูงขึ้น Build ตอนนี้ต้องการรีลีส LLVM 11 เป็นอย่างน้อย
  • การจำลองเสมือนและความปลอดภัย
    • มีการเสนอการใช้งานที่อัปเดตของตัวสร้างตัวเลขสุ่มหลอก RDRAND ซึ่งรับผิดชอบการทำงานของอุปกรณ์ /dev/random และ /dev/urandom โดยมีความโดดเด่นในเรื่องการเปลี่ยนไปใช้ฟังก์ชันแฮช BLAKE2s แทน SHA1 สำหรับการดำเนินการผสมเอนโทรปี การเปลี่ยนแปลงนี้ปรับปรุงความปลอดภัยของตัวสร้างตัวเลขสุ่มหลอกโดยกำจัดอัลกอริทึม SHA1 ที่เป็นปัญหาและกำจัดการเขียนทับเวกเตอร์การเริ่มต้น RNG เนื่องจากอัลกอริทึม BLAKE2s เหนือกว่า SHA1 ในด้านประสิทธิภาพ การใช้งานจึงส่งผลเชิงบวกต่อประสิทธิภาพด้วย
    • เพิ่มการป้องกันช่องโหว่ในโปรเซสเซอร์ที่เกิดจากการดำเนินการคำสั่งแบบเก็งกำไรหลังจากการดำเนินการข้ามไปข้างหน้าแบบไม่มีเงื่อนไข ปัญหาเกิดขึ้นเนื่องจากการประมวลผลคำสั่งล่วงหน้าทันทีตามคำสั่งสาขาในหน่วยความจำ (SLS, Straight Line Speculation) การเปิดใช้งานการป้องกันจำเป็นต้องสร้างด้วย GCC 12 รุ่นทดสอบในปัจจุบัน
    • เพิ่มกลไกสำหรับการติดตามการนับการอ้างอิง (การนับซ้ำ การนับการอ้างอิง) มุ่งเป้าไปที่การลดจำนวนข้อผิดพลาดในการนับการอ้างอิงที่นำไปสู่การเข้าถึงหน่วยความจำหลังจากที่ถูกปลดปล่อยแล้ว ปัจจุบันกลไกนี้จำกัดอยู่ที่ระบบย่อยเครือข่าย แต่ในอนาคตจะสามารถปรับให้เข้ากับส่วนอื่นๆ ของเคอร์เนลได้
    • มีการขยายการตรวจสอบรายการใหม่ในตารางหน้าหน่วยความจำกระบวนการ ช่วยให้สามารถตรวจจับความเสียหายบางประเภทและหยุดระบบ โดยบล็อกการโจมตีตั้งแต่ระยะแรก
    • เพิ่มความสามารถในการแยกโมดูลเคอร์เนลโดยตรงจากเคอร์เนลเอง และไม่ใช่โดยตัวจัดการในพื้นที่ผู้ใช้ ซึ่งอนุญาตให้ใช้โมดูล LoadPin LSM เพื่อให้แน่ใจว่าโมดูลเคอร์เนลถูกโหลดลงในหน่วยความจำจากอุปกรณ์จัดเก็บข้อมูลที่ได้รับการตรวจสอบแล้ว
    • จัดเตรียมแอสเซมบลีด้วยแฟล็ก "-Wcast-function-type" ซึ่งเปิดใช้งานคำเตือนเกี่ยวกับตัวชี้ฟังก์ชันการส่งเป็นประเภทที่เข้ากันไม่ได้
    • เพิ่มไดรเวอร์โฮสต์เสมือน pvUSB สำหรับไฮเปอร์ไวเซอร์ Xen ซึ่งให้การเข้าถึงอุปกรณ์ USB ที่ส่งต่อไปยังระบบเกสต์ (อนุญาตให้ระบบเกสต์เข้าถึงอุปกรณ์ USB จริงที่กำหนดให้กับระบบเกสต์)
    • มีการเพิ่มโมดูลที่ช่วยให้คุณสามารถโต้ตอบผ่าน Wi-Fi ด้วยระบบย่อย IME (Intel Management Engine) ซึ่งมาในมาเธอร์บอร์ดสมัยใหม่ส่วนใหญ่ที่มีโปรเซสเซอร์ Intel และใช้งานเป็นไมโครโปรเซสเซอร์แยกต่างหากที่ทำงานโดยอิสระจาก CPU
    • สำหรับสถาปัตยกรรม ARM64 มีการรองรับเครื่องมือแก้ไขจุดบกพร่อง KCSAN (Kernel Concurrency Sanitizer) ซึ่งออกแบบมาเพื่อตรวจจับสภาวะการแข่งขันภายในเคอร์เนลแบบไดนามิก
    • สำหรับระบบ ARM 32 บิต ได้มีการเพิ่มความสามารถในการใช้กลไก KFENCE เพื่อตรวจจับข้อผิดพลาดเมื่อทำงานกับหน่วยความจำ
    • ไฮเปอร์ไวเซอร์ KVM เพิ่มการรองรับคำสั่ง AMX (Advanced Matrix Extensions) ที่ใช้งานในโปรเซสเซอร์เซิร์ฟเวอร์ Intel Xeon Scalable ที่กำลังจะมาถึง
  • ระบบย่อยของเครือข่าย
    • เพิ่มการสนับสนุนสำหรับการดำเนินการถ่ายข้อมูลที่เกี่ยวข้องกับการจัดการการรับส่งข้อมูลไปยังด้านข้างของอุปกรณ์เครือข่าย
    • เพิ่มความสามารถในการใช้ MCTP (Management Component Transport Protocol) บนอุปกรณ์อนุกรม MCTP สามารถใช้เพื่อสื่อสารระหว่างตัวควบคุมการจัดการและอุปกรณ์ที่เกี่ยวข้อง (โปรเซสเซอร์โฮสต์ อุปกรณ์ต่อพ่วง ฯลฯ)
    • สแต็ค TCP ได้รับการปรับให้เหมาะสม ตัวอย่างเช่น เพื่อปรับปรุงประสิทธิภาพของการเรียก recvmsg มีการใช้บัฟเฟอร์ซ็อกเก็ตที่ล่าช้า
    • ที่ระดับสิทธิ์ CAP_NET_RAW อนุญาตให้ตั้งค่าโหมด SO_PRIORITY และ SO_MARK ผ่านฟังก์ชัน setsockopt
    • สำหรับ IPv4 ซ็อกเก็ตดิบจะได้รับอนุญาตให้ผูกกับที่อยู่ IP ที่ไม่ใช่ภายในเครื่องได้โดยใช้ตัวเลือก IP_FREEBIND และ IP_TRANSPARENT
    • เพิ่ม sysctl arp_missed_max เพื่อกำหนดค่าจำนวนเกณฑ์ของความล้มเหลวในระหว่างการตรวจสอบจอภาพ ARP หลังจากนั้นอินเทอร์เฟซเครือข่ายจะอยู่ในสถานะปิดใช้งาน
    • ให้ความสามารถในการกำหนดค่า sysctl min_pmtu และ mtu_expires แยกกันสำหรับเนมสเปซเครือข่าย
    • เพิ่มความสามารถในการตั้งค่าและกำหนดขนาดของบัฟเฟอร์สำหรับแพ็กเก็ตขาเข้าและขาออกไปยัง ethtool API
    • Netfilter ได้เพิ่มการสนับสนุนสำหรับการกรองการรับส่งข้อมูล pppoe ของการขนส่งในบริดจ์เครือข่าย
    • โมดูล ksmbd ซึ่งใช้งานไฟล์เซิร์ฟเวอร์โดยใช้โปรโตคอล SMB3 ได้เพิ่มการรองรับสำหรับการแลกเปลี่ยนคีย์ เปิดใช้งานพอร์ตเครือข่าย 445 สำหรับ smbdirect และเพิ่มการรองรับพารามิเตอร์ “smb2 max credit”
  • Оборудование
    • เพิ่มการรองรับหน้าจอสำหรับการแสดงข้อมูลที่เป็นความลับในระบบย่อย drm (Direct Renderering Manager) และไดรเวอร์ i915 ตัวอย่างเช่น แล็ปท็อปบางรุ่นมีหน้าจอที่มีโหมดการรับชมที่เป็นความลับในตัว ทำให้ยากต่อการดูจากภายนอก . การเปลี่ยนแปลงที่เพิ่มเข้ามาทำให้คุณสามารถเชื่อมต่อไดรเวอร์เฉพาะสำหรับหน้าจอดังกล่าวและควบคุมโหมดการเรียกดูที่เป็นความลับโดยการตั้งค่าคุณสมบัติในไดรเวอร์ KMS ปกติ
    • ไดรเวอร์ amdgpu รองรับเทคโนโลยีการดีบัก STB (Smart Trace Buffer) สำหรับ GPU AMD ทั้งหมดที่รองรับ STB ช่วยให้วิเคราะห์ความล้มเหลวได้ง่ายขึ้นและระบุแหล่งที่มาของปัญหาโดยจัดเก็บข้อมูลบัฟเฟอร์พิเศษเกี่ยวกับฟังก์ชันที่ทำก่อนเกิดความล้มเหลวครั้งล่าสุด
    • ไดรเวอร์ i915 เพิ่มการรองรับชิป Intel Raptor Lake S และเปิดใช้งานการรองรับระบบย่อยกราฟิกของชิป Intel Alder Lake P เป็นค่าเริ่มต้น สามารถควบคุมแสงพื้นหลังของหน้าจอผ่านอินเทอร์เฟซ VESA DPCD
    • การสนับสนุนสำหรับการเร่งความเร็วการเลื่อนด้วยฮาร์ดแวร์ในคอนโซลได้รับการส่งคืนในไดรเวอร์ fbcon/fbdev
    • บูรณาการการเปลี่ยนแปลงอย่างต่อเนื่องเพื่อรองรับชิป Apple M1 นำความสามารถในการใช้ไดรเวอร์ simpledrm ไปใช้งานบนระบบที่มีชิป Apple M1 สำหรับเอาต์พุตผ่านเฟรมบัฟเฟอร์ที่เฟิร์มแวร์ให้มา
    • เพิ่มการรองรับ ARM SoС อุปกรณ์และบอร์ด Snapdragon 7c, 845 และ 888 (Sony Xperia XZ2 / XZ2C / XZ3, Xperia 1 III / 5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek MT8183 ( Acer Chromebook 314), Mediatek MT7986a/b (ใช้ในเราเตอร์ Wi-fi), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEAr320s, NXP i.MX8 ULP8 , Aspeed AST2500/AST2600, Engicam i.Core STM32MP1, Allwinner Tanix TX6, Facebook Bletchley BMC, Goramo MultiLink, จุดเชื่อมต่อ JOZ, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16
    • เพิ่มการรองรับโปรเซสเซอร์ ARM Cortex-M55 และ Cortex-M33
    • เพิ่มการรองรับอุปกรณ์ที่ใช้ CPU MIPS: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2
    • เพิ่มการรองรับ StarFive JH7100 SoC ที่ใช้สถาปัตยกรรม RISC-V
    • เพิ่มไดรเวอร์ lenovo-yogabook-wmi เพื่อควบคุมไฟแบ็คไลท์ของคีย์บอร์ดและเข้าถึงเซ็นเซอร์ต่างๆ ใน ​​Lenovo Yoga Book
    • เพิ่มไดรเวอร์ asus_wmi_sensors เพื่อเข้าถึงเซ็นเซอร์ที่ใช้กับเมนบอร์ด Asus X370, X470, B450, B550 และ X399 ที่ใช้โปรเซสเซอร์ AMD Ryzen
    • เพิ่มไดรเวอร์ x86-android-tablets สำหรับแท็บเล็ตพีซีที่ใช้ x86 ที่มาพร้อมกับแพลตฟอร์ม Android
    • เพิ่มการรองรับหน้าจอสัมผัส TrekStor SurfTab duo W1 และปากกาอิเล็กทรอนิกส์สำหรับแท็บเล็ต Chuwi Hi10 Plus และ Pro
    • ไดรเวอร์สำหรับ SoC Tegra 20/30 ได้เพิ่มการรองรับการจัดการพลังงานและแรงดันไฟฟ้า ช่วยให้สามารถบู๊ตบนอุปกรณ์ Tegra SoC รุ่นเก่า 32 บิต เช่น ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 และ Pad TF300TG
    • เพิ่มไดรเวอร์สำหรับคอมพิวเตอร์อุตสาหกรรมของ Siemens
    • เพิ่มการรองรับสำหรับ Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA และแผง LCD Team Source Display TST043015CMHX
    • เพิ่มการรองรับระบบเสียงและตัวแปลงสัญญาณ AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, ระบบ Intel ที่ใช้ NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx ปัญหาเกี่ยวกับ Tegra194 HD-audio ได้รับการแก้ไขแล้ว เพิ่มการรองรับ HDA สำหรับตัวแปลงสัญญาณ CS35L41 ปรับปรุงการรองรับระบบเสียงสำหรับแล็ปท็อป Lenovo และ HP รวมถึงเมนบอร์ด Gigabyte

ที่มา: opennet.ru

เพิ่มความคิดเห็น