রামডিস্ক সহ কার্নেল চিত্র (.img) তৈরি করা হচ্ছে


12

নিম্নলিখিত পদক্ষেপগুলি সহ আমি আমার রাস্পবেরি পাইয়ের জন্য আমার লিনাক্স কার্নেল (3.0.1) তৈরি করেছি:

1. Downloading kernel source
2. tar xvf source.tar.bz2
3. downloading arm cross compilation tool.
4. tar xvf arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
5. setting up path for cross tool export PATH=$PATH:/home/shan/<cross tool folder>/bin/
6. after entering linux source dir make ARCH=arm versatile_defconfig (is this reliable   with raspberry pi)
7. make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
8. zImage is generated in /arch/arm/boot

আমার প্রশ্ন হ'ল আমি কীভাবে কার্নেল.আইএমজি তৈরি করতে পারি? আমি মনে করি এটিতে zImage + ramdisk রয়েছে তবে আমি কীভাবে এটি তৈরি করতে পারি?

কেহ আমাকে রামডিস্ক তৈরি করতে গাইড করতে এবং এই দুটি কে কার্নেল.আইএমজি ফাইলে প্যাক করতে পারে? আমি আমার রাস্পবেরি পাইতে এই কার্নেলটি বুট করতে চাই।


এটি একটি দুর্দান্ত প্রশ্ন যা আমি অবাক হয়ে এখনও জিজ্ঞাসা করা হয়নি।
জিভিংস

আপনি কার্নেল 3.0.0 ব্যবহার করছেন কেন? এই ভ্যানিলা কার্নেলটি কি kernel.orgসাইটে পাওয়া যায় ?
ক্রিজিসটফ অ্যাডামস্কি

হ্যাঁ, আমি এটি কর্নেল.অর্গ থেকে পেয়েছি
শান্তনু ব্যানার্জি

আমি কিউমু এবং ক্রসকম্পলড রাস্পবেরি পাই -২ কার্নেল সম্পর্কে একটি নতুন প্রশ্ন যুক্ত করেছি ইনগ্রামফক্সে ব্যস্তবক্সের সাথে: raspberrypi.stackexchange.com/questions/56302/…
42n4

উত্তর:


8

কার্নেল.আইএমজি ফাইল

লিনাক্স কার্নেল ব্যবহার করার সময়, kernel.imgফাইলটি কেবল একটি নতুন নামকরণ করা হয় linux/arch/arm/boot/Image। এটাও সম্ভব হওয়া উচিত (অথবা অন্তত এটা সম্ভব শেষ সময় আমি চেক ছিল না) এই ফাইলের সংকুচিত সংস্করণ ব্যবহার করা - zImageinitramfsএটিতে ইন্টিগ্রেটেড (র‌্যামডিস্ক) থাকতে পারে তবে এটির প্রয়োজন নেই। উদাহরণস্বরূপ, স্টক kernel.imgফাইলটি করার initramfsসময় থাকে kernel_emergency.imgনা।

দ্রষ্টব্য: ইলিনাক্স উইকিতে অফিসিয়াল কার্নেল সংকলন গাইড আপনাকে ফাইল imagetool-uncompressed.pyপ্রস্তুত করার জন্য সরঞ্জাম ব্যবহার করা উচিত বলে পরামর্শ দেয় kernel.img। রাস্পবেরিপির প্রথম দিনগুলিতে এটি প্রয়োজনীয় ছিল তবে আজকাল বুটলোডার নিয়মিত Imageএবং zImageফাইলগুলি পরিচালনা করতে পারে ।

কার্নেল উত্স ইস্যু

যা খুব গুরুত্বপূর্ণ তা হল রাস্পবেরিপির জন্য কার্নেল তৈরি করার সময়, আপনি কেবল এটির কোনও সংস্করণ ব্যবহার করতে পারবেন না। কেবলমাত্র বিশেষ সংস্করণ যা রাস্পবেরিপিতে পোর্ট করা আছে সেগুলি কাজ করবে। দুর্ভাগ্যক্রমে, বর্তমান প্রবাহের সংস্করণ ( kernel.orgসাইটে পাওয়া যায় ) রাস্পবেরিপির সাথে সামঞ্জস্যপূর্ণ নয়। এছাড়াও, versatil_configরাস্পবেরিপির পক্ষে ভাল নয়, bcmrpi_defconfigপরিবর্তে আপনার ব্যবহার করা উচিত (রাস্পবেরিপি সুসংগত কার্নেল উত্সগুলিতে পাওয়া যায়) অথবা bcmrpi_emergency_defconfigযদি বিল্টিন ব্যবহারের পরিকল্পনাটি আপনার করা হয় initramfs

কার্নেল বিল্ডিংয়ের নির্দেশাবলী

রাস্পবেরিপির জন্য কার্নেল উত্সগুলি ধরে নেওয়ার সেরা স্থানটি ফাউন্ডেশন গিথুব । এটি কীভাবে পাবেন এবং অফিসিয়াল রাসব্পেরিপি উইকিতে এটি কীভাবে সংকলন করবেন সে সম্পর্কেও আপনি কিছু দরকারী ব্যাখ্যা পেতে পারেন । এখানে জড়িত পদক্ষেপগুলির আমার ছোট্ট সরলিকৃত সংস্করণটি (দ্রষ্টব্য: আমি ধরে নিয়েছি আপনি কার্নেলটি ক্রস কম্পাইল করতে চান It এটি আরও দ্রুত এবং একই ফলাফল তৈরি করা উচিত তবে রাস্পবেরিপিতে স্থানীয়ভাবে কার্নেল তৈরি করাও সম্ভব):

  1. আপনার নিজস্ব তৈরি করতে অফিসিয়াল সরঞ্জামচেনটি ডাউনলোড করুন। প্রথম উপায়, আমি ধরে নিচ্ছি এটি ইনস্টলড আছে /usr/bin/arm-linux-gnueabi-*। আপনার যদি এটি অন্য জায়গায় থাকে তবে CROSS_COMPILEআপনার সমস্ত makeকমান্ডের বিকল্প পরিবর্তন করা উচিত ।

  2. Https://github.com/raspberrypi/linux সাইটে যান যেখানে আপনি অফিসিয়াল র‌্যাপসবেরিপি কার্নেল উত্সগুলি পেতে পারেন। আপনি কোডটি দুটি উপায়ে ডাউনলোড করতে পারেন:

    • একটি সংকুচিত ফাইল হিসাবে (এই বিকল্পটি ব্যবহার করার জন্য আপনাকে gitইউটিলিটি ইনস্টল করতে হবে না এবং আপনি এটি রাপসবেরিপিতে নিজেই করতে পারেন): সাইটের উপরে ZIPকিছুটা নীচে আইবনে ক্লিক করুন Code। এটি আপনাকে লেটস উত্স ফাইলগুলি ফাইল হিসাবে ডাউনলোড করতে দেওয়া উচিত zip। পরিবর্তে আপনি এটি করতে গিট ব্যবহার করতে পারেন তবে এটির (উইকিতে বর্ণিত) আরও অনেক বেশি জায়গা এবং সময় প্রয়োজন। তারপরে উত্স ট্রি পেতে ফাইলটি সংক্ষেপিত করুন।
    • gitইউটিলিটি ব্যবহার করে (এটি রাস্পবেরিপিতে আমার পক্ষে কার্যকর হয়নি কারণ সম্ভবত সামান্য পরিমাণের র্যাম রয়েছে তবে ডেস্কটপ সিস্টেমে ঠিক কাজ করা উচিত (নোট --depth 1যুক্তি যা গিটকে বিকাশের পুরো ইতিহাস ডাউনলোড করতে বাধা দেয় (যা বিশাল)):

      git clone --depth 1 git://github.com/raspberrypi/linux.git
      
  3. ভিত্তি দ্বারা সরবরাহিত ডিফল্ট কনফিগারেশন ব্যবহার করুন:

    cp arch/arm/configs/bcmrpi_defconfig .config
    
  4. চালান make oldconfigএবং কিছু প্রশ্নের উত্তর (এটি ডিফল্ট উত্তর ত্যাগ প্রতিটি প্রশ্নে এন্টার করা ঠিক হওয়া উচিত):

    make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- oldconfig
    
  5. কার্নেলটি সঙ্কলন করুন:

    make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-
    
  6. কার্নেল মডিউলগুলি এতে অনুলিপি করুন /tmp/modules:

    make ARCH=arm modules_install INSTALL_MOD_PATH=/tmp/modules
    
  7. Imageহিসাবে ফাইল ব্যবহার করুনkernel.img

  8. আপনার রাস্পবেরিপি রুটফেসের ডিরেক্টরিতে /tmp/modules/lib/modules/আপনার কম্পিউটার থেকে সমস্ত মডিউল আপলোড করুন /lib/modules/

Initramfs যুক্ত করা হচ্ছে

এটি তবে কীভাবে তৈরি করতে হয় তার নির্দেশাবলী সরবরাহ করে না initramfs। যেহেতু এটি অত্যন্ত বিস্তৃত বিষয় (মূলত, আপনাকে ওয়ার্কিং লিনাক্স ইউজারস্পেস এনভায়রনমেন্ট এন্টি তৈরি করতে হবে এটি আসলে কতটা জটিল হতে পারে তার কোনও সীমাবদ্ধতা নেই), এখন আমি এটি এখানে আবরণ করব না। আমি কেবলমাত্র initramfsএটি দুটি পৃথক রূপে ব্যবহার করা যেতে পারে তা লক্ষ্য করব - একক, এটি পৃথক ফাইল এবং বিল্টিন যেখানে এটি কার্নেল চিত্র ফাইলের সাথে সংহত করা হয়েছে (যেমন এটি রয়েছে kernel_emergency.img)। দ্বিতীয় বিকল্পটি রাস্পবেরিপি বুটলোডার দ্বারা সমর্থিত হওয়া উচিত তবে কিছু গুজব রয়েছে যে এটি বর্তমান ফার্মওয়্যার সংস্করণে নষ্ট হয়েছে যাতে আপনার সম্ভবত বিল্ডিন ​​সংস্করণ ব্যবহার করা উচিত।

আরম্ভ করার সর্বোত্তম উপায় হ'ল আরম্ভের গিথুব সংগ্রহস্থল থেকে এটি ডাউনলোড করে আরম্ভ করা আরম্ভের সামগ্রী (এটি কার্নেল_েমার্সেন্সি.আইএমজি জন্য ব্যবহৃত হচ্ছে) ব্যবহার করা এবং আপনি এই iniramfsচিত্রটি ব্যবহার করে কার্নেল বুট করতে সক্ষম হওয়ার পরে , নিজের তৈরি করার চেষ্টা করুন। এর জন্য যা যা করা দরকার তা হ'ল ডাউনলোড ডিরেক্টরিটি ইউিং CONFIG_INITRAMFS_SOURCEকার্নেল কনফিগারেশন বিকল্পটি নির্দেশ করে।

চূড়ান্ত নোট

সুতরাং আপনার এটি 3 টি পদক্ষেপে করা উচিত:

  1. initramfsফাইল ছাড়াই কার্নেল তৈরি এবং বুট করার চেষ্টা করুন।
  2. initramfsআপনার কার্নেলের সাথে প্রস্তুত সামগ্রী যুক্ত করার চেষ্টা করুন ।
  3. initramfsআপনার প্রয়োজন অনুসারে এই সামগ্রীটি পরিবর্তন করুন ।

1
দুর্দান্ত লিখুন, তবে আপনার ব্যবহার করা উচিত নয় zip; gitদক্ষতার সাথে ফাইলগুলি স্থানান্তর করে এবং আপনি depth=1ডাউনলোডের ইতিহাস রোধ করতে ব্যবহার করতে পারেন (আমার মনে হয়)।
অ্যালেক্স চেম্বারলাইন

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

রাস্পবেরি পাইতে কার্নেল সংকলন করা নিজেই একটি ভয়ঙ্কর ধারণা।
অ্যালেক্স চেম্বারলাইন

@ অ্যালেক্সচ্যাম্বারলাইন: এটি সত্যিই ধীর কিন্তু নিশ্চিতভাবেই সম্ভব (আমি নিজে এটি করেছি)। এটি এক রাতে লাগে তাই এটি আসলে খারাপ নয়। তা ছাড়া এতো ভয়ঙ্কর কেন?
ক্রিজিসটফ অ্যাডামস্কি

আমি যদি বিসিএমআরপিপি_স্রোমেন্সি_ডিফকনফিগ ব্যবহার করি তবে এতে কি থ্রিমারফ থাকবে ??
শান্তনু ব্যানার্জি

0

আপনি যদি উভয়টিতে ডেবিয়ানের একই সংস্করণটি চালাচ্ছেন, এক্স-অ্যাপ্ট, ডিপিকিজি-ক্রস ইত্যাদি ব্যবহার করে ... এবং এমেডিয়ান সরঞ্জামগুলি খুব ভালভাবে কাজ করতে পারে।

উত্স: এমবেডিয়ান চলমান এমআরএমড সিস্টেমগুলির জন্য সি ++ অ্যাপ্লিকেশন বিকাশ করতে ব্যবহৃত।

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