مستقبل پہلے ہی یہاں ہے یا براہ راست براؤزر میں کوڈ

میں آپ کو ایک مضحکہ خیز صورتحال کے بارے میں بتاؤں گا جو میرے ساتھ پیش آیا، اور ایک مشہور پروجیکٹ میں شراکت دار بننے کا طریقہ۔

کچھ عرصہ پہلے میں ایک خیال کے ساتھ ٹنکرنگ کر رہا تھا: لینکس کو براہ راست UEFI سے بوٹ کرنا...
یہ خیال نیا نہیں ہے اور اس موضوع پر متعدد کتابچے موجود ہیں۔ آپ ان میں سے ایک کو دیکھ سکتے ہیں۔ یہاں

دراصل، اس مسئلے کو حل کرنے کی میری دیرینہ کوششوں کا نتیجہ مکمل طور پر رسمی شکل میں نکلا۔ فیصلہ. حل کافی کام کر رہا ہے اور میں اسے اپنی کچھ گھریلو مشینوں پر استعمال کرتا ہوں۔ اس حل کو قدرے تفصیل سے بیان کیا گیا ہے۔ یہاں.

UEFI-Boot کا جوہر یہ ہے کہ ESP (EFI سسٹم پارٹیشن) پارٹیشن کو /boot ڈائریکٹری کے ساتھ ملایا جاتا ہے۔ وہ. تمام کرنل اور بوٹسٹریپ امیجز (initrd) اسی پارٹیشن پر واقع ہیں جہاں سے UEFI قابل عمل فائلوں کو لانچ کر سکتا ہے اور خاص طور پر سسٹم بوٹ لوڈرز کو لانچ کر سکتا ہے۔ لیکن لینکس کا کرنل خود بہت سی تقسیموں میں پہلے سے ہی UEFISTUB آپشن کے ساتھ اسمبل ہوتا ہے، جو خود کو UEFI سے لانچ کرنے کی اجازت دیتا ہے۔

اس حل میں ایک ناخوشگوار لمحہ ہے - ESP پارٹیشن FAT32 میں فارمیٹ کیا گیا ہے، جس پر ہارڈ لنکس بنانا ناممکن ہے (جسے initrd کو اپ ڈیٹ کرتے وقت سسٹم باقاعدگی سے تخلیق کرتا ہے)۔ اور اس کے بارے میں کوئی خاص مجرمانہ بات نہیں ہے، لیکن کرنل کے اجزاء کو اپ ڈیٹ کرتے وقت سسٹم کی وارننگ دیکھنا زیادہ خوشگوار نہیں ہے...

ایک اور طریقہ ہے۔

UEFI بوٹ مینیجر (وہی جہاں آپ کو OS بوٹ لوڈر کو رجسٹر کرنے کی ضرورت ہے) بوٹ لوڈرز/لینکس کرنل کے علاوہ، ڈرائیوروں کو بھی لوڈ کر سکتا ہے۔ لہذا آپ اس فائل سسٹم کے لیے ڈرائیور کو لوڈ کر سکتے ہیں جہاں آپ کے پاس /boot ہے اور UEFI کا استعمال کرتے ہوئے وہاں سے براہ راست کرنل لوڈ کر سکتے ہیں۔ ڈرائیور کو، یقیناً، ESP پارٹیشن میں رکھنے کی ضرورت ہے۔ یہ تقریباً وہی ہے جو GRUB جیسے بوٹ لوڈرز کرتے ہیں۔ لیکن خاص بات یہ ہے کہ تمام کثرت سے استعمال ہونے والے GRUB فنکشنز پہلے سے ہی UEFI میں ہیں۔ زیادہ واضح طور پر اس کے ڈاؤن لوڈ مینیجر میں۔ اور اس سے بھی زیادہ بورنگ ہونے کے لیے، UEFI بوٹ مینیجر کے پاس کچھ معاملات میں اور بھی زیادہ صلاحیتیں ہیں۔

ایسا لگتا ہے کہ یہ ایک خوبصورت حل ہے، لیکن ایک "BUT" ہے (یا اس کے بجائے، یہ تھا، لیکن بعد میں اس پر مزید)۔ حقیقت یہ ہے کہ UEFI ڈرائیور کا نظام بہت آسان ہے۔ فائل سسٹم کو نصب کرنے یا ڈرائیور کو کسی مخصوص ڈیوائس کے ساتھ منسلک کرنے جیسی کوئی چیز نہیں ہے۔ روایتی نام میپ کے ساتھ ایک سسٹم کال ہے، جو ہر ڈرائیور کو باری باری لیتا ہے اور اسے کم از کم مناسب آلات کے ساتھ جوڑنے کی کوشش کرتا ہے۔ اور اگر ڈرائیور آلہ لینے کے قابل تھا، تو ایک میپنگ بنائی جاتی ہے - ایک منسلک ریکارڈ. بالکل اسی طرح نئے بھرے ہوئے ڈرائیور کو دوسرے تمام لوگوں کے ساتھ مشترکہ ہیپ میں شروع کیا جانا چاہئے۔ اور آپ کو بس ڈرائیور بوٹ ریکارڈ میں ایک بٹ (LOAD_OPTION_FORCE_RECONNECT) کو 1 پر سیٹ کرنے کی ضرورت ہے اور UEFI اسے لوڈ کرنے کے بعد یہ عالمی ری میپ کرے گا۔

لیکن یہ کرنا اتنا آسان نہیں ہے۔ معیاری efibootmgr یوٹیلیٹی (جو UEFI آف لوڈ مینیجر کو کنفیگر کرنے کے لیے استعمال ہوتی ہے) یہ نہیں جانتی ہے کہ اس بٹ کو کیسے سیٹ کیا جائے مجھے اسے ایک پیچیدہ اور خطرناک طریقہ کار کے ذریعے دستی طور پر انسٹال کرنا پڑا۔

اور ایک بار پھر، اپنے ہاتھوں سے کرنے کی کوشش کرنے کے بعد، میں اسے برداشت نہیں کر سکا اور رسمی شکل اختیار کر لی GitHub پر مسئلہ ڈویلپرز سے اس خصوصیت کو شامل کرنے کے لیے کہہ رہا ہے۔

کئی دن گزر گئے لیکن کسی نے میری درخواست پر توجہ نہ دی۔ اور تجسس کی وجہ سے، میں نے سورس کوڈ کو دیکھا... میں نے اسے فورک کیا، اور اپنے گھٹنوں کے بل سوچا کہ اس فیچر کو کیسے شامل کیا جائے... "میرے گھٹنوں پر" کیونکہ میں نے ایسا کچھ انسٹال نہیں کیا اور سورس میں ترمیم کی کوڈ براہ راست براؤزر میں۔

میں C (پروگرامنگ لینگویج) کو بہت سطحی طور پر جانتا ہوں، لیکن میں نے ایک تخمینی حل نکالا (زیادہ تر کاپی پیسٹ)... اور پھر میں نے سوچا - کم از کم مجھ میں شاید بہت سی غلطیاں ہیں (کسی اور کی ترمیم کرنے کی میری ماضی کی کوششیں C کوڈ تقریباً 10ویں بار مکمل ہوا) میں پل کی درخواست جاری کروں گا۔ ٹھیک ہے ڈیزائن کیا گیا.

اور وہاں ٹریوس سی آئی پل کی درخواستوں کو چیک کرنے کے لیے منسلک نکلا۔ اور اس نے پوری تندہی سے مجھے میری تمام غلطیاں بتا دیں۔ ٹھیک ہے، اگر معلوم غلطیاں ہیں، تو اسے ٹھیک کرنے کی ضرورت نہیں ہے: دوبارہ، بالکل براؤزر میں، اور چوتھی کوشش پر کوڈ نے کام کیا (میرے لیے ایک کارنامہ)۔

اور بالکل اسی طرح، براؤزر کو چھوڑے بغیر، میں نے ایک بہت ہی حقیقی Pull Request کو ایک افادیت میں فارمیٹ کیا جو تقریباً تمام جدید لینکس ڈسٹری بیوشنز میں استعمال ہوتی ہے۔

مجھے اس حقیقت سے حیرت ہوئی کہ، زبان کو جانے بغیر، کچھ بھی ترتیب دیے بغیر (انحصارات کو اسمبلی کے لیے کافی لائبریریوں کی ضرورت ہوتی ہے)، اور کبھی بھی کمپائلر کو چلائے بغیر، میں نے صرف ایک مکمل طور پر کام کرنے والی اور کارآمد خصوصیت کو "کوڈ" کیا۔ براؤزر

تاہم، میری درخواست 19 مارچ 2019 سے غیر جوابی رہی، اور میں نے اسے بھولنا شروع کر دیا تھا۔

لیکن کل اس درخواست کو ماسٹر میں شامل کیا گیا تھا۔

تو میری کہانی کیا ہے؟ اور وہ اس حقیقت کے بارے میں بات کر رہا ہے کہ، جدید ٹیکنالوجی کے فریم ورک کے اندر، یہ پتہ چلا کہ حقیقی کوڈ پہلے سے ہی براؤزر میں لکھا جا سکتا ہے، بغیر کسی ترقیاتی ٹولز اور انحصار کو مقامی طور پر تعینات کیے۔

مزید برآں، مجھے تسلیم کرنا چاہیے، یہ معروف (کم از کم تنگ دائروں میں) افادیت کے لیے میری دوسری پل کی درخواست ہے۔ پچھلی بار، SyncThing ویب انٹرفیس میں کچھ فیلڈز کے ڈسپلے کو درست کرنے کی میری درخواست کے نتیجے میں ایک ایسے ماحول میں میری لفظی طور پر ایک لائن کی تدوین ہوئی جسے میں بالکل نہیں جانتا ہوں۔

سروے میں صرف رجسٹرڈ صارفین ہی حصہ لے سکتے ہیں۔ سائن ان، برائے مہربانی.

مزید لکھوں یا نہیں؟

  • جی ہاں

  • نہیں قابل

294 صارفین نے ووٹ دیا۔ 138 صارفین غیر حاضر رہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں