27 মার্চ, 2025 থেকে, আমরা AOSP তৈরি করতে এবং অবদান রাখতে aosp-main এর পরিবর্তে android-latest-release ব্যবহার করার পরামর্শ দিচ্ছি। আরও তথ্যের জন্য, AOSP-তে পরিবর্তনগুলি দেখুন।
আপনার কাটলফিশ আর্কিটেকচারের জন্য উপযুক্ত বুটলোডার টার্গেট তৈরি করুন। যেমন:
x86_64
$tools/bazelrun//u-boot:crosvm_x86_64_dist
aarch64
$tools/bazelrun//u-boot:crosvm_aarch64_dist
ফলে বুটলোডার বাইনারি ( arm64 এর জন্য u-boot.bin এবং x86_64 এর জন্য u-boot.rom ) $PATH_TO_REPO/out/u-boot-mainline/dist এ পাওয়া যায়।
বুটলোডার দিয়ে কাটলফিশ ডিভাইসটি চালু করুন। অটোবুট নিষ্ক্রিয় করতে pause_in_bootloader প্যারামিটারটি অন্তর্ভুক্ত করুন এবং আপনাকে বুটলোডারের সাথে ইন্টারঅ্যাক্ট করতে দিন।
বুটলোডারের সাথে ইন্টারঅ্যাক্ট করতে, বুটলোডার কনসোলের সাথে সংযোগ করুন।
$screen~/cuttlefish_runtime/console
বুটলোডার মিথস্ক্রিয়া সম্পন্ন হলে, কনসোলে boot টাইপ করে বুট চালিয়ে যান।
বিভিন্ন কার্নেল দিয়ে বুটলোডার প্রবাহ পরীক্ষা করুন
বিভিন্ন কার্নেল বা কার্নেল মডিউল দিয়ে বুটলোডার ফ্লো পরীক্ষা করতে, --kernel_path এবং --initramfs_path আর্গুমেন্ট ব্যবহার করে টার্গেট আর্টিফ্যাক্ট (কার্নেল এবং কার্নেল মডিউল) পাস করুন। অ্যাসেম্বলার আর্গুমেন্টে পাস করা আর্টিফ্যাক্টগুলির উপর ভিত্তি করে বুট চিত্রগুলিকে পুনরায় প্যাক করে।
এই পৃষ্ঠার কন্টেন্ট ও কোডের নমুনাগুলি Content License-এ বর্ণিত লাইসেন্সের অধীনস্থ। Java এবং OpenJDK হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2025-07-29 UTC-তে শেষবার আপডেট করা হয়েছে।
[[["সহজে বোঝা যায়","easyToUnderstand","thumb-up"],["আমার সমস্যার সমাধান হয়েছে","solvedMyProblem","thumb-up"],["অন্যান্য","otherUp","thumb-up"]],[["এতে আমার প্রয়োজনীয় তথ্য নেই","missingTheInformationINeed","thumb-down"],["খুব জটিল / অনেক ধাপ","tooComplicatedTooManySteps","thumb-down"],["পুরনো","outOfDate","thumb-down"],["অনুবাদ সংক্রান্ত সমস্যা","translationIssue","thumb-down"],["নমুনা / কোড সংক্রান্ত সমস্যা","samplesCodeIssue","thumb-down"],["অন্যান্য","otherDown","thumb-down"]],["2025-07-29 UTC-তে শেষবার আপডেট করা হয়েছে।"],[],[],null,["# Develop Android bootloader features\n\n\u003cbr /\u003e\n\nThis page describes how to build, run, and develop\n[Android bootloader](/docs/core/architecture/bootloader) features\non a Cuttlefish device.\n\nAOSP sources\n------------\n\nTo develop Android bootloader features, use the Cuttlefish configuration of\n[U-boot](https://www.denx.de/project/u-boot/) with Cuttlefish in\nthe latest release branch (`android16-release`) or on\n[generic system image (GSI)](/docs/setup/create/gsi)\nbranches for Android 11 or higher. The following are the sources in AOSP:\n\n- [Manifest](https://android.googlesource.com/kernel/manifest/+/refs/heads/u-boot-mainline)\n for the Cuttlefish configuration of\n [U-boot](https://www.denx.de/project/u-boot/)\n (`u-boot-mainline`).\n\n- [U-boot bootloader source](https://android.googlesource.com/platform/external/u-boot/+/refs/heads/main).\n\n- [x86 Cuttlefish default bootloader](https://android.googlesource.com/device/google/cuttlefish_prebuilts/+/refs/heads/android16-release/bootloader/crosvm_x86_64).\n\n- [aarch64 Cuttlefish default bootloader](https://android.googlesource.com/device/google/cuttlefish_prebuilts/+/refs/heads/android16-release/bootloader/crosvm_aarch64).\n\n- [QEMU bootloaders (arm, aarch64, x86_64, riscv)](https://ci.android.com/builds/branches/aosp_u-boot-mainline/grid?)\n\nDevelop a bootloader\n--------------------\n\nTo build, run, and develop bootloader features locally, follow these steps:\n| **Note:** Instead of building locally (to avoid downloading the U-boot source and setting up a bootloader development), you can download the relevant artifacts at [ci.android.com](https://ci.android.com/builds/branches/aosp_u-boot-mainline/grid?).\n\n1. Clone the manifest for the Android fork of U-boot:\n\n $ mkdir u-boot-mainline\n $ cd u-boot-mainline\n $ repo init -u https://android.googlesource.com/kernel/manifest -b u-boot-mainline\n $ repo sync -j$(nproc) -q\n\n2. Build the bootloader target appropriate for your Cuttlefish architecture.\n For example:\n\n - x86_64\n\n $ tools/bazel run //u-boot:crosvm_x86_64_dist\n\n - aarch64\n\n $ tools/bazel run //u-boot:crosvm_aarch64_dist\n\n The resulting bootloader binary (`u-boot.bin` for arm64 and `u-boot.rom` for\n x86_64) is found in `$PATH_TO_REPO/out/u-boot-mainline/dist`.\n3. Launch the Cuttlefish device with the bootloader. Include the\n `pause_in_bootloader` parameter to disable autoboot and let you interact\n with the bootloader.\n\n $ launch_cvd \\\n -bootloader /$PATH/$TO/u-boot-mainline/out/u-boot-mainline/dist/u-boot.rom \\\n -pause_in_bootloader -console=true\n\n | **Note:** If on aarch64, use `u-boot.bin` instead of `u-boot.rom`.\n4. To interact with the bootloader, connect to the bootloader console.\n\n $ screen ~/cuttlefish_runtime/console\n\n5. When done with bootloader interactions, continue the boot by typing `boot`\n into the console.\n\nTest bootloader flow with different kernels\n-------------------------------------------\n\nTo test the bootloader flow with different kernels or kernel modules, pass in\nthe target artifacts (kernel and kernel modules) using the `--kernel_path` and\n`--initramfs_path` arguments. The assembler repacks the boot images based on\nthe artifacts passed in the arguments. \n\n cvd create \\\n -kernel_path=/$PATH/$TO/common-android14-6.1/out/android14-6.1/dist/bzImage \\\n -initramfs_path=/$PATH/$TO/common-android14-6.1/out/android14-6.1/dist/initramfs.img\n\nFor more information, see\n[Develop Android Kernels](/docs/devices/cuttlefish/kernel-dev)."]]