Boot android là gì

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

Điện thoại và máy tính bảng Android thường mở nhiều hơn so với các đối thủ của chúng chạy hệ điều hành như iOS, Tizen hay Windows 10 Mobile. Nếu bạn không thích firmware nhà sản xuất thiết bị đã cài đặt trên thiết bị Android của bạn, bạn hoàn toàn có thể thay thế nó bằng firmware tùy biến của riêng bạn. CyanogenMod, Paranoid Android và Pure Nexus Project là các ví dụ về firmware tùy biến mà được nhiều người dùng Android thích thú.

Firmware tuỳ biến cũng là cách duy nhất bạn có thể cài đặt các phiên bản mới hơn của Android trên các thiết bị không còn được hỗ trợ bởi các nhà sản xuất của chúng. Trừ khi bạn sở hữu một thiết bị thuộc dòng Nexus hoặc Android One, tôi chắc là bạn đã biết điều đó rồi.

Trong bài này, tôi sẽ giúp bạn hiểu Android firmware thật sự là gì và một thiết bị Android sử dụng nó như thế nào. Tôi cũng giới thiệu đến bạn các công cụ bạn có thể sử dụng để thay thế firmware của thiết bị.

Cảnh báo

Thay thế firmware là một hoạt động ẩn chứa rủi ro có thể làm cho thiết bị của bạn không sử dụng được. Trong hầu hết trường hợp, nó cũng bị từ chối bảo hành. Hãy chắc chắn rằng bạn có một bản sao lưu dữ liệu của bạn và một bản sao tập tin image từ nhà sản xuất điện thoại trước khi bạn tiến hành thử nghiệm flash firmware tuỳ biến.

1. Android Firmware là gì?

Ban đầu, firmware là một thuật ngữ dùng để chỉ các chương trình nhỏ, thực hiện những nhiệm vụ quan trọng được cài đặt trong bộ nhớ chỉ đọc, hoặc ROM của một thiết bị điện tử. Chỉnh sửa firmware là bất khả thi hoặc cần thiết bị đặc biệt thường ngoài tầm với của người dùng bình thường.

Tuy nhiên, Android Firmware thì rất khác. Nó bao gồm toàn bộ hệ điều hành Android và nó được lưu trữ trong một dạng có thể ghi trong bộ nhớ được gọi là NAND flash, cùng một kiểu bộ nhớ được sử dụng trong các thiết bị lưu trữ, như USB và thẻ SD. Từ ngữ firmware được sử dụng chỉ vì các nhà sản xuất thiết bị không bận tâm đến việc thêm một từ ngữ mới cho nó.

Android firmware cũng thường được gọi là Android ROM bởi vì, theo mặc định, nó có thể cho phép người dùng trực tiếp ghi vào nó.

2. Android Firmware có chứa những gì?

Firmware được cài đặt trên thiết bị Android bởi nhà sản xuất của nó chứa một build của hệ điều hành Android và hai chương trình nguồn bổ sung mà thường không thể thay thế, một bootloaderradio firmware.

Tìm hiểu về Bootloader

Một Android bootloader là một phần nhỏ của code riêng có trách nhiệm khởi động hệ điều hành Android khi một thiết bị Android được mở nguồn. Tuy nhiên, bootloader hầu như luôn luôn thực hiện thêm một nhiệm vụ. Nó sẽ kiểm tra hệ điều hành mà nó khởi động có được xác thực hay không.

Làm thế nào để nó quyết định cái gì là xác thực? Nó sẽ kiểm tra nếu phân vùng khởi động đã được ký sử dụng một khóa OEM duy nhất, viết tắt của Original Equipment Manufacturer. Khoá OEM, tất nhiên, thuộc về nhà sản xuất thiết bị, là riêng tư, và không có cách nào bạn có thể biết nó là gì.

Vì sự kiểm tra tính xác thực, nên bạn không thể trực tiếp cài đặt ROM tuỳ biến trên một thiết bị Android. Rất may, ngày nay, hầu hết các nhà sản xuất thiết bị cho phép người dùng vô hiệu hoá việc kiểm tra. Nói theo thuật ngữ Android, họ cho phép người dùng mở khóa bootloader.

Cách thức chính xác mà bạn cần phải thực hiện theo để mở khóa bootloader phụ thuộc vào thiết bị của bạn. Một số nhà sản xuất, chẳng hạn như Sony và HTC, yêu cầu bạn cung cấp một token mở khoá bí mật. Những nhà sẳn xuất khác chỉ cần bạn chạy một tập các lệnh bằng cách sử dụng một terminal.

Thông thường, một công cụ gọi là fastboot, là một phần của Android SDK, được sử dụng để chạy lệnh mở khóa. Ví dụ, nếu bạn sở hữu một thiết bị Nexus, bạn có thể mở khóa bootloader của nó bằng cách chạy lệnh sau:

fastboot flashing unlock

Bạn tìm hiểu thêm về fastboot sau trong bài viết này. Lưu ý rằng, nếu bạn sở hữu một thiết bị có một bootloader mà không thể được mở khóa, thì không có cách nào để bạn có thể chỉnh sửa hoặc thay thế firmware của nó.

Tìm hiểu về Radio Firmware

Có thể bạn sẽ ngạc nhiên, nhưng điện thoại thông minh Android của bạn thực sự chạy một hệ điều hành khác trên một bộ vi xử lý độc lập, được gọi là baseband processor. Radio firmware chỉ đến hệ điều hành chạy trên baseband processor.

Thông thường, nó là một RTOS, viết tắt của real-time operating system, và chịu trách nhiệm quản lý sóng di động radio của thiết bị. Nói cách khác, đó là những gì cho phép điện thoại thực hiện cuộc gọi và kết nối internet bằng cách sử dụng công nghệ không dây như 2G, 3G và 4G LTE.

RTOS là một đoạn code riêng và các nhà sản xuất bộ vi xử lý baseband phổ biến, chẳng hạn như Qualcomm, MediaTek và Spreadtrum, đảm bảo các hoạt bên trong của nó luôn luôn bí mật. Hệ điều hành Android thường liên lạc với RTOS sử dụng các socket and callback.

Nói chung, không nên thay thế radio firmware của thiết bị của bạn.

Tìm hiểu về các bản Build của Android

Bản build của Android là phần duy nhất của firmware được tạo ra từ mã nguồn mở. Do vậy, đây là phần duy nhất mà bạn có thể sửa đổi và mở rộng. Khi bạn nghe những người đam mê Android nói "Tôi flash một ROM mới vào điện thoại của tôi", bạn có thể chắc chắn rằng họ đang nói về một bản Build mới của Android.

Một bản Build của Android thường được chia sẻ ở dạng một tập tin ZIP có thể được sử dụng bởi fastboot. Nó có các nội dung sau đây:

update.zip
|-- android-info.txt
|-- boot.img
|-- recovery.img
|-- system.img
`-- userdata.img

android-info.txt là một tập tin văn bản quy định các yêu cầu tiên quyết của bản build. Ví dụ, nó có thể xác định số phiên bản của bootloader và radio firmware mà bản build cần. Dưới đây là một tập tin android-info.txt mẫu:

require board=herring
require version-bootloader=I9020XXJK1
require version-baseband=I9020XXKD1

boot.img là một tập tin nhị phân chứa cả nhân Linux và một ramdisk dưới dạng một tập tin lưu trữ GZIP. Nhân là một zImage có khả năng khởi động có thể được sử dụng bởi bootloader.

Mặ khác, ramdisk, là một hệ thống tập tin chỉ đọc được gắn kết bởi nhân trong quá trình khởi động. Nó chứa tiến trình được biết đến như là init, tiến trình đầu tiên bắt đầu bởi bất kỳ hệ điều hành dựa trên Linux. Nó cũng chứa nhiều daemon chẳng hạn như adbdhealthd, được bắt đầu bằng tiến trình init. Đây là cây thư mục của ramdisk:

ramdisk/
|-- charger -> /sbin/healthd
|-- data
|-- default.prop
|-- dev
|-- file_contexts
|-- fstab.grouper
|-- init
|-- init.environ.rc
|-- init.grouper.rc
|-- init.grouper.usb.rc
|-- init.rc
|-- init.recovery.grouper.rc
|-- init.trace.rc
|-- init.usb.rc
|-- init.zygote32.rc
|-- proc
|-- property_contexts
|-- sbin
|   |-- adbd
|   |-- healthd
|   |-- ueventd -> ../init
|   `-- watchdogd -> ../init
|-- seapp_contexts
|-- selinux_version
|-- sepolicy
|-- service_contexts
|-- sys
|-- system
|-- ueventd.grouper.rc
`-- ueventd.rc

system.img là partition image sẽ được gắn kết vào thư mục system rỗng mà bạn có thể thấy trong cây ở trên. Nó chứa các dữ liệu nhị phân cần thiết cho hệ điều hành Android chạy. Nó bao gồm các ứng dụng hệ thống, phông chữ, các tập tin framework JAR, thư viện, media codec, và vân vân. Rõ ràng, đây là tập tin mà người dùng Android quan tâm nhất khi họ flash ROM mới.

System image cũng là tập tin làm cho hầu hết người dùng Android quan tâm đến trong việc flash firmware tuỳ biến. Tập tin system image được cung cấp bởi các nhà sản xuất thiết bị thường chứa đầy các ứng dụng và các tùy chỉnh không cần thiết, nói một cách không chính thức là bloatware. Cách duy nhất để loại bỏ bloatware là thay thế system image của nhà sản xuất bằng một system image mong muốn.

userdata.img là một partition image sẽ được gắn kết vào thư mục data rỗng như bạn có thể nhìn thấy trong cây thư mục ramdisk. Khi bạn tải về một ROM tùy biến, image này thường là rỗng và nó được sử dụng để thiết lập nội dung của thư mục data.

recovery.img thì rất giống với boot.img. Nó có một tập tin nhân khởi động mà bootloader có thể sử dụng và một ramdisk. Do đó, recovery image cũng có thể được sử dụng để khởi động một thiết bị Android. Khi nó được sử dụng thay vì Android, một hệ điều hành rất hạn chế được khởi động cho phép người dùng thực hiện các hoạt động quản lý, như thiết lập lại dữ liệu người dùng của thiết bị, cài đặt phần mềm mới, và tạo các bản sao lưu.

Quy trình mà bạn cần phải thực hiện theo để khởi động sử dụng recovery image là tuỳ thiết bị. Thông thường, nó liên quan đến việc nhập vào chế độ bootloader, còn được gọi là fastboot mode, bằng cách nhấn một tổ hợp phím phần cứng hiện diện trên thiết bị, và sau đó chọn tùy chọn Recovery. Ví dụ, trên một thiết bị Nexus, bạn cần phải bấm và giữ phím nguồn kết hợp với phím giảm âm lượng.

Ngoài ra, bạn có thể sử dụng adb, một công cụ được bao gồm trong Android SDK, để trực tiếp vào chế độ recovery.

adb reboot recovery

3. Sử dụng fastboot

Cách dễ nhất để flash firmware mới trên thiết bị của bạn là sử dụng công cụ fastboot. fastboot tuân theo giao thức fastboot để giao tiếp với một thiết bị Android. Tuy nhiên, nó chỉ có thể làm điều này khi thiết bị đã được khởi động trong fastboot mode. Cách nhanh nhất để vào chế độ fastboot là bằng cách sử dụng adb:

adb reboot bootloader

Để flash một ROM tùy biến có sẵn ở dạng một tập tin ZIP có chứa tất cả các tập tin image mà tôi đã đề cập trong phần trước, bạn có thể sử dụng lệnh fastboot update. Ví dụ, ở đây là cách bạn sẽ flash một ROM hiện diện trong một tập tin gọi là update.zip:

fastboot update update.zip

Nếu bạn chỉ muốn flash một image cụ thể, bạn có thể làm như vậy bằng cách sử dụng lệnh fastboot flash. Ví dụ, ở đây là cách bạn sẽ chỉ flash system image:

fastboot flash system system.img

Tương tự, nếu bạn chỉ muốn thay thế boot image, bạn sẽ sử dụng lệnh sau đây:

fastboot flash boot boot.img

Bạn nên luôn luôn kiểm tra một boot image hoặc recovery image có hoạt động hay không trước khi thực sự flash nó vào thiết bị của bạn. Để làm như vậy, bạn có thể sử dụng lệnh fastboot boot. Ví dụ, đây là cách bạn sẽ kiểm tra một recovery image tuỳ biến được gọi là twrp.img có tương thích với thiết bị của bạn hay không:

fastboot boot twrp.img

Lưu ý rằng không có lệnh fastboot nào mà tôi đề cập trong phần này sẽ hoạt động nếu bootloader của thiết bị vẫn chưa được mở khóa.

Tóm tắt

Bây giờ bạn đã biết Android Firmware là gì và cách thay thế nó. Tôi muốn bạn hiểu rằng thay thế firmware là một hoạt động ẩn chứa rủi ro có thể làm cho thiết bị của bạn không sử dụng được. Trong hầu hết các trường hợp, nó cũng mất bảo hành. Hãy chắc chắn rằng bạn có một bản sao lưu dữ liệu của bạn và một bản sao image của nhà máy sản xuất thiết bị trước khi bạn tiến hành thử nghiệm với việc flash firmware tùy biến.