এখানে দীর্ঘ সময়ের ইউনিক্স লোক, তবে অ্যান্ড্রয়েডের বিশ্বে তুলনামূলকভাবে নতুন। পড়তে.
এপিসোড 1: একটি নতুন ব্যাকআপ (আশা করি)
আমি সম্প্রতি একটি আসুস মেমোপ্যাড (ME103K) কিনেছি; আমি তখন মূল হয়ে উঠলাম এবং dd
কেবলমাত্র পঠনযোগ্য system
পার্টিশনের একটি চিত্র বহিরাগত এসডি কার্ডে নিয়েছি :
$ su
# dd if=/dev/block/platform/msm_sdcc.1/by-name/system \
of=/storage/MicroSD/system.img bs=1M
# ls -l /storage/MicroSD/system.img
-rw-r--r-- 1 root root 2147483648 Sep 27 13:15 system.img
আকার (ঠিক 2GiB) কিছুটা সন্দেহজনক ছিল - এসডি কার্ডে FAT32 বিভাজনের কারণে এটি হতে পারে?
না, এটি tune2fs -l
প্রকাশিত হয়নি - প্রকাশিত হয়েছে যে এটি প্রকৃতপক্ষে 2GiB এর মাপের একটি বৈধ EXT4 চিত্র ছিল, যা fsck -f
কোনও ত্রুটি ছাড়াই পাস করেছিল । এবং fastboot
(ট্যাবলেটে সংযুক্ত লিনাক্স মেশিন থেকে) সম্মতি জানানো হয়েছে, এর পরে adb reboot bootloader
:
linuxbox# fastboot getvar all
(bootloader) version-bootloader: 3.03
(bootloader) version-hardware: rev_c
(bootloader) variant: LEOPARDCAT 16G
(bootloader) version-baseband: H00_0.16.F_0521
(bootloader) serialno: 0a3dXXXX
...
(bootloader) partition-type:system: ext4
(bootloader) partition-size:system: 0x0000000080000000
সেই আকারটি আসলে 2 জিবি:
linuxbox# python2 -c 'print 0x0000000080000000'
2147483648
সুতরাং, সমস্ত ভাল - আমার কাছে চিত্রটির ব্যাকআপ রয়েছে। এখন এটি পুনরুদ্ধার পরীক্ষা।
আমি সিস্টেমে ফ্ল্যাশ করার চেষ্টা করি im ট্যাবলেটে ফিরে যান - আমি যে কোনও কিছু থেকে সেরে উঠতে পারি তা নিশ্চিত করতে, ইউনিক্স জগতে আমরা যে ধরণের বুলেট-প্রুফ ব্যাকআপ করি ( উদাহরণস্বরূপ কোনও ড্রাইভের সামগ্রী পুনরুদ্ধার করাdd if=backup.image of=/dev/sdXXX
))
সম্পর্কিত adb
এবং fastboot
নির্দোষভাবে কাজ করা সবকিছু - তাই আমি চেষ্টা করি ...
linux_box# fastboot devices
0a3dXXXX fastboot
linux_box# mount /dev/sdcard /mnt/sdcard
linux_box# cp /mnt/sdcard/system.img .
linux_box# fastboot flash system system.img
error: cannot load 'system.img'
হুম। android-tools-5.1.1
এই ব্যর্থতাটি দেখার জন্য আমি উত্স থেকে আমার বিতরণটি ডাউনলোড এবং বিল্ড করি, ডিবাগ তথ্য যুক্ত করে - এবং ডিবাগারে পদক্ষেপ দিন:
linuxbox# gdb --args fastboot flash system system.img
...
আকর্ষণীয় - যদিও আমি একটি bit৪ বিট মেশিনে আছি, স্পষ্টতই এমন কিছু সমস্যা রয়েছে যা ফাইলের আকারটিকে "নেতিবাচক" করে তোলে (৩২ বিট বিশ্বে, আমার চিত্রের ফাইলের আকার, ২ ^ ৩১, অবশ্যই নেতিবাচক হিসাবে বিবেচিত - যথার্থ হ'ল -2147483648
,।
ঠিক আছে, ঠিক আছে - অ্যান্ড্রয়েডে তারা কীভাবে বড় চিত্র ফাইল ফ্ল্যাশ করে?
গুগলিং, অনুসন্ধান - দেখা যাচ্ছে যে তারা এই make_ext4fs
সরঞ্জামটি ব্যবহার করে, যা ফ্লেশযোগ্য চিত্র তৈরি করে। আসলে এটি আমি স্রেফ সংকলিত একটি অংশ, তাই আমি পাশাপাশি এটি ব্যবহার করতে পারি:
linuxbox# mkdir /system
linuxbox# mount -o loop,ro system.img /system
linuxbox# ls -l /system
total 208
drwxr-xr-x 106 root root 8192 Sep 17 22:24 app
drwxr-xr-x 3 root 2000 8192 Sep 26 21:08 bin
-rw-r--r-- 1 root root 6847 Sep 12 16:59 build.prop
drwxr-xr-x 19 root root 4096 Sep 26 21:08 etc
drwxr-xr-x 2 root root 4096 Aug 11 22:27 fonts
drwxr-xr-x 4 root root 4096 Sep 12 16:56 framework
drwxr-xr-x 10 root root 16384 Sep 12 16:59 lib
drwxr-xr-x 2 root root 4096 Jan 1 1970 lost+found
drwxr-xr-x 3 root root 4096 Aug 11 22:18 media
drwxr-xr-x 59 root root 4096 Aug 11 22:29 priv-app
-rw-r--r-- 1 root root 126951 Aug 1 2008 recovery-from-boot.p
drwxr-xr-x 3 root root 4096 Aug 11 21:02 scripts
drwxr-xr-x 3 root root 4096 Aug 11 21:02 tts
drwxr-xr-x 11 root root 4096 Sep 26 21:08 usr
drwxr-xr-x 8 root 2000 4096 Aug 11 22:29 vendor
drwxr-xr-x 2 root 2000 4096 Sep 26 21:09 xbin
linuxbox# ../extras/source/extras/ext4_utils/make_ext4fs \
-l 2048M new_system.img /system
Creating filesystem with parameters:
Size: 2147483648
Block size: 4096
Blocks per group: 32768
Inodes per group: 8192
Inode size: 256
Journal blocks: 8192
Label:
Blocks: 524288
Block groups: 16
Reserved block group size: 127
Created filesystem with 2666/131072 inodes and 375014/524288 blocks
দুর্দান্ত - যাতে আমি স্পষ্টতই পুরানো ফোল্ডারগুলি থেকে সিস্টেমের চিত্রগুলি তৈরি করতে পারি। আকাশ আমার সীমা হবে - আমি এই চিত্রটিতে যা কিছু চাই তা যুক্ত করতে সক্ষম হব।
আসুন এটি পোড়াও ...
linuxbox# fastboot flash system new_system.img
erasing 'system'...
OKAY [ 0.064s]
sending 'system' (2088960 KB)...
^C
আমি সেই সিটিআরএল-সি মারার আগে 1 ঘন্টা অপেক্ষা করেছিলাম। এবং ট্যাবলেটটিকে পাওয়ার-চক্র করতে হয়েছিল, যা দ্রুতবুট মোডে ফিরে আসে।
এটি ভাল দেখাচ্ছে না।
আমি যদি একটি ছোট চিত্র তৈরি করি? হতে পারে 2 জিবি কোনওভাবেই একটি সমস্যা, এবং এই পার্টিশনটি পুরো সক্ষমতার জন্য ব্যবহৃত হয় না - এতে ফাঁকা জায়গা রয়েছে:
linuxbox# ../extras/source/extras/ext4_utils/make_ext4fs \
-l 1536M new_system.img /system
linuxbox# ./fastboot flash system system.img
erasing 'system'...
OKAY [ 0.065s]
sending 'system' (1572864 KB)...
OKAY [ 51.039s]
writing 'system'...
OKAY [235.080s]
finished. total time: 286.183s
ঠিক আছে, এটি খুব আশাব্যঞ্জক দেখাচ্ছে (এবং মাত্র 5 মিনিট সময় নিয়েছে)। আমার ধারণা আমি এখন আবার চালু করতে পারি এবং সবকিছু স্বাভাবিক হওয়া উচিত, হ্যাঁ?
না :-)
আমি অস্থায়ীভাবে ব্রিকযুক্ত ডিভাইসটিকে কিছু মনে করি না, যতক্ষণ না শেষ পর্যন্ত আমি এটি নিয়ন্ত্রণ করতে পারি (যে মেশিনগুলিতে আমি মাস্টার নই, সেগুলি এমন মেশিন যা আমি চালানোর জন্য যত্নবান নই ;-)
আমি কী ভুল করেছি এবং এর সমাধান করতে আমি কী করতে পারি তার কোনও ধারণা?
আগাম ধন্যবাদ.
PS আমি আমার ট্যাবলেটের জন্য আসুস সমর্থন পৃষ্ঠাটি দেখেছি - তারা কেবল কার্নেলের জন্য উত্স এবং ওভার-দ্য এয়ার। জিপ ফাইল সরবরাহ করে। এর পরিবর্তে মূল থেকে ফাইল-সিস্টেমের স্তরের ব্যাকআপ থাকে - যেমন system
ফোল্ডারটি সেখানে কেবলমাত্র একটি ফোল্ডার হিসাবে উপস্থিত থাকে, একটি চিত্র নয় system.img
, আমি ফ্ল্যাশ করতে পারি না - যাতে এটি আমাকে সত্যিই সহায়তা করে না।
এপিসোড 2: কাস্টম বুটগুলির আক্রমণ
recovery.img
আসুস থেকে যে কোনও ধরণের অনুপস্থিতিতে (কেন কোনও প্রস্তুতকারক ফাস্টবুট-ফ্লেশবল প্রকাশ করতে বিরক্ত করবেন recovery.img
? কেন সত্যই ...) এবং সিডব্লিউএম এবং টিডব্লিউআরপি সাইটগুলি থেকে পুনরুদ্ধার চিত্রগুলিতে একইরকম অনুপস্থিতি ... আমি সমস্ত যুদ্ধে রইলাম একা।
ধন্যবাদ, আসুস এর ওভার-দ্য এয়ার আপডেট ফাইলটি এর অভ্যন্তরে অন্তর্ভুক্ত করেছে ...
linuxbox# unzip -l /opt/Asus/firmware/UL-K01E-WW-12.16.1.12-user.zip |\
grep boot.img$
7368704 2011-03-22 11:21 boot.img
... আমার ট্যাবলেটটির বুট চিত্র। এখন সম্ভবত - ঠিক সম্ভবত - আমি এটি দিয়ে কিছু করতে পারি।
linuxbox$ mkdir rootfs
linuxbox$ cd rootfs
linuxbox$ abootimg -x /path/to/boot.img
linuxbox$ ls -l
bootimg.cfg
initrd.img
zImage
রামডিস্কটি প্রসারিত করা হচ্ছে ...
linuxbox$ mkdir initrd
linuxbox$ cd initrd
linuxbox$ gzip -cd ../initrd.img | cpio -ivd
...
linuxbox$ vi default.prop
default.prop
কার্নেল বুট হয়ে গেলে আমি রুট হওয়ার জন্য সেট আপ করেছি :
ro.secure=0
ro.debuggable=1
ro.adb.secure=0
androidboot.selinux=disabled
আমি অনুলিপি করে /system/bin/sh
( ওভার-দ্য এয়ার আসুস। জিপ ফাইল থেকে ) /sbin/sh
। আমি ব্যস্তবক্সেও একই কাজ করেছি - বেশ সহজ সরঞ্জাম।
এবং বুট.আইএমজি পুনঃস্থাপন করেছে ...
busybox$ find . | cpio --create --format='newc' | gzip -9 > ../initrd.custom.gz
busybox$ cd ..
busybox$ abootimg --create ../new_boot_busybox.img \
-f bootimg.cfg -k zImage -r initrd.custom.gz
abootimg
আসলে আমি প্রথমবার এটি চালানোর ক্ষেত্রে ব্যর্থ হয়েছি , যেহেতু প্যাকেজটি এখন বড়, সেহেতু প্যারামিটারটি পরিবর্তন bootimg.cfg
করতে হয়েছিল updated এটির যা প্রয়োজন তা প্রতিবেদন করে, তাই এটি যথেষ্ট সহজ।bootsize
abootimg
এবং এখন, আমি আমার কাস্টম চিত্র বুট করি ...
linuxbox# fastboot boot new_boot_busybox.img
... এবং নিম্নলিখিত সাক্ষ্য ...
linuxbox# adb logcat
- exec '/system/bin/sh' failed: Permission denied (13) -
linuxbox# adb shell
- exec '/system/bin/sh' failed: Permission denied (13) -
হুম ... সম্ভবত অ্যাডবিডি মূল হিসাবে চালানো হয় না?
linuxbox# adb root
restarting adbd as root
linuxbox# adb shell
- exec '/system/bin/sh' failed: Permission denied (13) -
ভাল ... আমি অ্যাডবিডি, এবং প্যাচ / সিস্টেম / বিন / শ হতে / এসবিন / এস হতে পারি (আমি ওটিএ ইমেজ থেকে ইআরআরডিটির মূলগুলিতে কপি করেছি): রিবুট, ফাস্টবूट ...
linuxbox# adb shell
- exec '/sbin/sh' failed: Permission denied (13) -
অভিশাপ। এই জিনিস কিছু করতে সক্ষম?
linuxbox# adb pull /proc/partitions
15 KB/s (1272 bytes in 0.079s)
এটি ... আসুন দেখুন:
linuxbox# adb pull /proc/mounts
16 KB/s (1358 bytes in 0.079s)
linuxbox# grep system mounts
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 rw,seclabel,relatime,data=ordered 0 0
ঠিক আছে, তাই / সিস্টেম হয় মাউন্ট করা। আমি কি ভিতরে দেখতে পারি?
linuxbox# adb pull /system
remote object '/system' does not exist
কি ... সম্ভবত আমি / প্রোকম / কেএমএসজি কী আছে তা যাচাই করতে পারি ("dmesg" কী আউটপুট দেয়)
linuxbox# adb pull /proc/kmsg
failed to copy '/proc/kmsg' to './kmsg': Operation not permitted
নাহ, আমি এটি করতে মূল হতে হবে।
linuxbox# adb push /sbin/sh /system/bin/sh
failed to copy '/sbin/sh' to '/system/bin/sh': Permission denied
এবং তাও।
এটি বেশ ধাঁধা হয়ে উঠছে ...
fastboot
এটি এখনও চালু রয়েছে (ঠিকঠাক অনুরোধের প্রতিক্রিয়া জানায়) এবং তাই আমি কোনও পুনরুদ্ধার চিত্রটি পোড়াতে পারি, (ক) আমি এমই 103 কে-এর জন্য কোনও সিডাব্লুএম বা টিডাব্লুআরপি পুনরুদ্ধার চিত্রটি খুঁজেছি এবং খুঁজে পাইনি - আমি মনে করি না সেখানে আছে আপনি উল্লেখ করছেন এমন একটি "জেনেরিক" আছে কি? (খ) বিদ্যুৎ বন্ধ, পাওয়ার বোতাম + ভলিউম ডাউন টিপানো পুনরুদ্ধার চিত্রটি নিয়ে আসে না - আমি এখনও কেবল দ্রুতবूट অবস্থায় চলেছি। মো ধারণা কেন। আসলে আমি পুনরুদ্ধার প্রক্রিয়াটি কখনই দেখিনি (এটি দেখতে আগ্রহী কৌতূহল) ...
fastboot boot <FILE>.img
), তারপরে পুরো স্টক জিপ ফাইলটি ফ্ল্যাশ করুন। বিকল্পভাবে, দেখুন স্টক রম ফাইলগুলি উপস্থিত রয়েছে কিনা (ওয়েবে) দেখুন যা ফাস্টবুট ব্যবহার করে ফ্ল্যাশ করা যায়।
unzip -l UL-K01E-WW-12.16.1.12-user.zip | grep recovery
কেবল কয়েকটি শেল স্ক্রিপ্ট দেখায় - আমার একটি চেহারা হবে, তবে সেখানে অবশ্যই নেই recovery.img
)। গুগলিং কোনওভাবেই সহায়তা করেনি - এই ট্যাবলেটটির কোথাও কোনও পুনরুদ্ধার চিত্র নেই ... অনুমান করি dd
তাদের পুনরুদ্ধারের পার্টিশন এবং ভাগ করে নেওয়ার জন্য আমাকে কোনও দয়াবান আত্মার জন্য অপেক্ষা করতে হবে ?