চিত্রগুলিতে চালিত সফ্টওয়্যার আপগ্রেড করতে আমাদের সীমিত এসডি রাইটিং চক্রটি ব্যবহার করা নির্বোধ বলে মনে হচ্ছে। এসডি কার্ডে কোনও চিত্র ফ্ল্যাশ করার আগে আমরা কী সফ্টওয়্যারটি আপগ্রেড করতে এবং নতুন সফ্টওয়্যার ইনস্টল করতে পারি?
চিত্রগুলিতে চালিত সফ্টওয়্যার আপগ্রেড করতে আমাদের সীমিত এসডি রাইটিং চক্রটি ব্যবহার করা নির্বোধ বলে মনে হচ্ছে। এসডি কার্ডে কোনও চিত্র ফ্ল্যাশ করার আগে আমরা কী সফ্টওয়্যারটি আপগ্রেড করতে এবং নতুন সফ্টওয়্যার ইনস্টল করতে পারি?
উত্তর:
উত্তরটি সর্বদা হ্যাঁ, ঠিক আছে, কীভাবে কাজ করতে কিছুক্ষণ সময় লাগে!
আমি এটি ব্রাইটবক্স ডট কম দ্বারা সরবরাহিত কোনও ভিপিএসে চালিয়ে যাব । আমি একটি ন্যানো সার্ভার (2 সিপিইউস, 512 এমবি র্যাম, 20 গিগাবাইট ডিস্ক স্পেস) এবং একটি উবুন্টু যথার্থ 12.04 এলটিএস সার্ভার চিত্র ব্যবহার করেছি। এটি ইসি 2 বা লিনোডের সমতুল্য এবং অবশ্যই আপনার হোম লিনাক্স মেশিনে কাজ করা উচিত। আমি এখন এটি আমার (x86) আর্ক ইনস্টলেশনতে পরীক্ষা করেছি, তবে জানি এটি উবুন্টু 10.04 এলটিএসে কাজ করে না কারণ কিছু প্যাকেজ খুব পুরানো।
আপনার নিজস্ব সিস্টেমটি আপ টু ডেট রয়েছে তা নিশ্চিত করুন।
$ sudo apt-get update
$ sudo apt-get upgrade
কিছু নতুন সফ্টওয়্যার ইনস্টল করুন
$ sudo apt-get install binfmt-support qemu qemu-user-static unzip
qemu
একটি এআরএম এমুলেটর, এবং qemu-user-static
এবং binfmt-support
এআরএম কার্নেল এমুলেট ছাড়া এআরএম এক্সেকিউটেবল চালানোর জন্য আমাদের পারেন। (কিভাবে শীতল হয়!?!)
আমি qemu
আর্চ সংগ্রহস্থলগুলিতে কোনও স্ট্যাটিকালি লিঙ্ক পাই না , সুতরাং আমাদের উত্স থেকে সংকলন করতে হবে।
আনজিপ করে চালান
./configure --disable-kvm --target-list=arm-linux-user --static
ব্যবহার করে make
ইনস্টল করুন এবং ব্যবহার করে ইনস্টল করুন sudo make install
।
নিম্নলিখিত হিসাবে চালান root
echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/local/bin/qemu-arm:' > /proc/sys/fs/binfmt_misc/register
echo ':armeb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/local/bin/qemu-armeb:' > /proc/sys/fs/binfmt_misc/register
সতর্কতা: আপনাকে অনলাইনের মতো স্বেচ্ছাসেবক কমান্ডগুলি চালানো উচিত নয়
root
- এগুলিqemu-binfmt-conf.sh
এআরএম সিপু টাইপের আওতায় নেওয়া হয়েছিল । দয়া করে এই ফাইলটি থেকে আদেশগুলি সরিয়ে নিয়ে সেগুলি চালান run
Raspberrypi.org এ যান এবং আপনার ইমেজটি ডাউনলোড করুন। এটি আনজিপ করুন এবং .img
কোথাও দরকারী ফাইলটি সংরক্ষণ করুন ।
$ sudo mkdir -p /images/debian-squeeze
$ sudo wget "http://files.velocix.com/c1410/images/debian/6/debian6-19-04-2012/debian6-19-04-2012.zip" -O "/images/debian-squeeze.zip"
$ sudo unzip "/images/debian-squeeze.zip" -d /images/debian-squeeze
$ sudo rm /images/debian-squeeze.zip
.img
বুট পার্টিশন সহ 3 পার্টিশন, উপস্থিত থাকবে।
$ cd /images/debian-squeeze/debian6-19-04-2012/
$ fdisk -lu debian6-19-04-2012.img
Disk debian6-19-04-2012.img: 1949 MB, 1949999616 bytes
4 heads, 32 sectors/track, 29754 cylinders, total 3808593 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ee283
Device Boot Start End Blocks Id System
debian6-19-04-2012.img1 2048 155647 76800 c W95 FAT32 (LBA)
debian6-19-04-2012.img2 157696 3414015 1628160 83 Linux
debian6-19-04-2012.img3 3416064 3807231 195584 82 Linux swap / Solaris
আমাদের লিনাক্স পার্টিশনের অফসেট জানতে হবে, এক্ষেত্রে এটি 157696
সেক্টর এবং বুট পার্টিশন যা 2048
খাতগুলিতে রয়েছে। প্রতিটি সেক্টর 512 বাইট, তাই মূল অফসেটটি 157696*512=80740352
বাইট এবং বুট অফসেট হয় 2048*512=1048576
।
এর পরে, আমাদের একটি ফাইল সিস্টেম হিসাবে চিত্রটি মাউন্ট করতে হবে। এটি একটি লুপব্যাক ডিভাইস ব্যবহার করে করা যেতে পারে। mount
কোন পার্টিশন মাউন্ট করতে হবে এবং কোথায় তা জানাতে আমরা পূর্ববর্তী বিভাগ থেকে অফসেট ব্যবহার করি । এই আদেশগুলির ক্রমটি গুরুত্বপূর্ণ।
$ sudo mount -o loop,offset=80740352 "/images/debian-squeeze/debian6-19-04-2012/debian6-19-04-2012.img" /mnt
$ sudo mount -o loop,offset=1048576 "/images/debian-squeeze/debian6-19-04-2012/debian6-19-04-2012.img" /mnt/boot
আমরা chroot
আমাদের ফাইল সিস্টেমে প্রবেশের জন্য প্রায় প্রস্তুত এবং নতুন সফ্টওয়্যার ইনস্টল করা শুরু করি। প্রথমত, আমাদের অবশ্যই আমাদের চিত্রটিতে এমুলেটরটি ইনস্টল করতে হবে, কারণ এটি ব্যবহার করার পরে এটি উপলব্ধ হবে না chroot
।
$ sudo cp /usr/bin/qemu-arm-static /mnt/usr/bin/
$ sudo cp /usr/local/bin/qemu-arm /mnt/usr/local/bin/
আমাদের সিস্টেমের অন্যান্য কয়েকটি অংশেও অ্যাক্সেস সরবরাহ করতে হবে।
$ sudo mount --rbind /dev /mnt/dev
$ sudo mount -t proc none /mnt/proc
$ sudo mount -o bind /sys /mnt/sys
আমরা করেছি! chroot
দূরে ...
$ sudo chroot /mnt
আপনি এখন আপনার রাস্পবেরি পাইতে রয়েছেন তবে পরিষেবাগুলি চলছে না ইত্যাদি সতর্কতা অবলম্বন করুন আপনি রুট!
সফ্টওয়্যার আপডেট করার জন্য, আমরা ব্যবহার করি apt-get
।
# apt-get update
# apt-get upgrade
আপনি apt-get install
যথারীতি ব্যবহার করে সফ্টওয়্যার ইনস্টল করতে পারেন ।
সফ্টওয়্যার আপডেট করার জন্য, আমরা ব্যবহার করি pacman
।
# pacman -Syu
আপনি pacman -S
যথারীতি ব্যবহার করে সফ্টওয়্যার ইনস্টল করতে পারেন ।
উল্লেখ্য আপনি চালাতে পারেন
pacman
নির্দেশাবলী অনুসরণ করে স্থানীয়ভাবে আমি কিভাবে আমার নেটিভ চালানোpacman
বিরুদ্ধে একটি ইমেজ মাউন্ট? ।
আপনি + chroot
ব্যবহার করে প্রস্থান করতে পারেন এবং চালিয়ে সিস্টেমটিকে আনমাউন্ট করতে পারেন - আপনাকে প্রতিটি মাউন্ট পয়েন্ট পৃথকভাবে আনমাউন্ট করতে হবে ..CtrlDsudo umount /mnt
আপনি ভাগ করা উচিত নয় qemu-user-static
থেকে /usr/bin
বা qemu-arm
থেকে /usr/local/bin
RPi উপর, তারপর ইমেজ চমকিত হওয়ার জন্য প্রস্তুত হয়।
এটি কিছুটা দীর্ঘ এবং ক্লান্তিকর, তবে এটি একবার করুন এবং আপনি কীভাবে এই সমস্ত কাজ করে তা বোঝা শিখবেন!
সর্বশেষ চিত্রগুলিতে এটি চালানোর চেষ্টা করার সময়, আপনি একটি ত্রুটি পাবেন
qemu: uncaught target signal 4 (Illegal instruction) - core dumped
Illegal instruction (core dumped)
এই ত্রুটিটি ঠিক করতে, কেবল /etc/ld.so.preload
ফাইলের বিষয়বস্তু সম্পর্কে মন্তব্য করুন
piimg
আপনার জন্য অনেক কিছু করার জন্য আমি একটি ইউটিলিটিতে কাজ শুরু করেছি। একে পাইমগ বলা হয় এবং github.com/alexchamberlain/piimg এ পাওয়া যায় ।
এখনও অবধি এটি চালিয়ে আপনার জন্য এসডি কার্ড মাউন্ট করতে পারে
piimg mount /images/debian-squeeze/debian6-19-04-2012/debian6-19-04-2012.img /mnt
এবং দৌড়ে আবার এটিকে আনমাউন্ট করুন
piimg umount /mnt
আপনার কেবল ইনস্টল qemu
এবং chroot
দূরে প্রয়োজন।
অগ্রাহ্যকারী আমি, অ্যালেক্স চেম্বারলইন, এর প্রধান বিকাশকারী
piimg
। যেমন, আমিpiimg
অন্যান্য পদ্ধতির সাথে ব্যবহারের প্রতি পক্ষপাতদুষ্ট হতে পারি ।
sudo kpartx -av rpi_pisces_mate_r1.img
, যা পার্টিশন প্রদর্শন করবে। বৃহত্তম ব্যবহার করুন এবং এটি মাউন্ট করুন, যেমন sudo mount /dev/mapper/loop0p3 /mnt/tmp
।
এটি ঘূর্ণায়মান হওয়ার সাথে সাথে এখানে একটি দ্রুত স্ক্রিপ্ট আমি একত্রিত করেছি একটি চিত্র ফাইলের প্রথম লিনাক্স পার্টিশনটিকে নিজের ঝুঁকিতে ব্যবহার করুন। এটি পরিচালনা / ইনপুট বৈধতা কোন ত্রুটি আছে
#!/bin/bash
# This script is designed to mount
# the first Linux filesystem
# in the partition table of the
# image handed to it
USAGE="$0 <image name> <mount point>"
IMAGE=$1
MOUNTPT=$2
OFFSET=`fdisk -lu $IMAGE | grep -m 1 Linux$ | awk '{ print $2 *512 }'`
echo "Executing as $USER: mount -o loop,offset=$OFFSET $IMAGE $MOUNTPT"
mount -o loop,offset=$OFFSET $IMAGE $MOUNTPT
আমি আমার প্রধান পিসির মাধ্যমে পিআইয়ের জন্য কেবল স্টাফ তৈরির জন্য কোনও পদ্ধতির সন্ধানের নির্দেশনাগুলি অনুসরণ করেছি, এটি খুব সহজ ছিল, একবার যখন আপনি আঁকিয়ে থাকেন আপনি চিত্রটি এমনভাবে ব্যবহার করতে পারেন যেন এটি একটি লাইভ সিস্টেম এবং সমস্তটি ব্যবহার করে নেটিভ অ্যাপ্লিকেশন তেহ পাইতে, সুতরাং ক্রস সংকলক ইনস্টল করার দরকার নেই :)
আমার একটি প্রশ্ন আছে যদিও, ক্রুটটি সেটআপ করার সময়, ক্রুট সঠিকভাবে কাজ করার জন্য আমাদের কয়েকটি পার্টিশন মাউন্ট করতে হবে:
$ sudo mount --rbind /dev /mnt/dev
$ sudo mount -t proc none /mnt/proc
$ sudo mount -o bind /sys /mnt/sys
এগুলি আমরা কীভাবে সঠিকভাবে আনমাউন্ট করব? তাদের মাউন্ট রেখে যা আপনাকে .img ফাইলটি আনমাউন্ট করা থেকে বিরত রাখে, এখানে যে কোনও সহায়তা প্রশংসিত হবে। আমি -f বিকল্পটি চেষ্টা করে দেখেছি, মাউন্ট করা কিছু অন্তর্নিহিত আছে কিনা তা নিশ্চিত নই।
আমার নিজের প্রশ্নের উত্তর দিয়ে https://bugzilla.redhat.com/show_bug.cgi?id=194342 পোস্টের শেষে দ্বিতীয় পদ্ধতিটি আমার জন্য একটি সুডো পরিবর্তন নিয়ে কাজ করেছে।
cat /proc/mounts | awk '{print $2}' | grep "^$MOUNTPOINT" | sort -r | xargs sudo umount
স্পষ্টতই আপনার ক্রুট মাউন্ট পয়েন্টের পথে UN MOUNTPOINT পরিবর্তন করুন (উপরের টিউটোরিয়ালটিতে / mnt ইমেজ ফাইলে rootfs সহ ২ য় পার্টিশন)। এই পদ্ধতিটি ব্যবহার করে আপনি ক্রুটের মাধ্যমে মাউন্ট করা লুপব্যাক ডিভাইস এবং অন্য কোনও ডিভাইস থেকে img ফাইলটিকে সম্পূর্ণ আনমাউন্ট করে।
cat /proc/mounts |awk '{print $2}'|grep $CHROOTMOUNT |sort -r|xargs sudo umount
sudo umount $CHROOTMOUNT