1.前提

原文地址:https://developer.mozilla.org/en-US/docs/Archive/B2G_OS/Porting_B2G_OS/basics

B2G OS使用的是一个来自Android的内核,上层有一个基于gecko的用户界面。本文且作为一个粗略的移植指南

Note!

本指南假设您正在移植到一个已经运行Android的新设备;如果您正在移植到另一个设备,那么这项工作将会更加复杂。

You can find help on porting on the #fxos IRC channel and on Mozilla Discourse.

2.配置编译环境

可参照B2G OS build prerequisites进行。

3.Clone the B2G repositories

第一步克隆 B2G repository和the repository with the manifests

1
2
git clone https://github.com/mozilla-b2g/B2G.git
git clone https://github.com/mozilla-b2g/b2g-manifest.git

4.Add a new device to config.sh

下一步是向config.sh中添加一个新设备在B2G存储库中;可以用现存的config.sh为模板。

5.Create a manifest for the new device

现在要为新设备添加一个manifest file(清单文件)。可参考一个模板的现有清单,比如 hamachi 。一旦完成,应该将新的清单添加到本地b2g-manifest存储库中。

1
2
git add my-new-device.xml
git commit

接下来,要让config.sh使用本地的b2g-manifest取代官方版。只要修改config.sh中的GITREPO和BRANCH变量的值即可,比如:

1
2
GITREPO=${GITREPO:-"file:///home/yourname/b2g-manifest"}
BRANCH=${BRANCH:-master}

6.Create a configuration tree for the new device

为新设备创建一个新的配置树。其所在位置为device/<manufacturer>/<device_id>。配置树应该至少包含:

  • AndroidBoard.mk
  • AndroidProducts.mk
  • BoardConfig.mk
  • extract-files.sh
  • full_<device_id>.mk
  • idc files for touchscreen
  • init files (init.rcinit.<target>.rcuevent.rc, ...)

这些内容会因设备的不同而不同。特别是BoardConfig.mk和extract-files.sh会有显著区别。这些配置是最麻烦的,需要反复调整、测试、debug才能调试出最优状态。可参考configuration for the hamachi device进行修改这些文件。

7.Rebuild boot.img

一旦您完成了所有的工作,您就需要重新构建引导映像。并不是修改内核,而是要将更改提取到init.rc。

7.1修改init.rc

将移植前手机原来的Android系统init.c提取出来进行修改,主要修改的内容包括以下几点:

1.导入init.b2g.rc:

1
2
3
on early-init
    start ueventd
    import /init.b2g.rc

2.修改权限:

修改/system/b2g/b2g、/system/b2g/updater/system/b2g/plugin-container的权限;

1
2
3
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.

7.2 Prebuild kernel 和 building the kernel from source

您可以使用预先构建的内核,或者您可以从源代码构建内核。要从源代码构建内核,请添加AndroidKernel。mk和内核配置到设备配置树。

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

1
2
3
chmod 0755 /system/b2g/b2g
chmod 0755 /system/b2g/updater
chmod 0755 /system/b2g/plugin-container

7.3提取并修改现有boot.img

It is possible to recover the boot image of a phone by dumping the contents of the /dev/mtd/mtd1 or /dev/mtd/mtd2 devices, the resulting image file can then be easily recovered:

1
2
adb shell 'cat /dev/mtd/mtd1 > /sdcard/boot.img'
adb pull /sdcard/boot.img

待续。。

8.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.

9.Configure,build,and flash the new device

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

1
2
3
ANDROIDFS_DIR=my_device_backup ./config.sh <device_id> '../b2g-manifest/default.xml'
./build.sh
./flash.sh

Porting(移植) B2G OS【1】——Porting basics相关推荐

  1. B2G OS(FireFox OS) Architecture

    0.前提: 原文地址:https://developer.mozilla.org/en-US/docs/Archive/B2G_OS/Architecture 1.本文参照FireFox官网与外网上相 ...

  2. Nexus-5的B2G OS(FireFox OS)与Android4.4.4系统源码目录对比

    1. 前提 1.准备一台Nexus 5手机. 2.准备B2G OS v2.6版的nexus-5系统源码:FireFox OS(B2G)源码获取与Build code. 3.Android4.4.4的系 ...

  3. B2G OS官网文档梳理

    前提: B2G OS官方文档地址:https://developer.mozilla.org/en-US/docs/Archive/B2G_OS 在网上查阅关于FireFox OS相关的文章.博客,发 ...

  4. STM32F103C8T6移植uc/OS

    STM32F103C8T6移植uc/OS STM32F103C8T6移植uc/OS STM32F103C8T6移植uc/OS 一.题目要求 二.使用STM32CubeMX建立HAL库 三.准备uCOS ...

  5. android移植wifi驱动流程porting

    android载入wifi驱动流程 wifi_load_driver check_wifi_chip_type_string get_wifi_device_id save_wifi_chip_typ ...

  6. 基于STM32F103RC移植uc/OS系统

    目录 一.获取uc/OS-III源码 二.使用CubeMX创建基础stm32框架 三.文件准备 四.路径添加 五.代码修改 六.成功展示 七.使用Keil仿真逻辑仪观察引脚电平变化 八.参考资料 本文 ...

  7. macbook pro换固态硬盘ssd与移植mac os x系统

    macbook买了一年多了,当时选择了macbook pro 2012,最近一段时间,开机越来越慢了差不多要2分钟.   没办法只好给电脑硬盘升级了. 准备:1.淘宝上700元左右200多G固态硬盘 ...

  8. AliOS Things 硬件抽象层(HAL)对接系列2 — SPI driver porting

    HAL层(Hardware abstraction layer) 的目的是为了屏蔽底层不同芯片平台的差异,从而使驱动层上面的软件不会随芯片平台而改变.AliOS Things定义了全面的HAL抽象层, ...

  9. FireFox OS(B2G)源码获取与Build code

    趁编译源码的时候写下此篇以记录! 参考链接:https://developer.mozilla.org/en-US/docs/Archive/B2G_OS/Building_and_installin ...

最新文章

  1. mysql系列之5--完全备份和增量备份
  2. Cisco路由器配置命令之模式转换命令
  3. 每天一道LeetCode-----判断给定字符串是否符合某个模式
  4. linux之vim/vi快速复制多行内容的快捷键
  5. JavaOne 2012:在JVM上诊断应用程序
  6. js页面传值(注意中文)
  7. All your files have been encrypted
  8. vc6开发一个抓包软件_开发一个软件多少钱?3种软件开发公司报价
  9. AWS机器学习初探(1):Comprehend - 自然语言处理服务
  10. 表单多条相同name数据的获取
  11. 最近学习 variant configuration
  12. apache-xmlrpc-3.1.3-bin.tar.bz2
  13. Depth from Motion:探索突破纯视觉 3D 检测瓶颈
  14. 基于三层交换技术的校园网设计与实现
  15. java 条形码校验_java 实现条形码ENA-13校验码计算方法
  16. 利用Pytorch中深度学习网络进行多分类预测(multi-class classification)
  17. 开机提示小娜无法在本计算机运行,win10 20h2提示此应用无法在你的电脑上运行解决方法...
  18. 算法_二叉树_二叉树的最大深度
  19. 中国石油大学(北京)-《外国文学作品选读》第二阶段在线作业
  20. 今天搞毕设了么?——3.29 audioread读取音频文件

热门文章

  1. 配置上位机软件开发环境BOOST及cmake等
  2. 浅谈JCenter即将被停止服务的事件
  3. 安卓浏览器中video组件会显示播放按钮
  4. 计算机专业英语第五版unit2翻译,计算机专业英语教程第5版翻译
  5. Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn分别代表什么意思
  6. 【渝粤教育】国家开放大学2018年春季 4972T农业项目投资 参考试题
  7. 太极拳的基本功,几种桩功
  8. Makerbase SimpleFOC ESP32 例程1 双电机开环速度测试
  9. 2022年最新的Python操控微信教程
  10. 多商户商城系统功能拆解43讲-平台端应用-客服话术