నాకు జరిగిన ఒక తమాషా పరిస్థితి గురించి మరియు ప్రసిద్ధ ప్రాజెక్ట్కి ఎలా కంట్రిబ్యూటర్గా మారాలి అనే దాని గురించి నేను మీకు చెప్తాను.
కొంతకాలం క్రితం నేను ఒక ఆలోచనతో ఉన్నాను: UEFI నుండి నేరుగా Linuxని బూట్ చేయడం...
ఆలోచన కొత్తది కాదు మరియు ఈ అంశంపై అనేక మాన్యువల్లు ఉన్నాయి. మీరు వాటిలో ఒకదాన్ని చూడవచ్చు
వాస్తవానికి, ఈ సమస్యను పరిష్కరించడానికి నా దీర్ఘకాల ప్రయత్నాలు పూర్తిగా అధికారికీకరించబడ్డాయి
UEFI-Boot యొక్క సారాంశం ఏమిటంటే ESP (EFI సిస్టమ్ విభజన) విభజన /boot డైరెక్టరీతో కలిపి ఉంటుంది. ఆ. అన్ని కెర్నలు మరియు బూట్స్ట్రాప్ ఇమేజ్లు (initrd) UEFI ఎక్జిక్యూటబుల్ ఫైల్లను లాంచ్ చేయగల మరియు ప్రత్యేకించి, సిస్టమ్ బూట్ లోడర్లను లాంచ్ చేయగల అదే విభజనపై ఉన్నాయి. కానీ అనేక పంపిణీలలో లైనక్స్ కెర్నల్ ఇప్పటికే UEFISTUB ఎంపికతో సమీకరించబడింది, ఇది కెర్నల్ను UEFI నుండి ప్రారంభించటానికి అనుమతిస్తుంది.
ఈ పరిష్కారం ఒక అసహ్యకరమైన క్షణాన్ని కలిగి ఉంది - ESP విభజన FAT32లో ఫార్మాట్ చేయబడింది, దానిపై హార్డ్ లింక్లను సృష్టించడం అసాధ్యం (initrdని నవీకరించేటప్పుడు సిస్టమ్ క్రమం తప్పకుండా సృష్టిస్తుంది). మరియు దీని గురించి ప్రత్యేకంగా నేరం ఏమీ లేదు, కానీ కెర్నల్ భాగాలను నవీకరించేటప్పుడు సిస్టమ్ హెచ్చరికలను చూడటం చాలా ఆహ్లాదకరమైనది కాదు...
మరొక మార్గం ఉంది.
UEFI బూట్ మేనేజర్ (మీరు OS బూట్లోడర్ను నమోదు చేయాల్సిన చోట అదే) బూట్లోడర్లు/Linux కెర్నల్స్తో పాటు, డ్రైవర్లను కూడా లోడ్ చేయవచ్చు. కాబట్టి మీరు /boot ఉన్న ఫైల్ సిస్టమ్ కోసం డ్రైవర్ను లోడ్ చేయవచ్చు మరియు UEFI ఉపయోగించి నేరుగా కెర్నల్ను లోడ్ చేయవచ్చు. డ్రైవర్, వాస్తవానికి, ESP విభజనలో ఉంచాలి. GRUB వంటి బూట్లోడర్లు స్థూలంగా చేసేది ఇదే. కానీ ముఖ్యాంశం ఏమిటంటే, తరచుగా ఉపయోగించే అన్ని GRUB ఫంక్షన్లు ఇప్పటికే UEFIలో ఉన్నాయి. మరింత ఖచ్చితంగా దాని డౌన్లోడ్ మేనేజర్లో. మరియు మరింత బోరింగ్గా ఉండాలంటే, UEFI బూట్ మేనేజర్ కొన్ని విషయాలలో మరిన్ని సామర్థ్యాలను కలిగి ఉంది.
ఇది ఒక అందమైన పరిష్కారం అనిపిస్తుంది, కానీ ఒక "కానీ" ఉంది (లేదా బదులుగా, అది, కానీ తర్వాత మరింత). వాస్తవం ఏమిటంటే UEFI డ్రైవర్ సిస్టమ్ చాలా సులభం. ఫైల్ సిస్టమ్ను మౌంట్ చేయడం లేదా నిర్దిష్ట పరికరంతో డ్రైవర్ను అనుబంధించడం వంటివి ఏవీ లేవు. మ్యాప్ అనే సాంప్రదాయిక పేరుతో సిస్టమ్ కాల్ ఉంది, ఇది ప్రతి డ్రైవర్ను టర్న్గా తీసుకుంటుంది మరియు అన్నింటితో, కనీసం తగిన పరికరాలతో అనుబంధించడానికి ప్రయత్నిస్తుంది. మరియు డ్రైవర్ పరికరాన్ని తీయగలిగితే, అప్పుడు మ్యాపింగ్ సృష్టించబడుతుంది - కనెక్ట్ చేసే రికార్డ్. కొత్తగా లోడ్ చేయబడిన డ్రైవర్ని అన్ని ఇతర వాటితో కలిపి ఒక సాధారణ హీప్లో ప్రారంభించాలి. మరియు మీకు కావలసిందల్లా డ్రైవర్ బూట్ రికార్డ్లో ఒక బిట్ (LOAD_OPTION_FORCE_RECONNECT)ని 1కి సెట్ చేయడం మరియు UEFI దీన్ని లోడ్ చేసిన తర్వాత ఈ గ్లోబల్ రీమ్యాప్ని చేస్తుంది.
అయితే దీన్ని చేయడం అంత సులభం కాదు. ప్రామాణిక efibootmgr యుటిలిటీ (ఇది UEFI ఆఫ్లోడ్ మేనేజర్ని కాన్ఫిగర్ చేయడానికి ఉపయోగించబడుతుంది) ఈ బిట్ను ఎలా సెట్ చేయాలో తెలియదు (లేదా బదులుగా, ఎలా తెలియదు). నేను చాలా క్లిష్టమైన మరియు ప్రమాదకరమైన ప్రక్రియ ద్వారా మానవీయంగా దీన్ని ఇన్స్టాల్ చేయాల్సి వచ్చింది.
మరియు మరోసారి, నా చేతులతో దీన్ని చేయడానికి ప్రయత్నించాను, నేను నిలబడలేకపోయాను మరియు అధికారికం చేసాను
చాలా రోజులు గడిచాయి, కానీ నా అభ్యర్థనను ఎవరూ పట్టించుకోలేదు. మరియు ఉత్సుకతతో, నేను సోర్స్ కోడ్ని చూశాను... నేను దానిని ఫోర్క్ చేసాను మరియు ఈ ఫీచర్ను ఎలా జోడించాలో నా మోకాళ్లపై కనుగొన్నాను... “నా మోకాళ్లపై” నేను అలాంటిదేమీ ఇన్స్టాల్ చేయలేదు మరియు మూలాన్ని సవరించాను నేరుగా బ్రౌజర్లో కోడ్ చేయండి.
నాకు C (ప్రోగ్రామింగ్ లాంగ్వేజ్) చాలా ఉపరితలంగా తెలుసు, కానీ నేను ఒక ఉజ్జాయింపు పరిష్కారాన్ని (ఎక్కువగా కాపీ-పేస్ట్) గీసాను... ఆపై నేను అనుకున్నాను - కనీసం నాకు అక్కడ చాలా లోపాలు ఉండవచ్చు (వేరొకరిని సవరించడానికి నా గత ప్రయత్నాలు) C కోడ్ దాదాపు 10వ సారి పూర్తయింది) నేను పుల్ అభ్యర్థనను జారీ చేస్తాను. బాగా
మరియు అక్కడ ట్రావిస్ CI పుల్ అభ్యర్థనలను తనిఖీ చేయడానికి జోడించబడిందని తేలింది. మరియు అతను నా తప్పులన్నింటినీ శ్రద్ధగా చెప్పాడు. బాగా, తెలిసిన లోపాలు ఉంటే, దాన్ని పరిష్కరించాల్సిన అవసరం లేదు: మళ్ళీ, బ్రౌజర్లోనే, మరియు నాల్గవ ప్రయత్నంలో కోడ్ పని చేసింది (నాకు ఒక విజయం).
అలాగే, బ్రౌజర్ను వదలకుండా, దాదాపు అన్ని ఆధునిక Linux పంపిణీలలో ఉపయోగించబడే యుటిలిటీకి నేను చాలా నిజమైన పుల్ అభ్యర్థనను ఫార్మాట్ చేసాను.
నిజంగా భాష తెలియకుండా, దేనినీ సెటప్ చేయకుండా (డిపెండెన్సీలకు అసెంబ్లీకి కొన్ని లైబ్రరీలు అవసరం) మరియు కంపైలర్ను కూడా అమలు చేయకుండా, నేను పూర్తిగా పని చేసే మరియు ఉపయోగకరమైన ఫీచర్ను "కోడ్" చేసాను అనే వాస్తవం నన్ను ఆశ్చర్యపరిచింది. బ్రౌజర్.
అయినప్పటికీ, నా అభ్యర్థన మార్చి 19, 2019 నుండి స్పందించలేదు మరియు నేను దాని గురించి మరచిపోవడం ప్రారంభించాను.
కానీ నిన్న ఈ అభ్యర్థన మాస్టర్కి జోడించబడింది.
కాబట్టి నా కథ దేని గురించి? మరియు అతను ఆధునిక సాంకేతిక పరిజ్ఞానాల చట్రంలో, స్థానికంగా ఎటువంటి అభివృద్ధి సాధనాలు మరియు డిపెండెన్సీలను అమలు చేయకుండా, బ్రౌజర్లో నిజమైన కోడ్ను ఇప్పటికే వ్రాయవచ్చని తేలింది.
అంతేకాకుండా, నేను అంగీకరించాలి, ఇది ఇప్పటికే ప్రసిద్ధ (కనీసం ఇరుకైన సర్కిల్లలో) యుటిలిటీల కోసం నా రెండవ పుల్ అభ్యర్థన. చివరిసారి, SyncThing వెబ్ ఇంటర్ఫేస్లో కొన్ని ఫీల్డ్ల ప్రదర్శనను సరిచేయమని నా అభ్యర్థన ఫలితంగా నాకు పూర్తిగా తెలియని వాతావరణంలో అక్షరాలా ఒక-లైన్ సవరణ జరిగింది.
నమోదు చేసుకున్న వినియోగదారులు మాత్రమే సర్వేలో పాల్గొనగలరు.
నేను ఎక్కువ వ్రాయాలా వద్దా?
-
అవును
-
అది విలువ కాదు
294 మంది వినియోగదారులు ఓటు వేశారు. 138 మంది వినియోగదారులు దూరంగా ఉన్నారు.
మూలం: www.habr.com