翼度科技»论坛 云主机 LINUX 查看内容

ubuntu制作chroot系统镜像

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
这里的使用场景是在ubuntu x64上编译arm程序,需要一个开发环境,而最省心的方式就是自己做一个arm环境的chroot镜像,然后自由用apt-get安装依赖,然后编译程序。所以这里就以制作arm镜像为例。
在我们开始之前,我们需要了解一下ARM的几种架构:
armel(abi):这个是老架构,之前的arm硬件没有浮点处理单元,所以采用软件模拟的方式进行浮点计算,兼容新架构
armhf:这个是新架构,有了独立的硬件浮点处理单元,这个不兼容老架构
arm64:这个就直接用了新架构,没有el和hf之分了
kernel、rootfs和app编译的时候,指定的必须保持一致才行
1、首先我们需要安装相关程序来支持chroot环境
  1. sudo apt-get install qemu-user-static
复制代码
如果你有现成的镜像,那么只需要安装这个就行了,然后你就可以chroot进去了
2、接着我们需要安装制作镜像所需要的工具环境
  1. sudo apt-get install binfmt-support debootstrap qemu
复制代码
这里最主要是这个debootstrap,另外两个看着办
3、然后我们利用debootstrap来制作镜像
首先我们建立一个文件夹
  1. sudo mkdir /opt/ubuntu-arm-64
复制代码
然后我们运行debootstrap来联网下载对应的ubuntu版本基础镜像来制作我们的镜像
  1. debootstrap --arch=arm64 --foreign trusty /opt/ubuntu-arm-64 http://ports.ubuntu.com/
复制代码
这里的trusty是ubuntu 14.04的版本代号,关于debootstrap支持的版本代号,可以在debootstrap的脚本目录下查看,路径为 /usr/share/debootstrap/scripts/ 这下面有很多以ubuntu代号命名的文件
4、接着我们就等待3的操作完成,然后拷贝qemu-aarch64-static 到我们镜像的bin目录
  1. cp  /usr/bin/qemu-aarch64-static  /opt/ubuntu-arm-64/usr/bin/
复制代码
这里要注意了,是aarch64,如果你是armhf环境,那么请使用【qemu-arm-static】接着我们chroot进去
  1. sudo chroot /opt/ubuntu-arm-64
复制代码
这一步的时候,你可能会遇到 "i have no name" 的情况,不要急,我们来利用debootstrap对我们的镜像进行初始化操作
  1. debootstrap/debootstrap --second-stage
复制代码
如果没找到debootstrap脚本,那么请检查步骤3中遇到的错误,可能是mount proc失败。
然后等待初始化完成,你就会发现一切ok了。
5、接着我们来编辑apt的源,方便我们安装其他依赖
deb http://ports.ubuntu.com/ trusty main restricted universe multiverse
deb-src http://ports.ubuntu.com/ trusty main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ trusty main universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ trusty main universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ trusty-updates main universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ trusty-updates main universe
这里的trusty根据你版本的不同,可以换
6、接着就是关于chroot挂载真实系统设备到我们的虚拟系统,这个需要在chroot之前调用挂载,作用是比如你想多线程编译 make -j4 那么你就需要运行下面的脚本,挂载设备
  1. #!/bin/bash
  2. mount -t proc proc proc/
  3. mount -t sysfs sys sys/
  4. mount -o bind /dev dev/
  5. mount -t devpts pts dev/pts/
复制代码
参考:
http://www.360doc.com/showweb/0/0/804170657.aspx
https://wiki.debian.org/EmDebian/CrossDebootstrap
https://linux.cn/article-4936-1.html

来源:https://www.cnblogs.com/magicdmer/p/17640427.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具