বুট টু গিকো (ফায়ারফক্স ওএস) একটি গিকো ভিত্তিক ইউজার ইন্টারফেসের নিচে এন্ড্রয়েড হতে তৈরি একটি কার্নেল ব্যবহার করে। এই আর্টিকেলে নতুন ডিভাইসে অপারেটিং সিস্টেমটি পোর্ট করার পদ্ধতির ওপর আলোকপাত করা হয়েছে।
এই গাইডটি ধরে নিচ্ছে আপনি এমন একটি নতুন ডিভাইসে পোর্ট করছেন যাতে ইতোমধ্যে এন্ড্রয়েড চলছে, আপনি যদি অন্য একটি ডিভাইসে পোর্ট করে থাকেন তবে পদ্ধতিটি আরেকটু বিস্তৃত হবে।
বিল্ড সিস্টেম সেটআপ করা
প্রথম ধাপ হল আপনার বিল্ড সিস্টেম কনফিগার করা; B2G build prerequisites এর গাইডটি অনুসরণ করতে পারেন।
B2G রেপোজিটরি ক্লোন করা
এর পরের ধাপ হল B2G রেপোজিটরী ক্লোন করা।
git clone https://github.com/mozilla-b2g/B2G.git
আপনার আসল এন্ড্রয়েড সিস্টেমের লোকাল ব্যাকআপ রাখা
পরবর্তীতে, এটি নিয়ে খেলাধুলা করার পূর্বে আপনাকে আপনার এন্ড্রয়েড ডিভাইসের ব্যাকআপ নেয়া উচিৎ। তাছাড়া কয়েকটি জিনিস বিল্ড এবং ইন্সটল প্রক্রিয়ায়ও লাগবে।
mkdir my_device_backup cd my_device_backup adb pull /system system
config.sh এ নতুন ডিভাইস যুক্ত করা
পরবর্তী ধাপ হল config.sh
ফাইলে একটি নতুন ডিভাইস যুক্ত করা; আপনি বর্তমানগুলোকে টেমপ্লেট হিসেবে ব্যবহার করতে পারেন। এটি মূলত বিল্ডের জন্য সঠিক ফাইল সংগ্রহ করতে সাহায্য করবে।
নতুন ডিভাইসের জন্য ম্যানিফেস্ট তৈরি করা
এখন আপনাকে দরকার নতুন মেনিফেস্ট ডিভাইস ফাইলের জন্য প্রয়োজনীয় রেপস ; এই মেনিফেস্ট ফাইল্কে বলা হয়ে থাকে default.xml।সুপারিশকৃত b2g-manifest
ফাইল একটি টেম্পলেট গিথাব।প্রত্যেক ডিভাইসের নিজস্ব শাখা আছে;আপনি galaxy-s2
ব্যবহার করতে পারেন রেফারেন্স হিসেবে ।
নতুন ডিভাইসের জন্য কনফিগারেশন ট্রি তৈরি করা
নতুন ডিভাইসের জন্য নতুন কন ফিগারেশন তৈরি করুন।এটা ডিভাইসে device/<manufacturer>/<device_id>
. তে থাকা উচিত।এটা আরো সংযুক্ত করবে যে ,কমপক্ষেঃ
AndroidBoard.mk
AndroidProducts.mk
BoardConfig.mk
extract-files.sh
full_<device_id>.mk
- idc files for touchscreen
- init files (
init.rc
,init.<target>.rc
,uevent.rc
, ...)
এখানে যে প্রধান বিষয় টি পার্থক্য তৈরি করেছে তা হল একটি ডিভাইস থেকে অন্য ডিভাইসে নেয়া । বিশেষভাবে, BoardConfig.mk এবংextract-files.sh সুনির্দিষ্টভাবে পার্থক্য করা যায়।এই অংশের দরকার প্রচুর পরিমানে হ্যাকিং,টেস্টিং,এবং ডিবাগিং ফিগারটি সঠিকভাবে বের করে আনতে বাইনারি ব্লব।
নোটঃযদি আপনি একটি বিদ্যমান রেফারেন্স CyanogenMod এর জন্য ডিভাইস রাখেন,এই তথ্য প্রক্রিয়া পোর্টিং করার জন্য গতি এনে দিবে। XDA Forum হল আরেকটি ভাল জায়গা আলোচনা এবং সম্পদ চেক করার জন্য ।
পুনরায় গঠন boot.img
একদা হয়ে গেলে সব কিছু ,আপনাকে boot image পুনরায় গঠন করতে হবে এটা সাধারনত kernel এর নিজের প্রয়োজন পরে না ,কিন্তু init.rc তে পরিবর্তন আনতে তুলে আনা হয়ে থাকে।
init.rc তে পরিবর্তন
init.rc যা আপনি দেখছেন তা B2G দ্বারা প্রদান করা নয়;এর পরিবর্তে,আপনাকে ডিভাইস থেকে এটি নেয়া দরকার ।
প্রধান যে জিনিস আপনাকে মোডিফাই করা দরকারঃ
init.b2g.rc ইম্পোর্ট
init.b2g.rc ইম্পোর্টের পরবর্তী লাইন গুলো যোগ করুনঃ
:
on early-init start ueventd import /init.b2g.rc
ফিক্স পারমিশন
files /system/b2g/b2g
, /system/b2g/updater
, /system/b2g/plugin-container ফাইলের অনুমতি ঠিক করুন
; এটা করা উচিত হবে যখন লাইন গুলো ফাইল সিস্টেম এর লেখ/পড়া র ক্ষেত্রে লাইঙ্গুলো মাউন্টকরে থাকেঃ
chmod 0755 /system/b2g/b2g chmod 0755 /system/b2g/updater chmod 0755 /system/b2g/plugin-container
নতুন ডিভাইস init.rc
ব্যবহারের পরিবর্তে init.rc
মোডিফাইং এর মাধ্যমে বিল্ড সিস্টেম প্রদান করে থাকে ;যদি তাই হয়ে থাকে তবে মনে রাখতে হবে যে সেট করা হয় TARGET_PROVIDES_INIT_RC
in BoardConfig.mk
.
Prebuilt kernel বনাম সোর্স থেকে the kernel গঠন
আপনি একটি প্রিবিল্ট kernel ব্যবহার করতে পারেন,অথবা আপনি সোর্স থেকে kernel গঠন করতে পারেন।সোর্স থেকে kernel গঠন করতে ,যোগ করুন AndroidKernel.mk এবং kernel যা ডিভাইস কনফিগারেশনে কনফিগ করে।
maguro হল পুরানো গঠন সিস্টেমের একটি উদাহরণ যা সোর্স থেকে kernel গঠন করে ।
flash.sh তে নতুন ডিভাইস যোগ করুন
flash.sh
তে নতুন ডিভাইস যোগকরুন; নতুন ডিভাইস ফ্লাস ব্যবহার করার জন্য কি দরকার হবে তা কিভাবে কি করতে হবে তা বিশেষ ভাবে জানা যায় ।
কনফিগার,গঠন,এবং ফ্ল্যাশ নতুন ডিভাইস
এখন আপনি গঠনের জন্য এবং নতুন ডিভাইসের ফ্ল্যাশিং এর জন্য চেষ্টা করুনঃ
ANDROIDFS_DIR=my_device_backup ./config.sh <device_id> default.xml ./build.sh ./flash.sh
টেস্ট এবং ডিবাগ
আমাদের কিছু বিস্তারিত যোগ করা দরকার এখানে;সত্যিকার অর্থে ,এটা সম্পুর্ন অনুচ্ছেদে কিছু সাহায্য করতে পারে।
FAQ
ফোর্থকামিং
আরো দেখুন
- Boot to Gecko
- B2G source code on Github
- Android web site
- A list of existing projects on Dietrich Ayala's blog Firefox OS একই ডিভাইসে পোর্ট করতে