正如已经指出的那样,您必须在设备上安装支持ARM的chroot,并在该chroot中安装所有必需的软件包。但是,在主目录中这样做会浪费大量宝贵的空间。而是可以使用在适当的Linux操作系统上运行的计算机(在Linux Mint 17和Ubuntu Trusty上进行测试)在SD卡上完成此操作。由于我在其他任何地方都找不到关于此的任何信息,因此将其作为对一个旧问题的解答。
以下说明假定您要在目录jessie中安装debian jessie chroot。
在台式计算机上创建和填充图像文件
创建一个空的图像文件
要在当前工作目录中创建一个名为IMAGE.img的1GB映像,请执行以下操作:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
请注意,GB中的B被忽略了。“ if”代表“输入文件”,“ of”代表“输出文件”,“ bs”代表“块大小”。
据我所知,那里有更有效的命令,但是这些命令仅适用于某些类型的文件系统。这也适用于SD卡或tempfs。请注意使用/ dev / zero而不是/ dev / random或/ dev / urandom,因为这将花费更长的时间,并且使以后在设备之间传输映像的时间也更长。
在映像上创建文件系统
没有文件系统,手机将无法在图像上存储任何数据。如果没有文件系统,则无法将映像安装到目录,只能安装到块设备。
此bash命令将下一个空循环设备输出到变量中LOOP
:
$LOOP=$(sudo losetup -f)
接下来,将图像分配给块设备:
sudo losetup $LOOP IMAGE.img
接下来,在其上创建ext4文件系统:
sudo mkfs -t ext4 $LOOP
接下来,从循环设备分离图像:
sudo losetup -d $LOOP
如果出现命令找不到错误,只需安装缺少的程序。
将映像文件挂载到计算机上以对其进行访问
现在,在工作目录中创建一个临时目录:
mkdir jessie
并将图像文件IMAGE.img挂载到该文件:
sudo mount -o loop IMAGE.img $(pwd)/jessie
该命令pwd
将确保您为mount提供到当前工作目录的绝对路径。
使用带有qemu-debootstrap的新操作系统填充映像
下一步将使用qemu-debootstrap下载必要的文件。如果qemu-debootstrap可用(在Ubuntu和派生的OS上就是这种情况),这很容易。如果执行时遇到命令找不到错误
qemu-debootstrap --help
,请尝试安装适当的软件包,可以通过以下方法在Ubuntu上完成安装:
sudo apt-get install qemu-user-static
要下载所有必需的文件并准备好新的操作系统,请运行以下命令:
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
请注意,第一个jessie
代表操作系统版本,第二个jessie
代表将要安装文件的目录。现在,您可以卸载映像,因为其余的工作必须在手机上完成。通过以下方式进行:
sudo umount $(pwd)/jessie
如果无法安装qemu-debootstrap,请参阅下一节。
在没有qemu-debootstrap的新操作系统中填充映像
如果您有可用的qemu-debootstrap,请跳过本节。但是,您仍然需要为本体系结构提供本机的debootstrap。如果发生这种情况是armhf,只需使用上面的命令行,但替换qemu-debootstrap
的
debootstrap
。如果不是,请遵循本节。
要下载新操作系统的所有必需文件,请运行以下命令:
sudo debootstrap --arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
现在,您可以卸载映像,因为其余的工作必须在电话上完成。通过以下方式进行:
sudo umount $(pwd)/jessie
将图像传输到手机
现在最好从中创建一个tar存档,然后将其复制到手机中。存档是放在SD卡上还是内部存储都没有关系。使用以下命令在桌面上创建档案:
tar -cvzf jessie.tar.gz IMAGE.img
现在,在您的手机上,打开ssh支持以复制图像。您也可以使用USB电缆代替。由于ssh服务器在每次重新启动时都会重置,因此请通过以下方式在手机上启动ssh服务:
sudo service ssh start
接下来,通过以下方式复制图像:
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
其中变量COPYDIR
包含应存储图像的目录。此命令假定您在电话上的用户名是phablet,电话的主机名是ubuntu-phablet。您可以分别通过发行echo $USER
和echo $HOSTNAME
电话来查找。
现在,您只需要提取存档就可以将图像保存在任何地方。假定要在其中放置图像的目录存储在变量中IMAGEDIR
。通过bash命令将图像提取到那里:
( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
您现在可以删除存档:
rm $COPYDIR/jessie.tar.gz
完成并使用手机上的图像
如果您没有打开手机上的ssh服务器,请立即通过以下方式打开:
sudo service ssh start
接下来,将映像安装到您选择的目录(本例中为“ jessie”):
sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie
现在,通过以下方式首次输入您的chroot:
ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"
如果您的计算机上有qemu-debootstrap,那么您已经完成了。使用以上2条命令连接到chroot。如果不是这样,则在进入chroot之后,仍然必须执行以下命令,以正确设置操作系统:
/debootstrap/debootstrap --second-stage
如何访问chroot的摘要
如果执行上述步骤,则应该可以使用电话上的以下简单脚本访问chroot:
#!/bin/bash
sudo service ssh start
ssh localhost "sudo chroot jessie /bin/bash"
由于终端应用程序的装甲限制,您必须先从手机ssh进入自己的手机。终端应用程序仅允许在某些位置执行二进制文件,而您的主目录和SD卡均不在其中。但是,ssh服务没有这样的限制。