রেফারেন্স প্ল্যাটফর্ম

trout নামে একটি নতুন পণ্যের মাধ্যমে, Android অটোমোটিভ (AAOS) এখন VirtIO স্ট্যান্ডার্ডের সাথে সামঞ্জস্যপূর্ণ পরিবেশে অতিথি ভার্চুয়াল মেশিন (VM) হিসাবে স্থাপনের জন্য সমর্থন প্রদান করে। trout কাটলফিশ ভার্চুয়াল রেফারেন্স প্ল্যাটফর্মের উপর ভিত্তি করে এবং trout ডিভাইস কনফিগারেশন হিসাবে উপলব্ধ। ইউজারস্পেস সোর্স কোড device/google/trout এ পাওয়া যাবে। নীচের সারণীটি trout প্রতিটি সাবসিস্টেমকে ভার্চুয়ালাইজ করতে ব্যবহৃত প্রযুক্তি বর্ণনা করে।

বৈশিষ্ট্য প্রযুক্তি
অডিও কন্ট্রোল HAL vsock/gRPC
অডিও HAL virtio-snd
ব্লুটুথ virtio-console
ডাম্পস্টেট HAL vsock/gRPC
এক্সটেন্ডেড ভিউ সিস্টেম (EVS) virtio-video
গ্যারেজ মোড vsock/gRPC
গ্রাফিক্স virtio-gpu
গ্লোবাল নেভিগেশন স্যাটেলাইট সিস্টেম (GNSS) virtio-console
সেন্সর HAL 2.0 virtio-scmi and IIO
টাচস্ক্রিন ইনপুট virtio-input
যানবাহন HAL vsock/gRPC

ট্রাউট প্রসারিত

নতুন ইন-ভেহিক্যাল ইনফোটেইনমেন্ট (আইভিআই) অ্যান্ড্রয়েড টার্গেট তৈরি করতে trout একটি সূচনা পয়েন্ট হিসাবে ব্যবহার করা যেতে পারে। বিল্ড অবকাঠামোটি প্রসারিত এবং কাস্টমাইজ করার জন্য ডিজাইন করা হয়েছে। যেমন:

# Inherit trout-arm64 default values and settings
$(call inherit-product, device/google/trout/aosp_trout_arm64.mk)

# Customize HALs as needed
LOCAL_VHAL_PRODUCT_PACKAGE := vendor.oem.vhal@2.0-service
LOCAL_AUDIO_PRODUCT_PACKAGE := vendor.oem.audio@6.0-impl

# Configure SELinux policy
BOARD_SEPOLICY_DIRS += device/oem/car/sepolicy/vendor/oem

# Configure properties
LOCAL_DUMPSTATE_PROPERTIES := \
    ro.vendor.dumpstate.server.cid=22 \
    ro.vendor.dumpstate.server.port=406 \
    ro.vendor.helpersystem.log_loc=/data/dumpstate

[... and more as needed ...]

বেশ কিছু অ্যান্ড্রয়েড এইচএএল আলাদাভাবে কাস্টম ইমপ্লিমেন্টেশনের সাথে প্রতিস্থাপিত হতে পারে, অথবা ডিফল্ট ইমপ্লিমেন্টেশন রক্ষণাবেক্ষণ করা হয়েছে কিন্তু নির্দিষ্ট কনফিগারেশন প্যারামিটারগুলিকে লক্ষ্য পরিবেশে সঠিক আন্তঃ-ভিএম যোগাযোগ স্থাপনের জন্য সামঞ্জস্য করা হয়েছে। এই HALগুলি (যানবাহন HAL, অডিও কন্ট্রোল HAL, এবং ডাম্পস্টেট HAL সহ) একটি gRPC ইন্টারফেসের মাধ্যমে বাস্তবায়িত হয় যা AAOS গেস্ট এবং একটি হোস্ট সিস্টেমের মধ্যে একটি vsock সংযোগ দ্বারা সমর্থিত অন্তর্নিহিত বৈশিষ্ট্য বাস্তবায়ন প্রদান করে। বিক্রেতা বৈশিষ্ট্য হিসাবে সঠিক vsock সংযোগ পরামিতি সরবরাহ করার মাধ্যমে এগুলি কনফিগার করা আবশ্যক। সোর্স কোড চূড়ান্ত গ্রাউন্ড ট্রুথ হিসাবে কাজ করে যার উপর বৈশিষ্ট্যগুলি কনফিগারেশন এবং তাদের শব্দার্থবিদ্যার জন্য উপলব্ধ।

ট্রাউট তৈরি করুন

ইউজারস্পেস কম্পাইল করুন

ইউজারস্পেস কম্পাইল করতে:

  1. অ্যান্ড্রয়েড সোর্স ট্রি ডাউনলোড করুন:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. পরিবেশ তৈরি করুন:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

কার্নেল তৈরি করুন

trout 1.1-এর জন্য, AOSP-তে কার্নেল কোডবেস দেওয়া আছে। VirtIO সাবসিস্টেমের জন্য trout -নির্দিষ্ট মডিউল যুক্ত করে, trout কার্নেল আপস্ট্রিম ACK 5.10-এর মতো একই কোড দিয়ে গঠিত।

  1. কার্নেল ক্লোন করতে, চালান:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. কার্নেল রান তৈরি করতে:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

আপনার হাইপারভাইজার সরবরাহকারীর একটি ভিন্ন কার্নেল কনফিগারেশনের প্রয়োজন হতে পারে বা অতিরিক্ত মডিউল যা কম্পাইল করা প্রয়োজন। প্রদান করা হলে এই নির্দিষ্ট নির্দেশিকা অনুসরণ করতে ভুলবেন না।

সম্মতি

যখন AAOS একটি গেস্ট VM হিসাবে চলে, তখন আমাদের লক্ষ্য হল ফ্রেমওয়ার্কের দৃষ্টিকোণ থেকে একটি সামঞ্জস্যপূর্ণ Android স্থাপনা। হোস্ট সাইড সমস্যা হল প্রতিটি বাস্তবায়নের পরিধি এবং trout 1.1 এর সুযোগের বাইরে।

আমরা trout 1.1-এ অতিরিক্ত xTS বৈধতা করিনি। trout 1.0-এ CTS সমর্থনের নীচের আলোচনাটি উল্লেখ করা চালিয়ে যান।

trout 1.0-এ, বেশ কিছু CTS সমস্যা রয়ে গেছে। নিম্নলিখিত CTS মডিউলগুলি পরীক্ষা ব্যর্থতাগুলিকে অন্তর্ভুক্ত করার জন্য পরিচিত:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
CtsVideoTestCases
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHostTestCases
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostTestCases
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
CtsCameraTestCases
CtsLocationGnssTestCases
CtsGraphicsTestCases
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifiedBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCases
CtsAppTestCases
CtsUsbTests
CtsAutoFillServiceTestCases
CtsDisplayTestCases
CtsMediaTestCases
CtsDeqpTestCases
CtsDumpsysHostTestCases
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsPermission4TestCases
CtsNNAPIBenchmarkTestCases
CtsSimpleperfTestCases
CtsAccessibilityTestCases
CtsAppSecurityHostTestCases
CtsKeystoreTestCases

নিম্নলিখিত CTS-V ক্ষেত্রগুলি পরীক্ষায় ব্যর্থতাকে অন্তর্ভুক্ত করার জন্য পরিচিত:

গাড়ি লঞ্চার পরীক্ষা
ব্লুটুথ লো এনার্জি (BLE) বিজ্ঞাপনদাতা পরীক্ষা
স্ট্রিমিং ভিডিও কোয়ালিটি যাচাইকারী
ব্লুটুথ HID ডিভাইস পরীক্ষা
হাইফাই আল্ট্রাসাউন্ড মাইক্রোফোন পরীক্ষা
Hifi আল্ট্রাসাউন্ড স্পিকার পরীক্ষা
আনলক করা ডিভাইসের প্রয়োজনীয় পরীক্ষা
ডায়নামিক সেন্সর আবিষ্কার পরীক্ষা
অফ বডি সেন্সর পরীক্ষা
উল্লেখযোগ্য গতি পরীক্ষা
অডিও আউটপুট রাউটিং বিজ্ঞপ্তি পরীক্ষা
নেটওয়ার্ক অনুরোধ বা সাজেশন পরীক্ষা

রিলিজ নোট

trout 1.1-এ নিম্নলিখিত পরিচিত সমস্যা রয়েছে:

  • trout ইউজার বিল্ড পাওয়া যায় না। সিস্টেমটি -userdebug হিসাবে তৈরি করা হয়েছে, যা কিছু CTS পরীক্ষাকে প্রভাবিত করতে পারে।
  • Android Verified Boot (AVB) সমর্থিত নয়।
  • নিরাপদ বিশ্ব এবং NNHAL সহ কিছু Android সাবসিস্টেম অনুপলব্ধ হতে পারে৷
  • গেস্ট নেটওয়ার্ক অ্যাক্সেস সাধারণত ভার্চুয়ালাইজড ওয়াই-ফাই অ্যাডাপ্টার এবং একটি virtio-net টানেলের মাধ্যমে প্রদান করা হয়। হোস্ট-সাইড সংযোগ আপনার নির্দিষ্ট হাইপারভাইজার স্থাপনার উপর নির্ভর করে।
  • কিছু বাস্তবায়ন সীমিত বা কোন ব্লুটুথ ক্ষমতা অফার করতে পারে।
  • একটি VHAL ইভেন্ট ইনজেকশন কিছু সেন্সরের জন্য কাজ নাও করতে পারে।
  • কিছু ভারী কাজের চাপ অডিও প্লেব্যাক সমস্যা সৃষ্টি করতে পারে।
  • কিছু বাস্তবায়নে, AAOS গেস্টের adb রিবুট পুরো সিস্টেম রিবুট করতে পারে।
  • STS সিস্টেম অস্থিরতা সৃষ্টি করতে পারে এবং একটি রিবুট প্রয়োজন।

অতিরিক্ত বিবরণের জন্য, আপনার trout নির্দিষ্ট স্থাপনার জন্য অংশীদার রিলিজ নোটগুলি পড়ুন।