当前位置: 首页 > wzjs >正文

专业网站建设专家免费制作链接

专业网站建设专家,免费制作链接,wordpress 访问空白,百度搜索指数前言 在嵌入式开发的过程中, 难免会碰到不同SDK对编译环境的不同需求, 少则安转一些依赖软件和工具, 多的则要求指定的系统版本. 比如, Android 5.1和7.1的SDK, Ubuntu 16.04可以满足, 更高版本的则会要求18.04及以上. 如何来解决这个问题, 一般可以考虑几种做法: 安装对应版本…

在这里插入图片描述
在这里插入图片描述

前言

     在嵌入式开发的过程中, 难免会碰到不同SDK对编译环境的不同需求, 少则安转一些依赖软件和工具, 多的则要求指定的系统版本.
比如, Android 5.1和7.1的SDK, Ubuntu 16.04可以满足, 更高版本的则会要求18.04及以上.
如何来解决这个问题, 一般可以考虑几种做法:

  1. 安装对应版本的主机, 用来编译不同的SDK (适合企业, 有足够的硬件主机)
  2. 使用虚拟技术, 把系统环境安装到虚拟机, 比如: VMware, Virtualbox (需要大量的磁盘空间)
  3. 将系统安装到U盘; (频繁切换系统比较麻烦)
  4. 使用chroot切换运行环境; (灵活, 稍复杂)

由于项目需要, 把Ubuntu18.04 安装在 U 盘上, 而平时的主要工作系统用是22.04, 文档工具也都在22.04中, 频繁切换系统稍显麻烦, 于是考虑使用 chroot 来切换的 Ubuntu 系统进行后续的开发工作;

     chroot 就是 change-root,可以说是最简单和古老的容器化软件之一,它允许用户安全地将应用程序和服务隔离。在计算术语中,隔离是将程序限制在一个受限空间内,具有预定义的资源。

如果您熟悉 Docker 及其工作原理,您可以将 chroot 视为其大幅简化的版本。chroot 通过更改程序的根目录,限制访问和可见性,从而提供了额外的隔离和安全层级。


准备工作

  1. ubuntu 18.04 已经正确安装到U盘, 并可以正常挂在U盘到当前的系统中(本文以/dev/sdc4为例)

  2. 确保有sudo权限:需要挂载文件系统和进行其他管理任务。

  3. 挂载目标分区:首先,需要将/dev/sdc4挂载到一个目录下,比如/mnt/u18

    sudo mkdir -p /mnt/u18
    sudo mount /dev/sdc4 /mnt/u18
    
  4. 挂载必要的文件系统:为了使chroot环境正常运行,你需要挂载一些必要的文件系统,如proc, sys, 和 dev

    for i in /proc /sys /dev /dev/pts; do sudo mount -B $i /mnt/u18$i; done
    

进入chroot环境

sudo chroot /mnt/u18 /bin/bash

退出chroot环境

完成工作后,通过简单的输入exit或按Ctrl+D离开chroot环境。

  • 不要忘记卸载之前挂载的文件系统:

    for i in /proc /sys /dev /dev/pts; do sudo umount /mnt/u18$i; done
    
  • 卸载分区本身:

     sudo umount /mnt/u18
    

这样就完成了从Ubuntu 20.04系统进入到另一个安装在/dev/sdc4上的Ubuntu 18.04系统中, 在这个系统中, 同样可以执行各种各样的命令, 比如: su user, gcc, make, ldd --version等等.


小提示

  1. 尽量简化目标环境(Ubuntu18.04)的分区, 可以考虑使用单分区安装(/ /home等不需要单独分区)
  2. 目标环境系统安装软件和工具时, 不要用snap, 否则容易出错(比如出现过CMake执行卡住)
  3. /proc /sys /dev /dev/pts 需要挂载上, 减少莫名其妙运行命令失败的问题
  4. 开发环境的搭建, 最好是在安装ubuntu18.04系统之后, 减少在chroot中操作导致的问题
  5. 局域网一般是通的, 外网有是需要手动配置DNS(/etc/resolv.conf)
  6. 在成功切换后, 未在Android SDK编译验证; 目前验证过的有buildroot海思平台的SDK
  7. 默认是root身份登录, 要保持文件的权限等属性, 尽量切换到对应的用户

整合文件系统挂载脚本:

#!/bin/bash
# 挂载路径
U18=/mnt/u18function usage(){echo "USAGE: mount all storage device for ubuntu 18.04"echo "  after this, you can use 'sudo chroot /mnt/u18' to goto ubuntu 18.04"echo "  [start] start mount all"echo "  [stop]  stop and umount all"
}function umountAll(){if [ $1 ] && [ $1 == all ]; thensudo umount ${U18}/procsudo umount ${U18}/syssudo umount ${U18}/devfisudo umount ${dev_home}sudo umount ${dev_code}sudo umount ${dev_root}
}if [ ! $1 ]; thenusageexit 0
fi# 通过UUID 查找存储设备的设备路径
UUID_HOME="aaaaaaaa-16dc-4201-acc0-0b6205116ffb"
UUID_ROOT="bbbbbbbb-a68b-4336-9ffb-ed44f1d1293f"
UUID_CODE="cccccccc-d38c-405c-bb0a-dca41897e808"dev_home=`blkid -U ${UUID_HOME}`
dev_root=`blkid -U ${UUID_ROOT}`
dev_code=`blkid -U ${UUID_CODE}`echo "HOME: ${dev_home}"
echo "ROOT: ${dev_root}"
echo "CODE: ${dev_code}"if [ $1 == start ]; thenecho "start umount"umountAllif [ ! -d /mnt/u18 ]; thensudo mkdir ${U18}fisudo chmod 777 ${U18}sudo mount ${dev_root} ${U18}sudo mount ${dev_home} ${U18}/homesudo mount ${dev_code} ${U18}/mntsudo mount -t proc /proc ${U18}/procsudo mount --rbind /sys ${U18}/syssudo mount --rbind /dev ${U18}/develif [ $1 == stop ]; thenecho "stop, umount all"umountAll all
fi

参考

Linux 中的 chroot 是什么以及它的工作原理
Chroot 简介

http://www.dtcms.com/wzjs/496135.html

相关文章:

  • 池州哪里做网站苏州seo安严博客
  • 做网站什么用seo提升关键词排名
  • 企业网站 梦织2023年最新新闻摘抄
  • CSS3网站建设软文营销是什么意思
  • 网站抓取诊断ip出错怎么给自己的网站设置关键词
  • 深圳做网站建设比较好的公司网络营销优化
  • 网站设计一般包括哪些友情链接怎么弄
  • 里水哪里做有做网站百度邮箱注册入口
  • 淄博专业网站建设哪家好全网整合营销
  • 信息网站建设站长联盟
  • php做网站优点大学生创新创业大赛
  • 七牛搭建网站做百度推广效果怎么样
  • 郑州做网站优化最好的公司南昌seo推广
  • 深圳方维网络手机卡顿优化软件
  • 网站关闭申请书网络推广方式主要有
  • 免费香港网站空间360指数查询工具
  • dhru商城网站建设百度平台我的订单查询在哪里
  • 浙江网站建设推广公司找哪家快速优化排名公司推荐
  • 肇庆网站建设cz0758友情链接也称为
  • win系统做网站口碑营销案例2021
  • 网站的前期推广哪个好用?
  • 做h5的网站页面设计百度关键词推广价格查询
  • wordpress插件后台慢整站优化方案
  • 做营销推广外包的网站一个平台怎么推广
  • 网站建设服务器的选择方式包括哪些学生个人网页设计模板
  • 湖南长大建设集团股份有限公司网站企业推广策略
  • 免费网站模板带后台下载四川二级站seo整站优化排名
  • 直销软件开发5年网站seo优化公司
  • 设计师网站接单磁力链bt磁力天堂
  • 免费广告行业网站建设销售技巧和话术