আমি এই পৃষ্ঠায় রাস্পবিয়ান চিত্রটি ডাউনলোড করেছি । আমি একটি কার্নেল কম্পাইল করার চেষ্টা করছি যা qemu এর মধ্যে চিত্র বুট করতে ব্যবহার করা যেতে পারে।
আমি কার্নেল.অর্গ থেকে লিনাক্স কার্নেল উত্সটি ডাউনলোড করে দৌড়েছি:
make versatile_defconfig
make menuconfig
আমি তখন নিম্নলিখিত বৈশিষ্ট্যগুলি কার্নেলের সাথে যুক্ত করেছি:
- পিসিআই সমর্থন (CONFIG_PCI)
- এসসিএসআই ডিভাইস সমর্থন (CONFIG_SCSI)
- এসসিএসআই ডিস্ক সহায়তা (CONFIG_BLK_DEV_SD)
- SYM53C8XX সংস্করণ 2 এসসিএসআই সমর্থন (CONFIG_SCSI_SYM53C8XX_2)
- বর্ধিত 3 (এক্সট্রি 3) ফাইল সিস্টেম (CONFIG_EXT3_FS)
- বর্ধিত 4 (এক্সট 4) ফাইল সিস্টেম (CONFIG_EXT4_FS)
আমি লুপটি ডিস্ক চিত্রটি মাউন্ট করেছি এবং:
- মন্তব্য সমূহ
/etc/ld.so.preload /etc/fstabব্যবহার করতে/dev/sda1এবং সামঞ্জস্য/dev/sda2
আমি তখন চিত্রটি আনমাউন্ট করে দিয়ে মেশিনটি শুরু করার চেষ্টা করেছি:
qemu-system-arm \
-M versatilepb \
-m 256 \
-kernel linux-4.3/arch/arm/boot/zImage \
-hda 2015-09-24-raspbian-jessie.img \
-serial stdio \
-append "root=/dev/sda2 rootfstype=ext4 rw console=ttyAMA0"
কার্নেল ফাইল সিস্টেমটি মাউন্ট করতে সক্ষম হয়েছিল তবে এটি তত্ক্ষণাত কিছু সমস্যার মধ্যে পড়ে:
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
CPU: 0 PID: 1 Comm: init Not tainted 4.3.0 #1
Hardware name: ARM-Versatile PB
[<c001b5c0>] (unwind_backtrace) from [<c0017e18>] (show_stack+0x10/0x14)
[<c0017e18>] (show_stack) from [<c0069860>] (panic+0x84/0x1ec)
[<c0069860>] (panic) from [<c0025b98>] (do_exit+0x81c/0x850)
[<c0025b98>] (do_exit) from [<c0025c5c>] (do_group_exit+0x3c/0xb8)
[<c0025c5c>] (do_group_exit) from [<c002dfcc>] (get_signal+0x14c/0x59c)
[<c002dfcc>] (get_signal) from [<c001bf28>] (do_signal+0x84/0x3a0)
[<c001bf28>] (do_signal) from [<c0017a94>] (do_work_pending+0xb8/0xc8)
[<c0017a94>] (do_work_pending) from [<c0014f30>] (slow_work_pending+0xc/0x20)
---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
প্রথমদিকে, আমি ভাবছিলাম যে এটি সেলইনাক্সের সাথে সম্পর্কিত নয়। আমি এর সাহায্যে কার্নেলটি বুট করার চেষ্টা করেছি:
selinux=0 enforcing=0
... কিন্তু এতে একেবারেই কোনও পার্থক্য হয়নি।
আমি কি ভুল করছি? এবং এই ত্রুটিটির অর্থ কী?
আপডেট
আমি ভাগ্যবিহীন, নিম্নলিখিতগুলিও চেষ্টা করেছি:
- আমি
CONFIG_VFPসক্ষম এবং ছাড়াই সংকলনের চেষ্টা করেছি - আমি যোগ
CONFIG_DEVTMPFSএবংCONFIG_DEVTMPFS_MOUNT - প্রয়োগ করা হচ্ছে এই প্যাচ এবং সক্রিয়
CPU_V6,CONFIG_MMC_BCM2835, &CONFIG_MMC_BCM2835_DMA - সরঞ্জামচেন ব্যবহার করে
gcc-linaro-arm-linux-gnueabihf-raspbian সরঞ্জামচেইনের সাথে একটি সাধারণ সি প্রোগ্রাম সংকলন এবং তারপরে কার্নেলের কাছে
init=কাজগুলি দিয়ে যাওয়ার পথে - বাইনারি ফর্ম্যাটগুলির মধ্যে একটি তাত্পর্য আছে তা বিশ্বাস করতে আমাকে নেতৃত্ব দেয়file <sample program>:ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 2.6.26, BuildID[sha1]=e5ec8884499c51b248df60aedddfc9acf72cdbd4, not strippedfile <file from the image>:ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3e92423821f3325f8cb0ec5d918a7a1c76bbd72c, stripped`
আমি এই সাধারণ সি প্রোগ্রামটি সরঞ্জামচেইন দিয়ে সংকলিত করেছি :
<path>/arm-linux-gnueabihf-gcc --static simple.c -o simple
... এবং এটিকে /rootছবিতে অনুলিপি করে init=বুট প্যারামিটারটি এতে পরিবর্তন করে /root/simple। বুট করার সময় এটি আমাকে নিম্নলিখিত দেয়:
Starting bash...
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
মনে হচ্ছে execv()কলটিতে দম বন্ধ হচ্ছে ।
cat .config | grep CONFIG_VFPফলন করেছে CONFIG_VFP=y- দেখে মনে হচ্ছে এটি সক্ষম হয়েছে।
CONFIG_VFPএবং এটি কোনও পার্থক্য করে না।
versatilepbএটি একটি এআরএম 926 সিপিইউ, যা আরপিআই এর এআরএম 1176 এর চেয়ে পুরনো, সুতরাং রাস্পবিয়ান বাইনারিগুলি এমন কিছু অন্যান্য বৈশিষ্ট্য ব্যবহার করতে পারে যা অনুকরণ করা হচ্ছে না। Unixmen.com/emulating-raspbian-used-qemu থেকে , -cpu arm1176সাহায্য করে?