FREE YOUR ANDROID/ADVANCED GUIDE -- 2011-11-16
13:17:47
boot.img là gì
1 trong số những câu hỏi
phổ biến nhất của những người muốn bắt đầu hack/dev ROM Android là làm cách nào
để unpack, edit và repack 1 file ảnh boot.img. file ảnh boot.img là 1 file nhỏ
(ish) chứa 2 phần chính, kernel (bộ não của hệ thống Android) và
ramdisk (1 bộ lõi các chỉ dẫn và các
mã nhị phân để bắt đầu quá trình boot và quản lý các khía cạnh cơ bản của hệ thống,
như các cổng kết nối, quản lý bộ nhớ và các dịch vụ khởi động). Nếu bạn muốn
thay kernel cho ROM của bạn, hoặc nếu bạn muốn tạo các thay đổi cấp thấp cho
cách thức ROM của bạn hoạt động (như việc biên tập các thiết lập owmemorykiller
để khống chế sao đó bộ nhớ được trống trong hệ thống), thì bạn sẽ cần khả năng
biên tập [edit] file boot.img của bạn.
Bước 1
Theo phương pháp này đầu tiên là cài Cygwin cái cho phép bạn
dùng 1 số công cụ phát triển GNU [GNU Project]
(cơ sở linux truyền thống). Theo hướng dẫn FYA [For Your Amusement
- ý nói hướng dẫn trực quan] ở đây để cài Cygwin lên computer của bạn
(vì yêu cầu của hướng dẫn này, bạn sẽ cần cài perl package cùng với Cygwin).
Bước 2: Download Script Package
Package zip này chứa 1 bộ script [mã lệnh] và mã nhị phân (khởi
đầu được cung cấp bởi HomerSP sau đó được sửa đổi, do đó có thể giờ đã có phiên
bản khác của các tập lệnh này, nhưng đây là cái tôi dùng) được xây dựng riêng [custom-built]
để làm cho các công tác unpacking và re-packing boot.img của bạn trở nên rất dễ
dàng. Giải nén file zip này vào 1 folder trong computer của bạn. Theo yêu cầu
của hướng dẫn này, chúng ta sẽ coi như bạn đã giải nén package này vào: “c:\android\tools\scripts\bootimg-tools”.
Bước 3: Đặt boot.img
của bạn vào folder tập lệnh
Trong hướng dẫn này, tôi sẽ không nói cụ thể việc trích xuất
boot.img trực tiếp từ thiết bị của bạn, thay vào đó chúng ta sẽ coi như bạn đã
làm việc này (thường có thể lấy được 1 cách dễ dàng từ 1 custom ROM .zip). Lấy
boot.img của bạn đặt vào “c:\android\tools\scripts\bootimg-tools”
như ở phần trên.
Bước 4: Trích xuất boot.img!
Chạy Cygwin và điều hướng đến folder này dùng lệnh:
cd /cygdrive/c/android/tools/scripts/bootimg-tools
Giờ giải nén boot.img của bạn bằng
cách chạy lệnh sau:
./extractboot boot.img
Nếu trông giống hình trên là việc trích xuất đã được làm đúng!
Chú ý là chuỗi lệnh đó cũng đã được đọc từ file nguồn, điều này sẽ được sử dụng
sau khi bạn chuẩn bị re-pack file của bạn.
Folder chứa tập lệnh giờ sẽ trông như thế này:
boot.img-kernel là blop [Binary
Large Object - Là kiểu dữ liệu của một cột trong bảng
RDBMS, có thể lưu ảnh lớn hoặc dữ liệu văn bảng như những thuộc tính] của kernel được biên dịch mà nằm bên trong
boot.img nguồn, nếu bạn muốn thay kernel này bằng 1 ảnh kernel được biên dịch
khác, bạn có thể thay file này bằng 1 cái khác (nhưng tên file phải giống
nhau).
boot.img-ramdisk.gz là ảnh của ramdisk được gzip là cái đã được tách từ boot.img, bạn nên để
yên file này.
Folder “out”
chứa ramdisk trích xuất ra, và đây là nơi bạn nên thực hiện các thay đổi cho
ramdisk.
Chú ý quan trọng!
Nhớ rằng, khi biên tập các file trong ramdisk trong Windows, như
init.rc, Windows notepad sẽ không format đúng các file này, làm chúng hầu như
không thể đọc, mà ngược lại Wordpad sẽ TRÔNG như nó đang format các file này
đúng cách, nếu bạn save 1 trong số các
file này từ ứng dụng Wordpad thì nó sẽ BREAK file đó và nó sẽ không còn
khả năng được đọc chính xác bởi Android. Để biên tập các file này bạn PHẢI sử
dụng 1 trình biên tập như Notepad++ bạn có thể download free ở đây.
Bước 5: Re-pack boot.img đã được biên tập của bạn
Hướng dẫn này sẽ không đè cập làm sao thay
đổi các phần cụ thể của ramdisk, nhưng khi bạn đã tiến hành thay đổi cần thiết,
thì giờ bạn đã sẵn sàng để re-pack các file bạn đã biên tập trở lại thành 1
boot.img mới. Từ Cygwin, chạy lệnh này:
./packboot
1 điều lưu ý là có bạn có thể dẫn các hướng dẫn khác, là trong
quá trình pack file boot.img, thường bạn sẽ phải khai báo 1 địa chỉ cơ sở, và 1
dòng lệnh trong công cụ pack. Tập lệnh này đọc dòng lệnh và địa chỉ cơ sở hiện
hành từ file boot.img mà khởi đầu bạn đã cung cấp tại thời gian repack, cho nên
luôn đảm bảo bạn đã cho file boot.img nguồn ban đầu vào trong folder và đừng
đổi tên nó sau khi trích xuất, file boot.img được tạo mới của bạn sẽ được đặt
tên boot_new.img và sẽ KHÔNG ghi đè lên file gốc.
Đã xong!
Nếu màn hình của bạn trông giống như hình ở trên, thì giờ bạn sẽ có 1 file boot_new.img
vừa tạo mới, sẵn sàng được flash trong Android để test, bạn luôn có thể chỉ
việc thay thế boot.img hiện thời trong file zip ROM yêu thích của bạn và flash
nó bình thường để test, những cách flash boot.img cao cấp hơn sẽ phải đề cập
trong 1 hướng dẫn khác!
Hãy post mọi câu hỏi, các hiệu chỉnh ...
vào phần comment và tôi sẽ cố hiệu chỉnh bất kỳ cái gì ngớ ngẩn mà tôi có thể
làm trong hướng dẫn này. Chúc thành công!
Thanks to newbe5 for this fantastic guide!
***
What is boot.img?
One of the most common questions
asked by people who want to get in to Android ROM hacking/development is how to
unpack, edit and repack a devices boot.img. The boot.img is a small (ish) file
that contains 2 main parts, the kernel (the brain of the Android system) and
the ramdisk (a core set of instructions and binaries that begins the boot
process and controls base aspects of the system, such as mountpoints, memory
management and startup services). If you want to replace the kernel on your
ROM, or if you want to make low-level changes to the way your ROM works (like
editing Androids lowmemorykiller settings to control how memory is freed up in
the system) then you will need to be able to edit your boot.img file.
Step 1
The first thing required for this method is to install Cygwin
which allows you to use some (traditionally linux-based) GNU development tools. Follow the FYA guide here to get Cygwin installed
on your computer (for the purposes of this guide, you will need
the perl package installed with Cygwin).
Step 2: Download the Script Package
This Zip package contains a set of Cygwin
scripts and binaries (kindly originally provided by HomerSP and modified, there
may be other versions of these scripts available, but these are the ones I use)
custom-built to make the task of unpacking and re-packing your boot.img
extremely easy. Unpack this zip file to a folder on your computer. For the
purposes of this guide, we will assume you have extracted this package to:
“c:\android\tools\scripts\bootimg-tools”
Step 3: Get your boot.img and Place it in the Script Folder
I will not cover extracting the boot.img directly from your
device in this guide, instead we will assume you already have this (this can
usually be easily obtained from a custom ROM’s update.zip installer package).
Get your boot.img, and place it in the same folder as your extracted scripts.
Step 4: Extract the boot.img!
Launch Cygwin and navigate to this folder using this command:
cd /cygdrive/c/android/tools/scripts/bootimg-tools
Now, unpack your boot.img by running the following command:
./extractboot boot.img
If your output looks like this, then the extraction has worked
correctly! Note that the Command Line string has also been read from the source
file, this will be used later when you go to re-pack your file.
Your script folder should now look like this:
boot.img-kernel is the compiled kernel
blob that was inside the source boot.img, if you want to replace the kernel
with another compiled kernel image, you can replace this file with another one
(but leave the file name the same)
boot.img-ramdisk.gz is the gzipped
ramdisk image which has been split from the boot.img, you should leave this
file alone.
The “out” folder contains the
EXTRACTED ramdisk, and this is where you should make your changes to the
ramdisk.
Important Note!
Remember, when editing files in the ramdisk through Windows, such as init.rc, Windows notepad will not format the files correctly, making them almost impossible to read, wheras Wordpad will LOOK like it is formatting the files correctly, if you save one of these files from the Wordpad application it will BREAK the file and it will no longer be able to be read correctly by Android. To edit these files you MUST use an editor such as Notepad++ which you can download for free from here.
Remember, when editing files in the ramdisk through Windows, such as init.rc, Windows notepad will not format the files correctly, making them almost impossible to read, wheras Wordpad will LOOK like it is formatting the files correctly, if you save one of these files from the Wordpad application it will BREAK the file and it will no longer be able to be read correctly by Android. To edit these files you MUST use an editor such as Notepad++ which you can download for free from here.
Step 5: Re-pack your Edited boot.img
This guide will not cover how to change specific parts of the
ramdisk, but once you have made your required change, you are now ready to
re-pack your edited files back in to a new boot.img.
From Cygwin, run this command:
./packboot
One thing to note that people may mention in other guides, is
that when packing boot.img files, you will usually have to declare a base
address, and a command line to the packaging tool. This set of scripts reads
the existing command line and base address from the boot.img file you
originally provided at the time of repacking, so always make sure you leave
your original source boot.img file in the folder and do not re-name it after
extraction, your newly created boot.img file will be named boot_new.img and
will NOT overwrite the original.
Done! If your screen looks like the image
above, then you should now have a freshly created boot_new.img file, ready to
be flashed to Android for testing, you can always just replace the existing
boot.img in your favourite ROM installer zip and flash it as normal to test,
more advanced boot.img flashing methods will have to be covered in another
guide!
Please leave any questions, corrections etc in the comments and
I will try to repair anything stupid I might have done in this guide. Happy
packing!
Thanks to newbe5 for this fantastic guide!
sao chủ thớt ko chỉ repack bằng soft này kernel_repacker_v1
Trả lờiXóacách này cho các bạn hack/dev mod kernel -- mình chỉ là người dùng bình thường chủ yếu để tìm hiểu thêm :-)
Xóacó nhìu cách repack 1 kernel online/offline miễn phí dễ dàng thôi -- mình dịch bài này chủ yếu để tìm hiểu repack là làm cái gì :-)
XóaNhận xét này đã bị tác giả xóa.
Trả lờiXóaBạn cho mình sdt để tiện lien lạc vời
Trả lờiXóaso ri bạn, mình ko fải dân IT, thích tìm hiểu thì dịch thôi ==> so ri lần nữa =))
Xóa