在 Android 上配置 GNU/Linux Chroot 环境

这事以前也干过,也写过一篇文章。不过是三年前了。最近又折腾了一次,发现三年变化还是蛮大的,决定再写一篇。(还是 ArchlinuxARM)

首先用 CPU-Z 查看一下(已 root 的) Android 设备的硬件架构,然后到官网上下载一个对应架构的 base system 的 tarball. 然后在设备上弄个 ext3/ext4 文件系统,把它解压到里面。

有外置 SD 卡的话,直接分出一个 ext3/ext4 分区给 Linux 用就行了。没有的话,就只能用 loopback. 下面以使用 loopback 的情况为例进行讲解。

所谓使用 loopback, 就是把系统装在一个文件里。先创建文件:

$ dd if=/dev/zero of=./archlinux_arm bs=4M count=1024

这就创建了一个 4GiB 的文件。再小些也可以,不过 2GiB 或者更小就不大够用(如果装的软件较多的话)。

接下来,把这个文件格式化为 ext3 文件系统:

$ mkfs.ext3 ./archlinux_arm

挂载这个文件到  /mnt :

$ mount -o loop ./archlinux_arm /mnt

解包 base system:

$ cd /mnt[/mnt] $ tar -vxapf ~/Downloads/ArchLinuxARM-aarch64-latest.tar.gz

修改  /mnt/etc/group , 添加以下两行,以便上网(Android 进行了某种限制,即使 root 也得添加到某些 group):

inet:x:3003:root
net_raw:x:3004:root

再写一个脚本,用于自动化 chroot:

$ cd -
$ umount /mnt
$ "$EDITOR" run_chroot.sh

run_chroot.sh 内容如下:

 1 #!/system/bin/sh
 2
 3 ROOT="/system/mnt"
 4
 5 if [ -d "$ROOT/usr" ]; then
 6     echo "Filesystems already mounted."
 7 else
 8     echo "Mounting loopback..."
 9     mount -t ext3 -o loop /sdcard/archlinux_arm "$ROOT"
10     echo "Mounting API filesystems..."
11     mount -o bind /dev "$ROOT/dev"
12     mount -o bind /proc "$ROOT/proc"
13     mount -o bind /sys "$ROOT/sys"
14     echo "Binding SD Card..."
15     mount -o bind /sdcard "$ROOT/sdcard"
16 fi
17
18 echo "Executing chroot..."
19 LD_PRELOAD="" LD_LIBRARY_PATH="$ROOT/usr/lib" "$ROOT/usr/lib/"ld-*.so "$ROOT/usr/bin/chroot" "$ROOT" /usr/bin/su -l

(最后一行为何这么长?——设备上万一没有 chroot 命令,就必须借用 GNU/Linux 里面的程序了)

其中  mount -o bind /sdcard "$ROOT/sdcard"  是为了方便在 chroot 环境中访问外部文件。

把文件发到设备上(如果能直接在电脑上挂载设备,就不需要这步):

$ adb push archlinux_arm /sdcard/
$ adb push run_chroot.sh /sdcard/$ rm archlinux_arm$ rm run_chroot.sh

连接到设备,开始配置:

$ adb shell
(device) $ su
(device) # mount -o remount,rw /system
(device) # mkdir /system/mnt
(device) # cp /sdcard/run_chroot.sh /system/bin/arch
(device) # chmod 755 /system/bin/arch

进入 chroot 环境:

(device) # arch
(chroot) #

搞定!

弄完了之后,可以换个快些的软件源(例如 USTC 的),装点乱七八糟的软件(比如 gcc, make, cmake, vim, emacs, octave, maxima... ),滚一下系统……

时间: 2024-10-13 00:15:38

在 Android 上配置 GNU/Linux Chroot 环境的相关文章

Delphi for iOS开发指南(1):在Mac上配置你的开发环境

http://cache.baiducontent.com/c?m=9d78d513d99516f11ab7cf690d678c3b584380122ba7a0020fd18438e4732b40506793ac57240773a4d20c1116dc4348adb0687d6d4566f58cc9fb57c0ebcc757a9f2743215dd01d05d36ef39c00388477cb4deedb5ca0bcfb3092aad2d2de49008a155e2bdea7960c575299

在 Ubuntu 上配置高性能的 HHVM 环境

HHVM全称为 HipHop Virtual Machine,它是一个开源虚拟机,用来运行由 Hack(一种编程语言)和 PHP 开发应用.HHVM 在保证了 PHP 程序员最关注的高灵活性的要求下,通过使用最新的编译方式来取得了非凡的性能.到目前为止,相对于 PHP + APC (Alternative PHP Cache) ,HHVM 为 FaceBook 在 HTTP 请求的吞吐量上提高了9倍的性能,在内存的占用上,减少了5倍左右的内存占用. 同时,HHVM 也可以与基于 FastCGI 

五步完成在 Ubuntu 上配置高性能的 HHVM 环境

HHVM全称为 HipHop Virtual Machine,它是一个开源虚拟机,用来运行由 Hack(一种编程语言)和 PHP 开发应用.HHVM 在保证了 PHP 程序员最关注的高灵活性的要求下,通过使用最新的编译方式来取得了非凡的性能.到目前为止,相对于 PHP + APC (Alternative PHP Cache) ,HHVM 为 FaceBook 在 HTTP 请求的吞吐量上提高了9倍的性能,在内存的占用上,减少了5倍左右的内存占用. 同时,HHVM 也可以与基于 FastCGI

Android学习【Android内核编译之Linux通信环境搭建】

博客:http://blog.csdn.net/muyang_ren Linux系统:Ubuntu Kylin 1404 NFS服务器的安装配置和使用: 安装nfs服务器: 1->安装NFSserver端口映射和服务 sudo apt-get install nfs-kernel-server 2->先重启portmap服务 sudo /etc/init.d/portmap restart 3->编辑/etc/exports,添加目标系统的根文件系统映射目录,假如目标系统的根文件系统最后

IIS7 上配置运行 Ruby CGI环境

在IIS 站点上 “处理程序映射”点击“添加脚本映射..” 请求路径:*.rb 可执行文件:C:\Ruby22\bin\ruby.exe %s %s 名称:ruby 点击确定,如果此时提示错误: 如果您添加脚本映射处理程序映射,则IsapiModule或CigModule必须在模块列表中 说明 IIS7的默认安装是一个原始版本,里边功能不全. 处理方法很简单,在 控制面板 -> 程序和功能 -> 打开或关闭Windows功能(这几步可以简化为Win+R运行OptionalFeatures) -

在ubuntu上配置apue的运行环境

http://www.apuebook.com/code3e.html 在上面的网站下载代码包,解压得到源码 1 sudo apt-get install libbsd-dev 安装这个支持,在解压包的makefile路径下运行make 1 sudo cp ./include/apue.h /usr/include/ 2 sudo cp ./lib/libapue.a /usr/local/lib/ 运行这两个拷贝 最后,测试第一个程序 1 cd figlinks/ 2 cp fig1.3 my

CentOS 上配置 lua 的服务器环境(enet)

安装 lua & luarocket 安装依赖 $ yum install gcc gcc-c++ kernel-devel $ yum install readline-dev $ yum install ncurses-devel.i386 下载并编译lua源文件 $ wget http://www.lua.org/ftp/lua-5.1.4.tar.gz $ tar zxvf lua-5.1.4.tar.gz $ cd lua-5.1.4 $ make linux 下载并安装 luaroc

我在GNU/Linux下使用的桌面环境工具组合

为了使GNU/Linux桌面环境下加载的程序较少以节省内存资源和提高启动时间,我目前并不使用重量级的桌面环境KDE和Gnome,甚至连登录窗界面gdm或xdm都不用,而是直接启动到控制台,登录后调用startx进入X视窗环境.所使用的工具组合列举如下: X视窗环境启动:startx 窗口管理器:Sawfish amixer:系统音量设置 键盘与鼠标配置:xmodmap 网络管理器:wicd(需删除NetworkManager) xscreensaver:屏幕保护程序 类似于Windows的底部工

GNU/Linux平台上正则表达式的简单使用

友情提醒:本博文涉及的内容中涉及到的系统实践操作在Centos6.5上实现,GNU/Linux简称为linux,GNU/grep简称为grep,GNU/sed简称为sed,GNU/gawk简称为awk. -------------------------------------------------楔子--------------------------------------------- 小酒馆一角落,一胖三瘦围着方桌坐定,大快耳颐后正在唠嗑. 瘦子甲:"胖子,为什么要把正则表达式和lin