อนาคตอยู่ที่นี่แล้วหรือเขียนโค้ดโดยตรงในเบราว์เซอร์

ฉันจะบอกคุณเกี่ยวกับสถานการณ์ตลกๆ ที่เกิดขึ้นกับฉัน และวิธีเป็นผู้มีส่วนร่วมในโครงการที่มีชื่อเสียง

ไม่นานมานี้ ฉันกำลังแก้ไขแนวคิด: การบูท Linux โดยตรงจาก UEFI...
แนวคิดนี้ไม่ใช่เรื่องใหม่และมีคู่มือจำนวนหนึ่งเกี่ยวกับหัวข้อนี้ คุณสามารถเห็นหนึ่งในนั้น ที่นี่

จริงๆ แล้ว ความพยายามอันยาวนานของฉันในการแก้ไขปัญหานี้ส่งผลให้มีการดำเนินการอย่างเป็นทางการอย่างสมบูรณ์ การตัดสินใจ. วิธีแก้ปัญหาค่อนข้างได้ผลและฉันใช้กับเครื่องที่บ้านบางเครื่อง วิธีแก้ปัญหานี้อธิบายไว้โดยละเอียดอีกเล็กน้อย ที่นี่.

สาระสำคัญของ UEFI-Boot คือพาร์ติชัน ESP (EFI System Partition) ถูกรวมเข้ากับไดเร็กทอรี /boot เหล่านั้น. เคอร์เนลและอิมเมจบูตสแตรปทั้งหมด (initrd) อยู่ในพาร์ติชันเดียวกันซึ่ง UEFI สามารถเรียกใช้ไฟล์ปฏิบัติการได้และโดยเฉพาะอย่างยิ่งเรียกใช้บูตโหลดเดอร์ระบบ แต่เคอร์เนล Linux เองในหลาย ๆ ดิสทริบิวชั่นนั้นได้ประกอบเข้ากับตัวเลือก UEFISTUB แล้วซึ่งทำให้เคอร์เนลสามารถเปิดใช้งานจาก UEFI ได้

วิธีแก้ไขปัญหานี้มีช่วงเวลาที่ไม่พึงประสงค์อย่างหนึ่ง - พาร์ติชัน ESP ได้รับการฟอร์แมตเป็น FAT32 ซึ่งไม่สามารถสร้างฮาร์ดลิงก์ได้ (ซึ่งระบบจะสร้างเป็นประจำเมื่ออัปเดต initrd) และไม่มีอะไรที่ผิดกฎหมายเป็นพิเศษเกี่ยวกับเรื่องนี้ แต่การเห็นคำเตือนของระบบเมื่ออัปเดตส่วนประกอบเคอร์เนลนั้นไม่น่าพอใจนัก...

มีอีกวิธีหนึ่ง

ตัวจัดการการบูต UEFI (ตัวเดียวกับที่คุณต้องลงทะเบียน OS bootloader) นอกจาก bootloaders/Linux kernel แล้ว ยังสามารถโหลดไดรเวอร์ได้อีกด้วย ดังนั้นคุณจึงสามารถโหลดไดรเวอร์สำหรับระบบไฟล์ที่คุณมี /boot และโหลดเคอร์เนลได้โดยตรงจากที่นั่นโดยใช้ UEFI แน่นอนว่าต้องวางไดรเวอร์ไว้ในพาร์ติชัน ESP นี่คือสิ่งที่ bootloaders อย่าง GRUB ทำโดยประมาณ แต่จุดเด่นคือฟังก์ชัน GRUB ที่ใช้บ่อยทั้งหมดมีอยู่ใน UEFI แล้ว แม่นยำยิ่งขึ้นในตัวจัดการการดาวน์โหลด และที่น่าเบื่อยิ่งกว่านั้นคือตัวจัดการการบูต UEFI มีความสามารถเพิ่มเติมในบางเรื่อง

ดูเหมือนจะเป็นวิธีแก้ปัญหาที่สวยงาม แต่มี "แต่" อย่างหนึ่ง (หรือค่อนข้างจะเป็น แต่จะเพิ่มเติมในภายหลัง) ความจริงก็คือระบบไดรเวอร์ UEFI นั้นค่อนข้างง่าย ไม่มีสิ่งที่เรียกว่าการติดตั้งระบบไฟล์หรือการเชื่อมโยงไดรเวอร์กับอุปกรณ์เฉพาะ มีการเรียกระบบด้วยชื่อปกติ Map ซึ่งจะนำไดรเวอร์แต่ละตัวมาสลับกันและพยายามเชื่อมโยงกับอุปกรณ์ทั้งหมดอย่างน้อยที่สุดที่เหมาะสม และหากผู้ขับขี่สามารถรับอุปกรณ์ได้ ระบบจะสร้างแผนที่ซึ่งเป็นบันทึกการเชื่อมต่อ นี่คือวิธีการเริ่มต้นไดรเวอร์ที่เพิ่งโหลดใหม่ในฮีปร่วมกับฮีปอื่นๆ ทั้งหมด และสิ่งที่คุณต้องมีคือตั้งค่าหนึ่งบิต (LOAD_OPTION_FORCE_RECONNECT) เป็น 1 ในบันทึกการบูตไดรเวอร์ และ UEFI จะทำการรีแมปทั่วโลกนี้หลังจากโหลดแล้ว

แต่นี่ไม่ใช่เรื่องง่ายที่จะทำ ยูทิลิตี้ efibootmgr มาตรฐาน (ซึ่งใช้ในการกำหนดค่า UEFI offload manager) ไม่รู้ว่าจะตั้งค่าบิตนี้อย่างไร (หรือไม่รู้วิธี) ฉันต้องติดตั้งมันด้วยตนเองผ่านขั้นตอนที่ค่อนข้างซับซ้อนและอันตราย

และอีกครั้งที่พยายามทำมันด้วยมือของฉันฉันก็ทนไม่ได้และเป็นทางการ ปัญหาบน GitHub ขอให้นักพัฒนาเพิ่มคุณสมบัตินี้

หลายวันผ่านไป แต่ไม่มีใครสนใจคำขอของฉัน และด้วยความอยากรู้อยากเห็น ฉันจึงดูซอร์สโค้ด... ฉันแยกมันออก และคิดออกว่าจะเพิ่มฟีเจอร์นี้ได้อย่างไร... “คุกเข่าลง” เพราะฉันไม่ได้ติดตั้งอะไรแบบนั้นและแก้ไขซอร์ส รหัสโดยตรงในเบราว์เซอร์

ฉันรู้จัก C (ภาษาโปรแกรม) อย่างผิวเผินมาก แต่ฉันร่างวิธีแก้ปัญหาโดยประมาณ (ส่วนใหญ่เป็นการคัดลอกและวาง)... แล้วฉันก็คิดว่า - อย่างน้อยฉันก็อาจมีข้อผิดพลาดมากมายที่นั่น (ความพยายามในอดีตของฉันที่จะแก้ไขของคนอื่น รหัส C เสร็จสมบูรณ์ประมาณครั้งที่ 10) ฉันจะออกคำขอดึง ดี ได้รับการออกแบบ.

และที่นั่น Travis CI ก็ถูกแนบมาเพื่อตรวจสอบคำขอดึง และเขาขยันบอกฉันเกี่ยวกับข้อผิดพลาดทั้งหมดของฉัน หากมีข้อผิดพลาดที่ทราบก็ไม่จำเป็นต้องแก้ไข: อีกครั้งในเบราว์เซอร์และในความพยายามครั้งที่สี่โค้ดก็ใช้งานได้ (เป็นความสำเร็จสำหรับฉัน)

และเช่นนั้น โดยไม่ต้องออกจากเบราว์เซอร์ ฉันได้จัดรูปแบบ Pull Request จริง ๆ ให้เป็นยูทิลิตี้ที่ใช้ใน Linux รุ่นใหม่เกือบทั้งหมด

ฉันรู้สึกประหลาดใจกับความจริงที่ว่า โดยที่ไม่รู้ภาษาจริงๆ และไม่ได้ตั้งค่าอะไรเลย (การพึ่งพาต้องใช้ไลบรารีไม่กี่ตัวในการประกอบ) และโดยที่ไม่เคยรันคอมไพเลอร์เลย ฉันแค่ "เขียนโค้ด" ฟีเจอร์ที่ใช้งานได้อย่างสมบูรณ์และมีประโยชน์ใน เบราว์เซอร์

อย่างไรก็ตาม คำขอของฉันยังคงไม่ตอบสนองตั้งแต่วันที่ 19 มีนาคม 2019 และฉันเริ่มลืมมันไปแล้ว

แต่เมื่อวานนี้คำขอนี้ถูกเพิ่มเป็นอาจารย์

แล้วเรื่องราวของฉันเกี่ยวกับอะไร? และเขากำลังพูดถึงความจริงที่ว่าภายในกรอบของเทคโนโลยีสมัยใหม่ ปรากฎว่าสามารถเขียนโค้ดจริงในเบราว์เซอร์ได้แล้ว โดยไม่ต้องใช้เครื่องมือการพัฒนาและการพึ่งพาใด ๆ ในเครื่อง

ยิ่งกว่านั้นฉันต้องยอมรับว่านี่เป็นคำขอดึงครั้งที่สองของฉันสำหรับยูทิลิตี้ที่รู้จักกันดี (อย่างน้อยในแวดวงแคบ) ครั้งล่าสุด คำขอของฉันให้แก้ไขการแสดงบางฟิลด์ในอินเทอร์เฟซเว็บ SyncThing ส่งผลให้ฉันแก้ไขบรรทัดเดียวอย่างแท้จริงในสภาพแวดล้อมที่ฉันไม่รู้เลย

เฉพาะผู้ใช้ที่ลงทะเบียนเท่านั้นที่สามารถเข้าร่วมในการสำรวจได้ เข้าสู่ระบบ, โปรด.

ฉันควรเขียนเพิ่มหรือไม่?

  • ใช่

  • ไม่คุ้มค่า

ผู้ใช้ 294 คนโหวต ผู้ใช้ 138 รายงดออกเสียง

ที่มา: will.com

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