GRUB `ntldr` কমান্ড (মডিউল?) কীভাবে ব্যবহার করবেন সে সম্পর্কে আমি আরও কোথায় জানতে পারি?


16

আমি সম্প্রতি GRUB ntldrমডিউল জুড়ে হোঁচট খেয়েছি।

স্পষ্টতই এর জন্য ব্যবহৃত জিনিসগুলির একটি হ'ল chainloaderনীচের উদাহরণের মতো উইন্ডোজের এনটি> = 6.0 সংস্করণ বুট করার বিকল্প হিসাবে। (উইন্ডোজ পার্টিশনের জন্য ভলিউম বুট রেকর্ড, আহ, দূষিত হলে খুব সহজ)

menuentry "Windows 7 (bootmgr on /dev/sda1)" --class windows --class os {
    insmod part_msdos
    insmod ntfs
    insmod ntldr
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root 1EA0019AA0017A13
    ntldr ($root)/bootmgr
}

এই বুট নির্দেশিকাটি কীভাবে ব্যবহার করা যেতে পারে সে সম্পর্কে আমি আরও কোথায় জানতে পারি? আমি এটা তালিকাভুক্ত যখন আমি লাগছিল দেখতে পাইনি HTML সংস্করণে এর গনুহ গ্রাব ম্যানুয়াল


Ckhan এর উত্তর

আপনাকে অনেক ধন্যবাদ! আমি বেশ সিদ্ধান্ত নিয়েছিলাম যে GRUB ntldrকমান্ড / মডিউল সম্পর্কে আরও জানতে আমাকে উত্স কোডটি খনন করার চেষ্টা করতে হবে । তবে আপনি আমার চেয়ে অনেক ভাল কাজ করেছেন।

কোডটি লিখেছেন এমন ব্যক্তির কী নকশা নিয়ে আলোচনা করেছেন তা দেখার জন্য ইমেল সংরক্ষণাগারগুলি দেখার বিষয়টি আমার কাছে কখনও ঘটেনি। এই পদ্ধতিটি মনে হচ্ছে এটি ভবিষ্যতে খুব সহায়ক হতে পারে। এটি উল্লেখ করার জন্য ধন্যবাদ।

GRUB ntldrসমর্থন সম্পর্কে আমার চিন্তাভাবনা

  1. যদিও আমি সত্যিই নিশ্চিত নই যে পার্থক্যটির অর্থ কতটা, ntldrএটি একটি মডিউল, কোনও আদেশ নয়। অথবা আপনি যদি চান তবে একটি গতিশীল লোড কমান্ড।

    আপনার উত্স কোডের লিঙ্কটি অনুসরণ করে এবং 152 ( GRUB_MOD_INIT) এবং 159 ( GRUB_MOD_FINI) লাইনগুলি দেখে আপনি লোড করার কোডটি দেখতে পাবেন এবং ... আমি অনুমান করছি ... মডিউলটি আনলোড করুন।

    GRUB স্পষ্টতই অনেকগুলি ফাংশন প্রয়োগ করে যা আপনি মডিউল হিসাবে " কমান্ডগুলি " বলে মনে করতে পারেন । আমি যে সচেতন সে সম্পর্কে ব্যবহারের মধ্যে কেবলমাত্র পার্থক্যটি হল মডিউল ব্যবহার করার আগে এটি অবশ্যই কমান্ডের সাথে বোঝা হয়েছে তা নিশ্চিত করা উচিত insmod ntldr

    পাশে: আমি সর্বদা ভাবতাম কেন GRUB সমর্থন করে না reboot। এটি কমান্ড উপস্থিত আছে সক্রিয়, কিন্তু এটি একটি মডিউল। যদি rebootফিরে আসে unknown command, তবেinsmod rebootGRUB rebootকমান্ডটি "মনে রাখার" অনুমতি দেয় ।

    একদিকে: GRUB কখন এবং কেন একটি মডিউল " আনলোড " করতে পারে , আমার এখনও কোনও ধারণা নেই। হতে পারে এটি " আবর্জনা সংগ্রহ " এর অনুরূপ কোনও কিছুর ফলাফল ?? আমি লক্ষ্য করেছি যে একবারে সিস্টেম চালিত হয়ে পুনরায় বুট করার পরেও একবারে লোড হওয়া মডিউলগুলি বজায় থাকে বলে মনে হয়। অবশ্যই, আপনি এটির উপর নির্ভর করতে পারবেন না , তবে এটি প্রায়শই অনুশীলনে কীভাবে কাজ করে তা প্রতীয়মান হয়।
  2. এটা তোলে আকর্ষণীয় যে, তারা ভিত্তিক ntldrউপর chainloader। আমি কোডটির দিকে নজর দিইনি chainloader.c। আমার ধারণা, এটি সম্ভবত ইন্টেল 16-বিট রিয়েল মোডে একটি স্থান পরিবর্তন করা লোডও করে?

    আমি আছি বরং খুশি যে তারা বাস্তবায়ন হয়নি ntldrএকজন বিকল্প হিসাবে chainloader। আমি ভ্লাদিমিরের সাথে একমত কভারগুলির নীচে মিলগুলি যাই হোক না কেন, ব্যবহারের বাক্য গঠনটি খুব আলাদা very বর্তমান পদ্ধতির কম ক্লডজি হয়।
  3. GRUB এ এই আদেশটি যুক্ত করার জন্য উত্সাহের আপাত অভাব দেখতেও আকর্ষণীয়। স্পষ্টতই GRUB বিকাশকারীরা মনে করেছিলেন যে উইন্ডোজ পার্টিশন বুট রেকর্ডের (পিবিআর) ক্ষতি খুব সম্ভবই নয় । তবে, একটি সাধারণ পর্যাপ্ত ইনস্টলের সময় এটি কীভাবে করা যায় তা আমি স্কেচ করতে পারি।

    ধরে নেওয়া শুরু করুন যে কোনও ব্যবহারকারী তাদের সিস্টেমে উইন্ডোজ ইনস্টল করেছেন। তারা এখন উইন্ডোজের " পাশাপাশি " উবুন্টু (12.04 এলটিএস) ইনস্টল করে । উবুন্টু ইনস্টলের সময় এক পর্যায়ে তারা স্পষ্টতই সিদ্ধান্ত নিতে পারেন যে তারা GRUB কোথায় ইনস্টল করতে চান। যে কারণে আমি অনুমান করা শুরু করতে পারি না, তাদের মধ্যে কয়েকটি উইন্ডোজ ইনস্টল থাকা পার্টিশনে GRUB ইনস্টল করার সিদ্ধান্ত নিয়েছে।

    ইনস্টলটি সম্পূর্ণ হয় এবং তারা উবুন্টু সফলভাবে শুরু করতে পারে। যাইহোক, যখন তারা GRUB মেনুতে এন্ট্রি নির্বাচন করে উইন্ডোজ শুরু করার চেষ্টা করেন, উইন্ডোজ শুরু হয় না । পরিবর্তে GRUB দিয়ে উইন্ডোজ শুরু করার চেষ্টা করে GRUB মেনুটি পুনরায় প্রদর্শন করে?

    কেন? ওয়েল, স্পষ্টতই যখন তারা উইন্ডোজ পার্টিশনের অংশে GRUB ইনস্টল করার সিদ্ধান্ত নিয়েছিলেন তখন যা ঘটেছিল তার অংশটি ছিল উইন্ডোজ পার্টিশনের জন্য পিবিআরটি GRUB এর পিবিআরের সাথে অতিরিক্ত লেখা ছিল। সুতরাং chainloader +1একটি উইন্ডোজ বুটলোডার চেইন লোড করে না, বরং পরিবর্তে GRUB পুনরায় লোড করে।

    আইএমও, ব্যবহারকারীকে সেই পরিস্থিতিতে উইন্ডোজ বুট করার অনুমতি দেওয়ার সবচেয়ে নিরাপদ দ্রুত উপায় হ'ল গ্রুবের নতুন ব্যবহার ntldr। আমি ভাবছি যদি এটি বিকাশকারীদের পক্ষে আগ্রহী হয়। আমি আশা করি তারা এই দৃশ্যটি অনুমান করেনি।

আমি ভাবছি যে উইন্ডোজগুলি ছাড়া আর কোন বুটলোডার, ntldrএবং bootmgr, GRUB ntldrকমান্ড লোড করতে সক্ষম হতে পারে?


1
দুর্দান্ত জিনিস! আমি সত্যিই মনে করি আপনার গ্রুভ-ডেভেল মেলিং তালিকার একটি লাইন ফেলে দেওয়া উচিত এবং তাদের এই প্রশ্নটি দেখার জন্য জিজ্ঞাসা করুন এবং সম্ভবত কিছু উত্তর না দেওয়া প্রশ্নে চিমি দেওয়া উচিত এবং / অথবা আমাদের কিছু অনুমান সংশোধন করতে হবে। প্রশ্নটি প্রথম স্থানে খোলার জন্য ধন্যবাদ!
ckhan

উত্তর:


14

অননুমোদিত বৈশিষ্ট্যটি গবেষণা করা হচ্ছে

আপনি ঠিক ntldrকমান্ডটি (এটি কমান্ড, মডিউল নয়) নথিভুক্ত নয়। সুতরাং কোড প্রত্নতত্ত্ব কিছু অ্যাডভেঞ্চারের জন্য এটি একটি দুর্দান্ত অজুহাত ।

যখনই আমি একটি অনিবন্ধিত বৈশিষ্ট্যটি পাই, প্রথমে করণীয় হ'ল চেক উত্স।

এটি chainloaderকমান্ডের উপর খুব ঘনিষ্ঠভাবে ভিত্তি করে তৈরি হয়েছে , যাতে শিরোনামের মন্তব্যে ফাইলের নামটি এখনও আপডেট হয়নি।

এখন আমাদের একটি সঠিক চেকিন এবং একটি নাম রয়েছে, আমরা মেলিং সংরক্ষণাগারগুলি পরীক্ষা করতে পারি। গ্রাভ-ডেভেল মেলিং তালিকায় এক বছর আগে এই বৈশিষ্ট্যটি যুক্ত করার বিষয়ে যেখানে বিকাশকারীরা আলোচনা করেছিলেন তা আপনি দেখতে পারেন :

এই থ্রেড থেকে কিছু প্রাসঙ্গিক অংশ:

রবার্ট মিল্লান এই প্যাচটি এনটিএলডিআর বুট শব্দার্থবিজ্ঞানের জন্য একটি লোডার প্রয়োগ করে (যা বুটএমজিআর-তে সমান, তাই উভয়ই সমর্থিত)

রবার্ট মিল্লান যদি আমরা এই বৈশিষ্ট্যটি একেবারে চাই, তবে আমি মনে করি এটি স্ট্যান্ডেলোন কমান্ডের চেয়ে চেইনলোডারের একটি বিকল্প হওয়া উচিত। এটি সত্যই চেইনলোডার হিসাবে প্রায় একই, পার্থক্য হ'ল পিটিবিআরের পরে পিবিআরের পরিবর্তে পিআরবি নিজেই পিআরবি দ্বারা লোড হয় এনটিএলডিআর।

ভ্লাদিমির সার্বিনেনকো আমি মনে করি না যে এটি কোনও সমস্যা হয়েছে কারণ এনটিএলডিআর এই পার্টিশনটিকে পার্টিশন সনাক্তকরণের জন্য কেবল সুপারব্লক হিসাবে ব্যবহার করেন। এইরূপে আমি বরং এই লোডটিকে রুট কেটে যাওয়ার বিশেষ কেস হিসাবে বিবেচনা করব, কেবল এটির ফর্মটি কিছুটা অদ্ভুত

ইয়ভেস ব্লসাসু কমান্ডটি সম্পর্কে, আমি মনে করি যে এটির ব্যবহারকারীর পক্ষে সহজ হবে যদি আমাদের কেবল একটি কমান্ড থাকে: চেইনলোডার (গ্রুবডডোসের মতো) যা বুটলোডারের ধরণটি সনাক্ত করার চেষ্টা করবে। এটি কেবল আমার ব্যক্তিগত মতামত।

ভ্লাদিমির সার্বিনেঙ্কো আমি এর সাথে একমত নই। চেইনলোডার এবং এনটিএলডিআর একই সিনট্যাক্সটি ভাগ করবেন না: চেইনলোডার একটি বুটসেক্টর প্রত্যাশা করে যেখানে এনটিএলডিআর একটি এনটিএলডিআর বুটমগ্রার ফাইলের প্রত্যাশা করে। GRUB1 এর মধ্যে একটি "কার্নেল" কমান্ড হওয়ায় GRUB1 এর খারাপ ডিজাইন সিদ্ধান্তগুলি ভেঙে ফেলা হয়। GRUB4DOS এই বিষয়ে GRUB1 অনুসরণ করে।

রবার্ট মিল্লান ঠিক আছে। এটি একটি পৃথক কমান্ড করা যাক। আমি মনে করি এটি এখনও চেইনলোডার.c এর সাথে কোড ভাগ করা উচিত যদিও (কিছু ifdefs সহ)।

আপনার প্রশ্নের উত্তর দিচ্ছেন

এত কিছুর ছাপ দেওয়ার পরে, কীভাবে এটি ব্যবহার করা যেতে পারে সে সম্পর্কে আমরা কী জানি?

  • এটি চেইনলোডার উপর ভিত্তি করে।

  • এটি একক যুক্তি লাগে: ফাইলটি খোলার জন্য।

  • এটি পার্টিশন বুট রেকর্ড এড়ায়: সুতরাং এটি দুর্নীতিকে বাইপাস করতে পারে। তারা কীভাবে পরীক্ষা করেছিল তা বিশদে এই পোস্টটি দেখুন ।

  • এটি কোডের প্রায় 160 লাইন , আপনি দেখতে পাচ্ছেন সেখানে খুব বেশি কিছু নেই।

আশা করি এটি কার্যকর ছিল!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.