Болашақ қазірдің өзінде осында немесе кодты тікелей браузерде

Мен сізге өз басымнан өткен күлкілі жағдайды және әйгілі жобаға қалай үлес қосуға болатынын айтып беремін.

Жақында мен бір идеямен айналыстым: Linux-ті UEFI-ден тікелей жүктеу ...
Идея жаңа емес және осы тақырып бойынша бірқатар нұсқаулықтар бар. Сіз олардың біреуін көре аласыз осында

Шындығында, менің бұл мәселені шешуге көптен бері жасаған әрекеттерім толығымен ресми түрде аяқталды шешім. Шешім өте жақсы жұмыс істейді және мен оны кейбір үй машиналарымда қолданамын. Бұл шешім аздап егжей-тегжейлі сипатталған. осында.

UEFI-Boot бағдарламасының мәні ESP (EFI System Partition) бөлімі /boot каталогымен біріктірілген. Анау. барлық ядролар мен жүктеу кескіндері (initrd) UEFI орындалатын файлдарды іске қоса алатын және, атап айтқанда, жүйе жүктеушілерін іске қоса алатын бір бөлімде орналасқан. Бірақ көптеген дистрибутивтердегі Linux ядросының өзі UEFISTUB опциясымен жинақталған, бұл ядроның өзін UEFI-ден іске қосуға мүмкіндік береді.

Бұл шешімнің бір жағымсыз сәті бар - ESP бөлімі FAT32 форматында пішімделген, онда қатты сілтемелер жасау мүмкін емес (оны жүйе initrd жаңарту кезінде жүйелі түрде жасайды). Бұл туралы әсіресе қылмыстық ештеңе жоқ, бірақ ядро ​​компоненттерін жаңарту кезінде жүйелік ескертулерді көру өте жағымды емес ...

Басқа жолы бар.

UEFI жүктеу менеджері (ОЖ жүктеушісін тіркеу қажет дәл сол) жүктеушілерге/Linux ядроларына қосымша драйверлерді де жүктей алады. Осылайша сіз /жүктеу мүмкіндігі бар файлдық жүйе үшін драйверді жүктей аласыз және UEFI арқылы ядроны тікелей сол жерден жүктей аласыз. Драйверді, әрине, ESP бөліміне орналастыру керек. Бұл шамамен GRUB сияқты жүктеушілер жасайды. Бірақ ең бастысы, барлық жиі қолданылатын GRUB функциялары UEFI-де бұрыннан бар. Дәлірек айтқанда, жүктеу менеджерінде. Одан да жалықтыру үшін, UEFI жүктеу менеджері кейбір мәселелерде одан да көп мүмкіндіктерге ие.

Бұл әдемі шешім сияқты, бірақ бір «БІРАҚ» бар (дәлірек айтқанда, ол болды, бірақ бұл туралы кейінірек). Өйткені, UEFI драйвер жүйесі өте қарапайым. Файлдық жүйені орнату немесе драйверді белгілі бір құрылғымен байланыстыру сияқты ештеңе жоқ. Кәдімгі Map атты жүйелік қоңырау бар, ол әрбір драйверді кезекпен қабылдайды және оны барлық, ең болмағанда қолайлы құрылғылармен байланыстыруға тырысады. Ал егер жүргізуші құрылғыны ала алған болса, онда карта жасалады - қосу жазбасы. Дәл осылай жаңадан жүктелген драйвер барлық басқалармен ортақ үймеде инициализациялануы керек. Сізге тек драйверді жүктеу жазбасында бір бит (LOAD_OPTION_FORCE_RECONNECT) 1 мәніне орнату қажет және UEFI оны жүктегеннен кейін бұл жаһандық қайталауды жасайды.

Бірақ мұны істеу соншалықты оңай емес. Стандартты efibootmgr утилитасы (UEFI жүктеу менеджерін конфигурациялау үшін пайдаланылады) бұл битті қалай орнату керектігін білмейді (дәлірек айтсақ, білмеді). Мен оны өте күрделі және қауіпті процедура арқылы қолмен орнатуға тура келді.

Тағы да қолыммен жасауға тырыстым, мен шыдай алмай, рәсімдедім GitHub сайтындағы мәселе әзірлеушілерден осы мүмкіндікті қосуды сұрайды.

Бірнеше күн өтті, бірақ менің өтінішіме ешкім мән бермеді. Қызық болып, бастапқы кодты қарап шықтым... Мен оны айырдым және бұл мүмкіндікті қалай қосу керектігін тізе бүгіп түсіндім ... «Тізеде» өйткені мен мұндай ештеңе орнатпадым және дереккөзді өңдедім. кодты тікелей браузерде.

Мен C тілін (бағдарламалау тілін) өте үстірт білемін, бірақ мен шамамен шешімнің нобайын жасадым (негізінен көшіру-қою) ... содан кейін мен ойладым - кем дегенде, менде көптеген қателер бар шығар (бұрынғы басқа біреудің тілін өңдеуге тырысқандарым). C коды шамамен 10-шы рет толтырылды) Мен тарту сұрауын шығарамын. Сонымен жобаланған.

Сол жерде Travis CI тарту сұрауларын тексеру үшін тіркелгені анықталды. Және ол менің барлық қателіктерімді ыждағаттылықпен айтып берді. Егер белгілі қателер болса, оны түзетудің қажеті жоқ: қайтадан браузерде, ал төртінші әрекетте код жұмыс істеді (мен үшін жетістік).

Дәл сол сияқты, браузерден шықпай-ақ, мен барлық заманауи Linux дистрибутивтерінде қолданылатын утилитаға өте нақты тарту сұрауын пішімдедім.

Мені шын мәнінде тілді білмей, ештеңе орнатпай (тәуелділіктер құрастыру үшін бірнеше кітапхананы қажет етеді) және компиляторды ешқашан іске қоспай-ақ, мен толығымен жұмыс істейтін және пайдалы мүмкіндікті «кодтағаным» мені таң қалдырды. шолғыш.

Алайда, менің өтінішім 19 жылдың 2019 наурызынан бері жауапсыз қалды, мен бұл туралы ұмыта бастадым.

Бірақ кеше бұл өтініш шеберге қосылды.

Сонымен, менің әңгімем не туралы? Ол қазіргі заманғы технологиялар аясында нақты кодты браузерде ешбір әзірлеу құралдары мен тәуелділіктерді қолданбай-ақ жазуға болатындығы туралы айтады.

Сонымен қатар, мойындауым керек, бұл менің танымал (кем дегенде тар шеңберде) утилиталарға арналған екінші сұрауым. Өткен жолы менің SyncThing веб-интерфейсіндегі кейбір өрістердің дисплейін түзету туралы өтінішім мен мүлдем білмейтін ортада бір жолды өңдеуге әкелді.

Сауалнамаға тек тіркелген пайдаланушылар қатыса алады. Кіру, өтінемін.

Көбірек жазу керек пе, жоқ па?

  • иә

  • бұл қажеті жоқ

294 қолданушы дауыс берді. 138 пайдаланушы қалыс қалды.

Ақпарат көзі: www.habr.com

пікір қалдыру