首页 > 系统相关 >ubuntu制作chroot系统镜像

ubuntu制作chroot系统镜像

时间:2023-08-18 14:33:18浏览次数:36  
标签:chroot trusty debootstrap ubuntu 镜像 arm

这里的使用场景是在ubuntu x64上编译arm程序,需要一个开发环境,而最省心的方式就是自己做一个arm环境的chroot镜像,然后自由用apt-get安装依赖,然后编译程序。所以这里就以制作arm镜像为例。

在我们开始之前,我们需要了解一下ARM的几种架构:
armel(abi):这个是老架构,之前的arm硬件没有浮点处理单元,所以采用软件模拟的方式进行浮点计算,兼容新架构
armhf:这个是新架构,有了独立的硬件浮点处理单元,这个不兼容老架构
arm64:这个就直接用了新架构,没有el和hf之分了
kernel、rootfs和app编译的时候,指定的必须保持一致才行

1、首先我们需要安装相关程序来支持chroot环境

sudo apt-get install qemu-user-static

如果你有现成的镜像,那么只需要安装这个就行了,然后你就可以chroot进去了

2、接着我们需要安装制作镜像所需要的工具环境

sudo apt-get install binfmt-support debootstrap qemu

这里最主要是这个debootstrap,另外两个看着办

3、然后我们利用debootstrap来制作镜像
首先我们建立一个文件夹

sudo mkdir /opt/ubuntu-arm-64

然后我们运行debootstrap来联网下载对应的ubuntu版本基础镜像来制作我们的镜像

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目录

cp  /usr/bin/qemu-aarch64-static  /opt/ubuntu-arm-64/usr/bin/

这里要注意了,是aarch64,如果你是armhf环境,那么请使用【qemu-arm-static】接着我们chroot进去

sudo chroot /opt/ubuntu-arm-64

这一步的时候,你可能会遇到 "i have no name" 的情况,不要急,我们来利用debootstrap对我们的镜像进行初始化操作

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 那么你就需要运行下面的脚本,挂载设备

#!/bin/bash
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/
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

标签:chroot,trusty,debootstrap,ubuntu,镜像,arm
From: https://www.cnblogs.com/magicdmer/p/17640427.html

相关文章

  • ubuntu 开启root 登录
    安装vimsudoapt-getinstallvim 1、sudosuroot 2、passwdroot  修改文件/usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf文件,增加两行:greeter-show-manual-login=trueall-guest=false  二、进入/etc/pam.d目录,修改gdm-autologin和g......
  • ubuntu 18.04 git2.17.1升级 2.41
    默认安装版本一、添加git官方源sudoadd-apt-repositoryppa:git-core/ppa根据提示回车继续二、更新仓库包索引sudoaptupdate不更新,即便git官方有更新,你也搜索不到三、查看有什么软件可以更新aptlist--upgradable可以看到左边红箭头,显示是最新的git2.......
  • Ubuntu 开机自启动Django程序
    在Ubuntu系统中设置开机启动一个命令,如pythonmanage.pyrunserver0.0.0.0:8000来启动Django服务器,可以通过以下步骤实现:创建一个SystemdService文件:打开终端并使用文本编辑器(例如nano或vim)创建一个SystemdService文件,比如django_app.service:bashCopycodesudona......
  • Ubuntu22.04 在VMware下配置静态IP
    学习记录留作参考祝君好运配置静态IP,需要在虚拟机中将“网络连接”设置为“桥接模式”如果虚拟机在安装时选择的其他模式,在切换到桥接模式后可能会出现无法联网甚至无法开机的情况我遇到了这个问题,但是没有仔细研究。我直接选择了重装虚拟机Ubuntu使用netplan管理网......
  • macOS Ventura 13.5.1 (22G90) Boot ISO 原版可引导镜像下载 (修复定位服务无法授权问
    macOSVentura13.5.1(22G90)BootISO原版可引导镜像下载(修复定位服务无法授权问题)2023年8月17日(北京时间18日凌晨)macOSVentura13.5.1发布,修复了“系统设置”-"隐私和安全性"中“定位服务”无法授权管理的问题。推荐所有用户更新。本站下载的macOS软件......
  • macbook-pro m2 芯片 vmfusion 安装 Ubuntu
    1、下载vmfusion13并安装2、下载UbuntuServerarm版本,并在vmfusion13中安装3、在UbuntuServer中安装desktop$sudoaptupdate$sudoaptinstalltasksel#查看可用的gui$tasksel--list-tasks#选择安装喜欢的gui$sudotaskselinstallgnome-deskt......
  • 在ubuntu中半自动安装搜狗输入法的shell脚本
    总而言之就是用脚本实现了一遍搜狗官网教程中的内容,脚本仅仅在虚拟机环境的ubuntu22中对sogoupinyin_4.2.1.145_amd64.deb测试过,不保证在其他地方还能不能正常运行。脚本启动需要用sudo命令以管理员权限执行,脚本执行完毕并重启电脑后,按Ctrl+空格键调出输入法,按Shift键切换中......
  • ubuntu 下 GCC/G++ 的 include 搜索路径查看与设置
    https://blog.csdn.net/quicmous/article/details/106790319 一、如何查看include搜索路径输入如下命令:>echo'main(){}'|gcc-E-v-1显示结果如下:Usingbuilt-inspecs.COLLECT_GCC=gccOFFLOAD_TARGET_NAMES=nvptx-noneOFFLOAD_TARGET_DEFAULT=1Target:x86_64-linux-gn......
  • docker 制作自己的镜像
    1.下载系统镜像(Ubuntu)2.基于下载的镜像创建容器(容器名一个为自己名字全拼)3.容器的启动、停止及重启操作4.怎么查看正在运行的容器和所有容器5.怎么连接及退出容器6.查看容器或镜像的内部信息7.操作容器8.将容器制作成镜像9.将制作好的镜像打成tar包10.将打包好的tar包传给别......
  • dotnet7下docker镜像构建之XML打包丢失问题
    注意暂时值适用.NETSDK7.0.100以上其他版本,可以参考举例中的配置host项目省流原因dotnetpublish发布命令对于引用项目的xml不会拷贝到发布目录举例host项目依赖api项目,api项目依赖utils包,utils包中的xml文件在host项目swagger需要使用xml文件一般包引用xml文件输出配......