የወደፊቱ ቀድሞውኑ እዚህ አለ ወይም በቀጥታ በአሳሹ ውስጥ ኮድ ያድርጉ

በእኔ ላይ ስለደረሰው አስቂኝ ሁኔታ እና እንዴት ለታዋቂ ፕሮጀክት አስተዋፅዖ እንደምሆን እነግራችኋለሁ።

ብዙም ሳይቆይ አንድ ሀሳብ እያነሳሁ ነበር፡ ሊኑክስን በቀጥታ ከUEFI ማስነሳት...
ሀሳቡ አዲስ አይደለም እና በዚህ ርዕስ ላይ በርካታ መመሪያዎች አሉ. ከመካከላቸው አንዱን ማየት ይችላሉ እዚህ

በእውነቱ፣ ይህንን ችግር ለመፍታት ያደረኩት የረጅም ጊዜ ሙከራ ሙሉ በሙሉ መደበኛ እንዲሆን አስችሏል። መፍትሄ. መፍትሄው በጣም እየሰራ ነው እና በአንዳንድ የቤቴ ማሽኖች ላይ እጠቀማለሁ። ይህ መፍትሔ በትንሹ በዝርዝር ተገልጿል. እዚህ.

የ UEFI-Boot ይዘት የESP (EFI System Partition) ክፍልፍል ከ/ቡት ማውጫ ጋር መጣመሩ ነው። እነዚያ። ሁሉም የከርነሎች እና የቡት ስታራፕ ምስሎች (initrd) UEFI ሊተገበሩ የሚችሉ ፋይሎችን ማስጀመር እና በተለይም የስርዓት ማስነሻ ጫኚዎችን ማስጀመር በሚችልበት በተመሳሳይ ክፍል ላይ ይገኛሉ። ግን የሊኑክስ ከርነል እራሱ በብዙ ስርጭቶች ውስጥ ቀድሞውኑ ከ UEFISTUB አማራጭ ጋር ተሰብስቧል ፣ ይህም ኮርነሉን ከ UEFI እንዲያሄዱ ያስችልዎታል።

ይህ መፍትሔ አንድ ደስ የማይል ጊዜ አለው - የ ESP ክፍልፍል በ FAT32 ውስጥ ተቀርጿል, በዚህ ላይ ጠንካራ አገናኞችን ለመፍጠር የማይቻል ነው (ይህም initrd ን ሲያዘምን ስርዓቱ በመደበኛነት ይፈጥራል). እና በዚህ ላይ ምንም የተለየ ወንጀለኛ የለም፣ ነገር ግን የከርነል ክፍሎችን ሲያዘምኑ የስርዓት ማስጠንቀቂያዎችን ማየት በጣም አስደሳች አይደለም…

ሌላ መንገድ አለ.

የ UEFI ማስነሻ ሥራ አስኪያጅ (የስርዓተ ክወናውን ማስነሻ መመዝገብ የሚያስፈልግበት ተመሳሳይ ነው) ከቡት ጫኚዎች/Linux kernels በተጨማሪ ነጂዎችን መጫን ይችላል። ስለዚህ ሾፌሩን ለፋይል ሲስተም መጫን / ማስነሳት እና UEFI ን በመጠቀም ከርነሉን በቀጥታ ከዚያ መጫን ይችላሉ። እርግጥ ነው, አሽከርካሪው በ ESP ክፍልፍል ውስጥ መቀመጥ አለበት. ይህ በግምት እንደ GRUB ያሉ ቡት ጫኚዎች የሚያደርጉት ነው። ግን ዋናው ነገር ሁሉም በተደጋጋሚ ጥቅም ላይ የዋሉ የ GRUB ተግባራት ቀድሞውኑ በ UEFI ውስጥ መሆናቸው ነው። በአውርድ አቀናባሪው ውስጥ የበለጠ በትክክል። እና የበለጠ አሰልቺ ለመሆን የ UEFI ቡት አስተዳዳሪ በአንዳንድ ጉዳዮች ላይ የበለጠ ችሎታዎች አሉት።

በጣም ቆንጆ መፍትሄ ይመስላል, ግን አንድ "BUT" አለ (ወይም ይልቁንስ ነበር, ግን በኋላ ላይ ተጨማሪ). እውነታው ግን የ UEFI አሽከርካሪ ስርዓት በጣም ቀላል ነው. የፋይል ሲስተም መጫን ወይም ነጂውን ከአንድ የተወሰነ መሳሪያ ጋር ማያያዝ የመሰለ ነገር የለም። እያንዳንዱን ሾፌር በተራ የሚወስድ እና ቢያንስ ተስማሚ ከሆኑ መሳሪያዎች ጋር ለማያያዝ የሚሞክር የተለመደው ካርታ ያለው የስርዓት ጥሪ አለ። እና አሽከርካሪው መሳሪያውን ማንሳት ከቻለ, ካርታ ተፈጥሯል - የግንኙነት መዝገብ. አዲስ የተጫነው አሽከርካሪ ከሌሎቹ ሁሉ ጋር በጋራ ክምር መጀመር ያለበት በዚህ መንገድ ነው። እና የሚያስፈልግህ አንድ ቢት (LOAD_OPTION_FORCE_RECONNECT) ወደ 1 በአሽከርካሪ ቡት ሪከርድ ውስጥ ማቀናበር ብቻ ነው እና UEFI ከጫነ በኋላ ይህን አለምአቀፍ remap ያደርጋል።

ግን ይህን ለማድረግ ቀላል አይደለም. መደበኛው efibootmgr መገልገያ (የ UEFI መልቀቅ አቀናባሪን ለማዋቀር ጥቅም ላይ የሚውለው) ይህንን ቢት እንዴት (ወይም እንዴት እንደሆነ አያውቅም) አያውቅም። በጣም ውስብስብ እና አደገኛ በሆነ ሂደት ውስጥ በእጅ መጫን ነበረብኝ.

እና እንደገና፣ በእጆቼ ለመስራት ሞክሬ፣ መቆም አልቻልኩም እና መደበኛ ማድረግ አልቻልኩም በ GitHub ላይ ችግር ይህን ባህሪ እንዲያክሉ ገንቢዎች መጠየቅ።

ብዙ ቀናት አለፉ፣ ግን ማንም ሰው ለጥያቄዬ ትኩረት አልሰጠም። እናም ከጉጉት የተነሣ፣ የመነሻውን ኮድ ተመለከትኩ... ሹካ ሰጠሁት፣ እና ይህን ባህሪ እንዴት እንደምጨምር በጉልበቴ ተንበርክኬ... “በጉልበቴ ላይ” እንደዚህ ያለ ነገር ስላልጫንኩ እና የምንጭ ኮዱን ስላስተካከልኩ በቀጥታ በአሳሹ ውስጥ.

C (የፕሮግራሚንግ ቋንቋውን) በጣም ላዩን አውቀዋለሁ፣ ግን ግምታዊ መፍትሄ ቀረጽኩ (በአብዛኛው ኮፒ-መለጠፍ)... እና ከዛም አሰብኩ - ቢያንስ እዚያ ብዙ ስህተቶች ሊኖሩብኝ ይችላሉ (ያለፈው የሌላውን ሰው ለማረም ያደረኩት ሙከራ) ሲ ኮድ ለ10ኛ ጊዜ ተጠናቀቀ) የመጎተት ጥያቄ አቀርባለሁ። እንግዲህ የተነደፈ.

እና እዚያ Travis CI የመሳብ ጥያቄዎችን ለመፈተሽ ተያይዟል። እናም ስህተቶቼን ሁሉ በትጋት ነገረኝ። ደህና, የታወቁ ስህተቶች ካሉ, ማስተካከል አያስፈልግም: እንደገና, በትክክል በአሳሹ ውስጥ, እና በአራተኛው ሙከራ ላይ ኮዱ ሠርቷል (ለእኔ ስኬት).

እና ልክ እንደዛው፣ ከአሳሹ ሳልወጣ፣ በሁሉም ዘመናዊ የሊኑክስ ስርጭቶች ውስጥ ጥቅም ላይ በሚውልበት መገልገያ ውስጥ በጣም እውነተኛ የፑል ጥያቄን ቀረፅኩ።

እኔ ቋንቋውን በትክክል ሳላውቅ፣ ምንም ነገር ሳላዘጋጅ (ጥገኛዎች ለመገጣጠም ጥቂት ቤተ-መጻሕፍት ያስፈልጋሉ)፣ እና አጠናቃሪውን እንኳን ሳላስኬድ፣ ሙሉ በሙሉ የሚሰራ እና ጠቃሚ ባህሪን “ኮድ አድርጌ” መሆኔ አስገርሞኛል። አሳሹ .

ይሁን እንጂ ከማርች 19 ቀን 2019 ጀምሮ ያቀረብኩት ጥያቄ ምላሽ አላገኘም እና ስለሱ መርሳት ጀመርኩ።

ግን ትላንትና ይህ ጥያቄ ወደ ጌታው ተጨምሯል።

ታዲያ የእኔ ታሪክ ስለ ምንድን ነው? እና እሱ በዘመናዊ ቴክኖሎጂዎች ማዕቀፍ ውስጥ ፣ ምንም ዓይነት የልማት መሳሪያዎችን እና ጥገኞችን በአገር ውስጥ ሳያሰማሩ እውነተኛ ኮድ ቀድሞውኑ በአሳሹ ውስጥ መፃፍ እንደሚቻል እየተናገረ ነው።

ከዚህም በላይ፣ መቀበል አለብኝ፣ ይህ ቀድሞውኑ ለታወቁ (ቢያንስ በጠባብ ክበቦች) መገልገያዎች ሁለተኛ የመሳብ ጥያቄዬ ነው። ባለፈው ጊዜ፣ የአንዳንድ መስኮችን ማሳያ በSyncThing ድር በይነገጽ ላይ ለማስተካከል ያቀረብኩት ጥያቄ በጭራሽ በማላውቀው አካባቢ ውስጥ በትክክል የአንድ መስመር አርትኦት አድርጌያለሁ።

በዳሰሳ ጥናቱ ውስጥ የተመዘገቡ ተጠቃሚዎች ብቻ መሳተፍ ይችላሉ። ስግን እንእባክህን።

የበለጠ መጻፍ አለብኝ ወይስ አልጻፍም?

  • አዎ

  • ምንም ዋጋ የለውም

294 ተጠቃሚዎች ድምጽ ሰጥተዋል። 138 ተጠቃሚዎች ድምፀ ተአቅቦ አድርገዋል።

ምንጭ: hab.com

አስተያየት ያክሉ