在开发过程中,有需要X86上面的方案,因为Nexus Player还没有到,身边又没有其他Intel Android设备,想到PC就是X86(以及X86_64),为了赶时间,因此决定使用笔记本(MacBook Pro)来安装一个Android X86系统,用来开发。
根据记忆,下载了Remix OS并安装到了U盘,启动,发现确实可以正常使用蓝牙连接BLE Periphiral,因此决定就用这个系统。
这篇博客开始是使用X86_64,后面是X86版本的OS,这两者的squashfs的压缩方式不一样,32Bit的OS需要在官网切换到English之后才可以选择下载。
Ubuntu 14.04中的unsquashfs版本为4.2,而且支持的compression只有gzip等几种:
$ unsquashfs -version
unsquashfs version 4.2-git (2013/03/13)
copyright (C) 2013 Phillip Lougher
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2,
or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
unsquashfs system.sfs
Filesystem uses unknown compression, this is unsupported by this version
Decompressors available:
gzip
lzo
xz
http://unix.stackexchange.com/questions/90323/how-to-use-unsquashfs-with-lzma
具体而言就是下载解压,然后修改Makefile将comment掉的各种support uncomment,然后安装对应的lib,例如:
sudo apt-get install liblzo2-dev
sudo apt-get install liblz4-dev
sudo apt-get install liblzma-dev
./unsquashfs /media/hexiongjun/REMIXOSSYS/system.sfs
Parallel unsquashfs: Using 8 processors
1 inodes (20480 blocks) to write
[==========================================================================================================================================================================================\] 20480/20480 100%
created 1 files
created 1 directories
created 0 symlinks
created 0 devices
created 0 fifos
U盘个分为了三个可mount分区
然后有一个启动分区,其实这个是EFI启动文件放置位置:
这三个分区的内容如下
一个OS分区放着系统文件
一个data分区最后会mount到data分区
还有一个启动的分区,见前面fdisk结果
可以看到这里面有一个ramdisk.img,这个就是X86 android的init ramdisk了,因此如果我们需要更改一些权限或者init.rc那么就需要更改文件。
按照普通的cpio init ramdisk的修改方式即可,常用命令如下:
repack:
find . | cpio -o -c | gzip > ../ramdisk_shm1.img
find . | cpio -H newc -o | gzip > ../uramdisk.cpio.gz
mkdir ram && cd ram && gunzip -c ../ramdisk.img | cpio -i
这个比较麻烦,因为不是接ext4 fs,而是一个system.sfs文件,这个文件是Squashfs的文件,然后里面是ext4的system.img
因此第一步我们需要使用对应的工具解包,我们不能直接mount,因为mount的话是ro的,无法rw:
然后产生一个squashfs-root的目录,这个目录里面就是system.img,然后我们mount起来就可以修改文件内容了。
修改完成后还需要重新制作成squashfs文件,注意里面的blocksize为从file信息获取的:
然后就可以使用了。
关于权限
selinux的权限问题
新版本的OS中使用getenforece查看发现是disable的,从cmdline中也可以看出。
su的权限问题
默认代码有su,所以也不是问题
工具
安装termux,然后apt update,就可以类似Ubuntu一样,使用apt install vim类似的命令来安装各种软件包了,非常方便。
X64 VS X32的两套库
在64Bit上面有两套库了:
参考:
http://forum.xda-developers.com/remix/remix-os/remix-os-installation-rooting-t3293769