trout নামক একটি নতুন পণ্যের মাধ্যমে, অ্যান্ড্রয়েড অটোমোটিভ (AAOS) এখন VirtIO স্ট্যান্ডার্ডের সাথে সামঞ্জস্যপূর্ণ পরিবেশে গেস্ট ভার্চুয়াল মেশিন (VM) হিসেবে ডেপ্লয়মেন্টের জন্য সমর্থন প্রদান করে। trout কাটলফিশ (Cuttlefish ) ভার্চুয়াল রেফারেন্স প্ল্যাটফর্মের উপর ভিত্তি করে তৈরি এবং এটি trout ডিভাইস কনফিগারেশন হিসেবে উপলব্ধ। এর ইউজারস্পেস সোর্স কোড device/google/trout -এ পাওয়া যাবে। নিচের সারণিতে trout এর প্রতিটি সাবসিস্টেমকে ভার্চুয়ালাইজ করতে ব্যবহৃত প্রযুক্তি বর্ণনা করা হয়েছে।
| বৈশিষ্ট্য | প্রযুক্তি |
|---|---|
| অডিও কন্ট্রোল এইচএএল | vsock/gRPC |
| অডিও এইচএএল | virtio-snd |
| ব্লুটুথ | virtio-console |
| ডাম্পস্টেট এইচএএল | vsock/gRPC |
| বর্ধিত দৃশ্য ব্যবস্থা (EVS) | virtio-video |
| গ্যারেজ মোড | vsock/gRPC |
| গ্রাফিক্স | virtio-gpu |
| গ্লোবাল নেভিগেশন স্যাটেলাইট সিস্টেম (GNSS) | virtio-console |
| সেন্সর এইচএএল ২.০ | virtio-scmi and IIO |
| টাচস্ক্রিন ইনপুট | virtio-input |
| যানবাহন এইচএএল | vsock/gRPC |
ট্রাউট প্রসারিত করুন
নতুন ইন-ভেহিকেল ইনফোটেইনমেন্ট (IVI) অ্যান্ড্রয়েড টার্গেট তৈরি করার জন্য 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, এবং ডাম্পস্টেট HAL সহ) AAOS গেস্ট এবং অন্তর্নিহিত ফিচার ইমপ্লিমেন্টেশন প্রদানকারী হোস্ট সিস্টেমের মধ্যে একটি vsock কানেকশন দ্বারা সমর্থিত gRPC ইন্টারফেসের মাধ্যমে বাস্তবায়িত হয়। ভেন্ডর প্রপার্টি হিসেবে সঠিক vsock কানেকশন প্যারামিটার সরবরাহ করার মাধ্যমে এগুলোকে কনফিগার করতে হবে। কোন প্রপার্টিগুলো কনফিগারেশনের জন্য উপলব্ধ এবং সেগুলোর অর্থ কী, সে বিষয়ে সোর্স কোডই হলো চূড়ান্ত নির্ভরযোগ্য উৎস।
ট্রাউট তৈরি করুন
ব্যবহারকারী স্থান সংকলন করুন
ইউজারস্পেস কম্পাইল করতে:
- অ্যান্ড্রয়েড সোর্স ট্রি ডাউনলোড করুন:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- পরিবেশ গড়ে তুলুন:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
কার্নেল তৈরি করুন
trout ১.১-এর জন্য কার্নেল কোডবেসটি AOSP-তে সরবরাহ করা হয়েছে। trout কার্নেলটি আপস্ট্রিম ACK ৫.১০-এর কোডের মতোই, তবে এর সাথে VirtIO সাবসিস্টেমগুলোর জন্য trout -নির্দিষ্ট মডিউল যুক্ত করা হয়েছে।
- কার্নেল ক্লোন করতে, চালান:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- কার্নেল বিল্ড করতে চালান:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
আপনার হাইপারভাইজর সরবরাহকারীর ভিন্ন কার্নেল কনফিগারেশন বা কম্পাইল করার মতো অতিরিক্ত মডিউলের প্রয়োজন হতে পারে। যদি নির্দিষ্ট কোনো নির্দেশনা দেওয়া থাকে, তবে তা অবশ্যই অনুসরণ করুন।
সম্মতি
যখন AAOS একটি গেস্ট ভিএম হিসেবে চলে, তখন আমাদের লক্ষ্য হলো ফ্রেমওয়ার্কের দৃষ্টিকোণ থেকে একটি সামঞ্জস্যপূর্ণ অ্যান্ড্রয়েড ডেপ্লয়মেন্ট হওয়া। হোস্ট-সাইডের সমস্যাগুলো প্রতিটি ইমপ্লিমেন্টেশনের আওতাধীন এবং trout ১.১-এর পরিধির বাইরে।
আমরা trout ১.১-এ অতিরিক্ত xTS যাচাইকরণ করিনি। trout ১.০-এ CTS সমর্থনের জন্য নিচের আলোচনাটি দেখতে থাকুন।
trout ১.০-তে এখনও বেশ কিছু 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 এলাকাগুলিতে টেস্ট ব্যর্থতা দেখা যায় বলে জানা গেছে:
| গাড়ি লঞ্চার পরীক্ষা ব্লুটুথ লো এনার্জি (বিএলই) বিজ্ঞাপনদাতা পরীক্ষা স্ট্রিমিং ভিডিওর গুণমান যাচাইকারী ব্লুটুথ এইচআইডি ডিভাইস পরীক্ষা হাইফাই আল্ট্রাসাউন্ড মাইক্রোফোন পরীক্ষা হাইফাই আল্ট্রাসাউন্ড স্পিকার পরীক্ষা | আনলক করা ডিভাইস আবশ্যক পরীক্ষা ডাইনামিক সেন্সর ডিসকভারি টেস্ট অফ বডি সেন্সর পরীক্ষা উল্লেখযোগ্য গতি পরীক্ষা অডিও আউটপুট রাউটিং বিজ্ঞপ্তি পরীক্ষা নেটওয়ার্ক অনুরোধ বা পরামর্শ পরীক্ষা |
রিলিজ নোট
trout ১.১-এ নিম্নলিখিত জ্ঞাত সমস্যাগুলো রয়েছে:
-
trout-এর ইউজার বিল্ড উপলব্ধ নেই। সিস্টেমটি-userdebugহিসেবে বিল্ড করা হয়েছে, যা কিছু CTS টেস্টকে প্রভাবিত করতে পারে। - অ্যান্ড্রয়েড ভেরিফাইড বুট (AVB) সমর্থিত নয়।
- কিছু অ্যান্ড্রয়েড সাবসিস্টেম অনুপলব্ধ থাকতে পারে, যার মধ্যে সিকিওর ওয়ার্ল্ড এবং এনএনএইচএএল অন্তর্ভুক্ত।
- গেস্ট নেটওয়ার্ক অ্যাক্সেস সাধারণত একটি ভার্চুয়ালাইজড ওয়াই-ফাই অ্যাডাপ্টার এবং একটি
virtio-netটানেলের মাধ্যমে প্রদান করা হয়। হোস্ট-সাইড কানেক্টিভিটি আপনার নির্দিষ্ট হাইপারভাইজর ডেপ্লয়মেন্টের উপর নির্ভর করে। - কিছু বাস্তবায়নে সীমিত বা কোনো ব্লুটুথ সুবিধা নাও থাকতে পারে।
- কিছু সেন্সরের ক্ষেত্রে VHAL ইভেন্ট ইনজেকশন কাজ নাও করতে পারে।
- কিছু অতিরিক্ত কাজের চাপের কারণে অডিও প্লেব্যাকে সমস্যা দেখা দিতে পারে।
- কিছু ক্ষেত্রে, AAOS গেস্টকে adb reboot করলে পুরো সিস্টেমটিই রিবুট হয়ে যেতে পারে।
- STS সিস্টেমের অস্থিতিশীলতা ঘটাতে পারে এবং রিবুট করার প্রয়োজন হতে পারে।
অতিরিক্ত বিবরণের জন্য, আপনার নির্দিষ্ট trout স্থাপনার ক্ষেত্রে অংশীদারদের রিলিজ নোট দেখুন।