Bit৪ বিট মেশিনে 32 বিট কার্নেল সংকলন করুন


23

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

আমার প্রধান ডেস্কটপে কার্নেল সংকলন করতে কেবল 15 মিনিট সময় লাগে তবে এটি একটি 64 বিট মেশিন। উন্নত মেশিন থেকে 32 বিট কার্নেল প্যাকেজ উত্পন্ন করার জন্য আমি কি সংকলনটি অতিক্রম করতে পারি?


ভার্চুয়াল মেশিন এটা করতে পারেন, কিন্তু এটা ধীর হতে হবে
Tachyons

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

এটি আকর্ষণীয় +1 এড
ট্যাচিয়ন্স

উত্তর:


27

যখন কার্নেলটি ক্রস-সংকলিত করা যায়, তবে সবচেয়ে সহজ উপায় হল 32 বিবিট (আই 386) ক্রুট তৈরি করা এবং এটি সেখানে তৈরি করা।

ইনস্টল করুন ubuntu-dev-tools:

$ sudo apt-get install ubuntu-dev-tools

একটি আই 386 ক্রুট তৈরি করুন:

$ mk-sbuild --arch=i386 precise

(আপনাকে সম্ভবত এটি দুবার চালাতে হবে The প্রথমবারের মতো এটি ইনস্টল করে schrootসেট আপ করে দেয় mk-sbuild)

তারপরে ক্রুটে প্রবেশ করুন:

$ schroot -c precise-i386

এবং কার্নেলটি তৈরি করুন, যেমনটি আপনি করুন ly


11
উবুন্টু কার্নেল টিমের ডেভেলপাররা যেমন ব্যবহার করেন তেমন একটি ক্রুটে বিল্ডিং হ'ল পছন্দসই পদ্ধতি।
কলিন ইয়ান কিং

এগুলি হ'ল কিছু চমত্কার দেখার সরঞ্জাম। কালই শট দেব। ধন্যবাদ।
অলি

দয়া করে "আপনার যেমন স্বাভাবিকভাবে" তে প্রসারিত করুন। আমি সাধারণত এ নির্দেশিকাগুলি অনুসরণ করবে help.ubuntu.com/community/Kernel/Compile কিন্তু তারা একটি chroot ভিতরে কাজ করে না - সঙ্গে বিল্ড ডাইস 'মারাত্মক ত্রুটি: লিনাক্স / compiler.h: কোন ফাইল বা ডিরেক্টরির'
অ্যালিস্টার Buxton,

আপনার হোম ফোল্ডারটি ক্রুটে মাউন্ট করা একটি দুর্দান্ত সংযোজনের মতো দেখায়: উইকি.উবুন্টু
সিম্পলসবিল্ড#

5

আফিক, জিসিসিতে, আপনি -m32পতাকাটি সেট করতে পারেন এটি 32 বিট এক্সিকিউটেবলের জন্য লিনাক্স উত্সগুলি সংকলন করতে। মেকফিলগুলি সম্পর্কে আমার কাছে বিস্তৃত জ্ঞান নেই তবে আপনি সেগুলি টুইট করতে পারেন।

সম্পাদনা: আমি এখানে স্ট্যাকওভারফ্লো থেকে একটি প্রশ্ন যুক্ত করতে চেয়েছিলাম , যেখানে এটি সিএফ্লেগ সেট করতে বলা হয়েছে:

export CFLAGS=-m32

এবং টরভাল্ডসের গিথুব অ্যাকাউন্টে লিনাক্স সংগ্রহস্থল থেকে , আমি মূল মেকফিলের নীচের অংশটি পেয়েছি যা আপনাকে দরকারী বলে মনে হতে পারে, কারণ এটিতে বলা হয়েছে যে আপনি পরিবেশের ভেরিয়েবল সেট করে একটি টার্গেট আর্কিটেকচার সেট করতে পারেন। মন্তব্যগুলি পড়ুন, বর্তমানে, এই লাইনগুলি এই ফাইলটি থেকে 174-196 লাইনের মধ্যে রয়েছে :

# Cross compiling and selecting different set of gcc/bin-utils
# ---------------------------------------------------------------------------
#
# When performing cross compilation for other architectures ARCH shall be set
# to the target architecture. (See arch/* for the possibilities).
# ARCH can be set during invocation of make:
# make ARCH=ia64
# Another way is to have ARCH set in the environment.
# The default ARCH is the host where make is executed.

# CROSS_COMPILE specify the prefix used for all executables used
# during compilation. Only gcc and related bin-utils executables
# are prefixed with $(CROSS_COMPILE).
# CROSS_COMPILE can be set on the command line
# make CROSS_COMPILE=ia64-linux-
# Alternatively CROSS_COMPILE can be set in the environment.
# A third alternative is to store a setting in .config so that plain
# "make" in the configured kernel build directory always uses that.
# Default value for CROSS_COMPILE is not to prefix executables
# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
export KBUILD_BUILDHOST := $(SUBARCH)
ARCH        ?= $(SUBARCH)
CROSS_COMPILE   ?= $(CONFIG_CROSS_COMPILE:"%"=%)

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