mozilla

Revision 351805 of বুট টু গিকো পোর্ট করা

  • Revision slug: Mozilla/Firefox_OS/Porting
  • Revision title: বুট টু গিকো পোর্ট করা
  • Revision id: 351805
  • তৈরি হয়েছেঃ
  • তৈরিকারীঃ tuxboy
  • Is current revision? না
  • মন্তব্য

Revision Content

বুট টু গিকো (ফায়ারফক্স ওএস) একটি গিকো ভিত্তিক ইউজার ইন্টারফেসের নিচে এন্ড্রয়েড হতে তৈরি একটি কার্নেল ব্যবহার করে। এই আর্টিকেলে নতুন ডিভাইসে অপারেটিং সিস্টেমটি পোর্ট করার পদ্ধতির ওপর আলোকপাত করা হয়েছে।

এই গাইডটি ধরে নিচ্ছে আপনি এমন একটি নতুন ডিভাইসে পোর্ট করছেন যাতে ইতোমধ্যে এন্ড্রয়েড চলছে, আপনি যদি অন্য একটি ডিভাইসে পোর্ট করে থাকেন তবে পদ্ধতিটি আরেকটু বিস্তৃত হবে।

বিল্ড সিস্টেম সেটআপ করা

প্রথম ধাপ হল আপনার বিল্ড সিস্টেম কনফিগার করা; 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 ফাইলে একটি নতুন ডিভাইস যুক্ত করা; আপনি বর্তমানগুলোকে টেমপ্লেট হিসেবে ব্যবহার করতে পারেন। এটি মূলত বিল্ডের জন্য সঠিক ফাইল সংগ্রহ করতে সাহায্য করবে।

নতুন ডিভাইসের জন্য ম্যানিফেস্ট তৈরি করা

Now you need to add the required repos to the manifest file for the new device; this manifest file is called default.xml. Refer to the b2g-manifest file on github for a template. Each device has its own branch; you can use the galaxy-s2 branch as a reference.

Create a configuration tree for the new device

Create a new configuration tree for the new device. This should be at device/<manufacturer>/<device_id>. This tree should include, at least:

  • 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, ...)

The content here may differ a great deal from one device to another. In particular, BoardConfig.mk and extract-files.sh may differ significantly. This part requires a lot of hacking, testing, and debugging to figure out which binary blobs should be extracted.

Note: If you can find an existing reference on CyanogenMod for your device, this information will speed up the porting process. the XDA Forum is another good place to discuss and check for resources.

Rebuilt boot.img

Once you have all that done, you need to rebuild the boot image. This isn't usually needed for the kernel itself, but to pick up the changes to init.rc.

Changes to init.rc

The init.rc you use is not the one provided by B2G; instead, you need to pull it from the device.

The main things you'll need to modify are:

Import init.b2g.rc

Add the following lines to import init.b2g.rc:

on early-init
    start ueventd
    import /init.b2g.rc

Fix permissions

Correct the permissions on the files /system/b2g/b2g, /system/b2g/updater, /system/b2g/plugin-container; this should be done after the lines that mount the filesystem read/write:

chmod 0755 /system/b2g/b2g
chmod 0755 /system/b2g/updater
chmod 0755 /system/b2g/plugin-container

You might want to start by modifying the init.rc from the new device instead of using the init.rc provided by the build system; if so, you need to remember to set TARGET_PROVIDES_INIT_RC in BoardConfig.mk.

Prebuilt kernel vs. building the kernel from source

You can use a prebuilt kernel, or you may build the kernel from source. To build the kernel from source, add AndroidKernel.mk and the kernel config to the device configuration tree.

The maguro on the old build system is an example that builds the kernel from source.

Add the new device to flash.sh

Add the new device to flash.sh; the specifics of how to do this will depend on what tools need to be used to flash the new device.

Configure, build, and flash the new device

Now you can try building for and flashing to your new device:

ANDROIDFS_DIR=my_device_backup ./config.sh <device_id> default.xml
./build.sh
./flash.sh

Test and debug

We need some details added here; indeed, this entire article could use some help.

FAQ

Forthcoming

See also

Revision Source

<p>বুট টু গিকো (ফায়ারফক্স ওএস) একটি <a href="/en-US/docs/Gecko" title="Gecko">গিকো</a> ভিত্তিক ইউজার ইন্টারফেসের নিচে <a href="http://www.android.com/" title="http://www.android.com/">এন্ড্রয়েড</a> হতে তৈরি একটি কার্নেল ব্যবহার করে। এই আর্টিকেলে নতুন ডিভাইসে অপারেটিং সিস্টেমটি পোর্ট করার পদ্ধতির ওপর আলোকপাত করা হয়েছে।</p>
<p>এই গাইডটি ধরে নিচ্ছে আপনি এমন একটি নতুন ডিভাইসে পোর্ট করছেন যাতে ইতোমধ্যে এন্ড্রয়েড চলছে, আপনি যদি অন্য একটি ডিভাইসে পোর্ট করে থাকেন তবে পদ্ধতিটি আরেকটু বিস্তৃত হবে।</p>
<h2 id="Set_up_your_build_system">বিল্ড সিস্টেম সেটআপ করা</h2>
<p>প্রথম ধাপ হল আপনার বিল্ড সিস্টেম কনফিগার করা; <a href="/en-US/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites" title="Mozilla/Boot_to_Gecko/B2G_build_prerequisites">B2G build prerequisites</a> এর গাইডটি অনুসরণ করতে পারেন।</p>
<h2 id="Clone_the_B2G_repository">B2G রেপোজিটরি ক্লোন করা</h2>
<p>এর পরের ধাপ হল B2G রেপোজিটরী ক্লোন করা।</p>
<pre>
git clone https://github.com/mozilla-b2g/B2G.git</pre>
<h2 id="Create_a_local_backup_of_the_original_Android_system">আপনার আসল এন্ড্রয়েড সিস্টেমের লোকাল ব্যাকআপ রাখা</h2>
<p>পরবর্তীতে, এটি নিয়ে খেলাধুলা করার পূর্বে আপনাকে আপনার এন্ড্রয়েড ডিভাইসের ব্যাকআপ নেয়া উচিৎ। তাছাড়া কয়েকটি জিনিস বিল্ড এবং ইন্সটল প্রক্রিয়ায়ও লাগবে।</p>
<pre>
mkdir my_device_backup
cd my_device_backup
adb pull /system system</pre>
<h2 id="Add_a_new_device_to_config.sh">config.sh এ নতুন ডিভাইস যুক্ত করা</h2>
<p>পরবর্তী ধাপ হল <a href="https://github.com/mozilla-b2g/B2G/blob/master/config.sh" title="https://github.com/mozilla-b2g/B2G/blob/master/config.sh"><code>config.sh</code></a> ফাইলে একটি নতুন ডিভাইস যুক্ত করা; আপনি বর্তমানগুলোকে টেমপ্লেট হিসেবে ব্যবহার করতে পারেন। এটি মূলত বিল্ডের জন্য সঠিক ফাইল সংগ্রহ করতে সাহায্য করবে।</p>
<h2 id="Create_the_manifest_file_for_the_new_device">নতুন ডিভাইসের জন্য ম্যানিফেস্ট তৈরি করা</h2>
<p>Now you need to add the required repos to the manifest file for the new device; this manifest file is called default.xml. Refer to the <a href="https://github.com/mozilla-b2g/b2g-manifest" title="https://github.com/mozilla-b2g/b2g-manifest"><code>b2g-manifest</code></a> file on github for a template. Each device has its own branch; you can use the <a href="https://github.com/mozilla-b2g/b2g-manifest/tree/galaxy-s2" title="https://github.com/mozilla-b2g/b2g-manifest/tree/galaxy-s2"><code>galaxy-s2</code></a> branch as a reference.</p>
<h2 id="Create_a_configuration_tree_for_the_new_device">Create a configuration tree for the new device</h2>
<p>Create a new configuration tree for the new device. This should be at <code>device/<em>&lt;manufacturer&gt;</em>/<em>&lt;device_id&gt;</em></code>. This tree should include, at least:</p>
<ul>
  <li><code>AndroidBoard.mk</code></li>
  <li><code>AndroidProducts.mk</code></li>
  <li><code>BoardConfig.mk</code></li>
  <li><code>extract-files.sh</code></li>
  <li><code>full_&lt;device_id&gt;.mk</code></li>
  <li>idc files for touchscreen</li>
  <li>init files (<code>init.rc</code>, <code>init.&lt;target&gt;.rc</code>, <code>uevent.rc</code>, ...)</li>
</ul>
<p>The content here may differ a great deal from one device to another. In particular, BoardConfig.mk and extract-files.sh may differ significantly. This part requires a lot of hacking, testing, and debugging to figure out which binary blobs should be extracted.</p>
<div class="note">
  <p><strong>Note:</strong> If you can find an existing reference on <a href="http://www.cyanogenmod.com/" title="http://www.cyanogenmod.com/">CyanogenMod</a> for your device, this information will speed up the porting process. the <a href="http://forum.xda-developers.com/" title="http://forum.xda-developers.com/">XDA Forum</a> is another good place to discuss and check for resources.</p>
</div>
<h2 id="Rebuilt_boot.img">Rebuilt boot.img</h2>
<p>Once you have all that done, you need to rebuild the boot image. This isn't usually needed for the kernel itself, but to pick up the changes to <code>init.rc</code>.</p>
<h3 id="Changes_to_init.rc">Changes to init.rc</h3>
<p>The init.rc you use is <strong>not</strong> the one provided by B2G; instead, you need to pull it from the device.</p>
<p>The main things you'll need to modify are:</p>
<h4 id="Import_init.b2g.rc">Import init.b2g.rc</h4>
<p>Add the following lines to import <code>init.b2g.rc</code>:</p>
<pre>
on early-init
    start ueventd
    import /init.b2g.rc</pre>
<h4 id="Fix_permissions">Fix permissions</h4>
<p>Correct the permissions on the files <code>/system/b2g/b2g</code>, <code>/system/b2g/updater</code>, <code>/system/b2g/plugin-container</code>; this should be done after the lines that mount the filesystem read/write:</p>
<pre>
chmod 0755 /system/b2g/b2g
chmod 0755 /system/b2g/updater
chmod 0755 /system/b2g/plugin-container</pre>
<p>You might want to start by modifying the <code>init.rc</code> from the new device instead of using the <code>init.rc</code> provided by the build system; if so, you need to remember to set <code>TARGET_PROVIDES_INIT_RC</code> in <code>BoardConfig.mk</code>.</p>
<h3 id="Prebuilt_kernel_vs._building_the_kernel_from_source">Prebuilt kernel vs. building the kernel from source</h3>
<p>You can use a prebuilt kernel, or you may build the kernel from source. To build the kernel from source, add AndroidKernel.mk and the kernel config to the device configuration tree.</p>
<p>The <a href="https://github.com/andreasgal/B2G/tree/master/glue/gonk/device/toro/maguro" title="https://github.com/andreasgal/B2G/tree/master/glue/gonk/device/toro/maguro">maguro</a> on the old build system is an example that builds the kernel from source.</p>
<h2 id="Add_the_new_device_to_flash.sh">Add the new device to flash.sh</h2>
<p>Add the new device to <code>flash.sh</code>; the specifics of how to do this will depend on what tools need to be used to flash the new device.</p>
<h2 id="Configure.2C_build.2C_and_flash_the_new_device">Configure, build, and flash the new device</h2>
<p>Now you can try building for and flashing to your new device:</p>
<pre>
ANDROIDFS_DIR=my_device_backup ./config.sh &lt;device_id&gt; default.xml
./build.sh
./flash.sh</pre>
<h2 id="Test_and_debug">Test and debug</h2>
<p>We need some details added here; indeed, this entire article could use some help.</p>
<h2 id="FAQ">FAQ</h2>
<p>Forthcoming</p>
<h2 id="See_also">See also</h2>
<ul>
  <li><a href="/en-US/docs/Mozilla/Boot_to_Gecko" title="Mozilla/Boot_to_Gecko">Boot to Gecko</a></li>
  <li><a href="https://github.com/mozilla-b2g/B2G" title="https://github.com/mozilla-b2g/B2G">B2G source code on Github</a></li>
  <li><a href="http://www.android.com/" title="http://www.android.com/">Android web site</a></li>
  <li><a href="https://autonome.wordpress.com/2013/01/15/firefox-os-devices-and-dark-matter/" title="https://autonome.wordpress.com/2013/01/15/firefox-os-devices-and-dark-matter/">A list of existing projects on Dietrich Ayala's blog</a> to port Firefox OS on some devices</li>
</ul>
আগের রিভিসনে ফিরে যান