搭建Docker开发环境_Linux

环境搭建

文章目录

  • 环境搭建
    • @[toc]
    • Docker
      • Docker运行权限
      • Docker加速
      • Docker容器创建
    • Python版本切换
    • 版本工具
      • Repo
      • Git
    • 开发
      • SDK代码拉取
        • 在线
        • 离线(推荐)
    • Debian
      • 安装软件包
      • 编译
      • 打包
    • 问题
      • 技巧

Docker

sudo apt  install docker.io

Docker运行权限

#添加docker group
sudo groupadd docker# 将当前用户添加到docker组
sudo gpasswd -a ${USER} docker# 重启docker服务:
sudo service docker restart
​
# 查看用户组及成员:
cat /etc/group | grep docker

Docker加速

# 编辑 Docker 配置文件
$ sudo vim /etc/docker/daemon.json
​
# 加入以下配置项
{"registry-mirrors": ["https://dockerproxy.com","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://ccr.ccs.tencentyun.com"]
}# 重启docker
$ sudo service docker restart

Docker容器创建

# 推荐:Ubuntu 18.04 版本  
# 拉取Ubuntu镜像
docker pull ubuntu:18.04# 进入关联源码目录挂载使用绝对路径,启动Docker
cd ~
docker run -it -v ${PWD}:${PWD} --privileged --name Ubuntu18_Lubancat2 ubuntu:18.04# 环境依赖
apt-get update# Docker 补充
apt install -y bc time rsync curl vim sudo# 安装 SDK 构建所需要的软件包
apt install -y git ssh make gcc libssl-dev liblz4-tool u-boot-tools curl \
expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \
qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \
unzip device-tree-compiler python-pip libncurses5-dev python3-pyelftools \
dpkg-dev# 添加用户
adduser gaoyang3513# 为用户username添加sudo权限
sudo usermod -a -G sudo gaoyang3513# sudo 免密,在sudoer.d目录新建docker-nopasswd
#    添加内容:gaoyang3513 ALL=(ALL) NOPASSWD: ALL
sudo visudo /etc/sudoers.d/docker-nopassswd# 切换用户
su gaoyang3513

Python版本切换

# 添加,优先python3
update-alternatives --install /usr/bin/python python /usr/bin/python2 100
update-alternatives --install /usr/bin/python python /usr/bin/python3 150# 切换
update-alternatives --config python

版本工具

Repo

# 环境配置
mkdir -p ~/.local/bin/
export PATH=~/.local/bin/:$PATH# 下载
curl https://storage.googleapis.com/git-repo-downloads/repo > .local/bin/repo# 权限
chmod a+x .local/bin/repo# 生效
source .profile

Git

git config --global user.name "gaoyang3513"
git config --global user.email "gaoyang3513@163.com"git config --global core.editor vim

开发

SDK代码拉取

在线
#github地址
repo --trace init --depth=1 --repo-url https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -u https://github.com/LubanCat/manifests.git -b linux -m rk356x_linux_release.xml # 同步源码
repo --trace sync -c -j4
离线(推荐)
# 离线SDK,解压
cd SDK_RK3568_Linux_New 
7z x ../../01-Resource/01-鲁班猫/8-SDK源码压缩包/LubanCat_rk356x_Linux_SDK_20230711.7zrepo init --depth=1 -u https://github.com/LubanCat/manifests.git -b linux -m rk356x_linux_release.xml# 检出.repo 目录下的 git 仓库并同步
repo sync -l -j10
# 不推荐同步
# repo sync -c -j10

Debian

安装软件包

sudo apt install binfmt-support qemu-user-static# 安装 debian 根文件系统构建依赖的软件包,无视过程报错
sudo dpkg -i debian/ubuntu-build-service/packages/*
sudo apt-get install -f

编译

# 选择目标
#     10. BoardConfig-LubanCat-RK3568-debian-xfce.mk
./build.sh lunch

打包

# 一键编译 u-Boot, kernel, Rootfs, Recovery, 并打包为 update.img 镜像
./build.sh

问题

  • 错误1../build.sh: line 717: /usr/bin/time: No such file or directory
atp instal -y time
  • 错误2. 2023-09-08T01:18:53 You must install 'rsync' on your build machine

    apt install -y rsync
    
  • 错误3. fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle

    # vi ~/bin/repo
    ​
    - REPO_URL = 'https://gerrit.googlesource.com/git-repo'
    + REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
    

    或repo init时参数--repo-url指定,如:--repo-url https://mirrors.tuna.tsinghua.edu.cn/git/git-repo

  • 错误.Failed to run livebuild, please check your network connection.

    if [ -f binary-tar.tar.gz ]; then \tar -jcf linaro-buster-alip-`date +%Y%m%d`-1.config.tar.bz2 auto/ config/ configure; \sudo mv binary.contents linaro-buster-alip-`date +%Y%m%d`-1.contents; \sudo mv chroot.packages.live linaro-buster-alip-`date +%Y%m%d`-1.packages; \sudo mv binary-tar.tar.gz linaro-buster-alip-`date +%Y%m%d`-1.tar.gz; \md5sum linaro-buster-alip-`date +%Y%m%d`-1.build-log.txt linaro-buster-alip-`date +%Y%m%d`-1.config.tar.bz2 linaro-buster-alip-`date +%Y%m%d`-1.contents linaro-buster-alip-`date +%Y%m%d`-1.packages linaro-buster-alip-`date +%Y%m%d`-1.tar.gz > linaro-buster-alip-`date +%Y%m%d`-1.md5sums.txt; \sha1sum linaro-buster-alip-`date +%Y%m%d`-1.build-log.txt linaro-buster-alip-`date +%Y%m%d`-1.config.tar.bz2 linaro-buster-alip-`date +%Y%m%d`-1.contents linaro-buster-alip-`date +%Y%m%d`-1.packages linaro-buster-alip-`date +%Y%m%d`-1.tar.gz > linaro-buster-alip-`date +%Y%m%d`-1.sha1sums.txt; \
    fiFailed to run livebuild, please check your network connection. 
    VERSION=none TARGET=xfce SOC=rk356x ./mk-buster-rootfs.sh
    

    直接原因为binary-tar.tar.gz文件未生成,根本原因为qemu中挂载/proc目录失败,解决方案:参考1.docker 中使用mount命令报错:mount: permission denied

技巧

# 新开
docker exec -it Ubuntu20_RK3568 /bin/bash
  • Github加速

    参考1.

  • 百度网盘加速

    参考1.

  • sudoer修改

    参考1. 批量修改ubuntu用户sudo免密码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/86082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】图像去噪(2)——常见网络学习

【深度学习】图像去噪 是在 【深度学习】计算机视觉 系列文章的基础上,再次针对深度学习(尤其是图像去噪方面)的基础知识有更深入学习和巩固。 1 DnCNN 1.1 网络结构 1.1.1 残差学习 1.1.2 Batch Normalization (BN) 1.1.2.1 背景和目标…

如何使用固态硬盘+硬盘盒子+U盘创造移动双系统

本文背景 这学期上了一节鸟水课《大数据实践》,老师要求扩展硬盘盒,以部署大数据工具进行 机器挖掘等大数据领域工作 参考视频链接:无需启动盘,用虚拟机将ubuntu安装到移动硬盘上_哔哩哔哩_bilibili 项目使用设备 1.绿联&#…

软件工程之总体设计

总体设计是软件工程中的一个重要阶段,它关注整个系统的结构和组织,旨在将系统需求转化为可执行的软件解决方案。总体设计决定了系统的架构、模块划分、功能组织以及数据流和控制流等关键方面。 可行性研究 具体方面:经济可行性、技术可行性…

RabbitMQ的工作模式——WorkQueues

1.工作队列模式 生产者代码 public class Producer_WorkQueues1 {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//2.设置参数factory.setHost("172.16.98.133&qu…

81《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

81《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

ESD门禁闸机的用途及优点

ESD门禁闸机是一种专门用于防止静电干扰的门禁设备,其主要用途包括: 防止静电干扰:ESD门禁闸机可以有效地防止静电干扰,保护电子元器件、电路板等敏感设备不受静电破坏。 控制人员进出:ESD门禁闸机可以通过身份验证等…

“华为杯”研究生数学建模竞赛2019年-【华为杯】D题:汽车行驶工况构建

目录 摘 要: 一、问题重述 1.1 问题背景 1.2 问题重述 二、问题分析

AUTOSAR汽车电子嵌入式编程精讲300篇-车载网络 CAN 总线报文异常检测

目录 前言 国内外研究现状 车载网络 CAN 总线威胁分析和报文异常检测研究

【力扣】278. 第一个错误的版本

题目描述 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, ..., n],…

AWS入列CNCF基金会

7月27日,IT之家曾经报道,微软加入Linux旗下CNCF基金会,在这之后不到一个月的今天,亚马逊AWS也宣布,以铂金身份加入此基金会。 CNCF,全称Cloud Native Computing Fundation,该基金会旨在使得容器…

windows上安装好了pip,并正确配置了路径后,特别地使用

尝试使用 Python -m pip:有时,在某些 Python 安装中,pip 可能需要通过 python -m pip 来执行。尝试运行以下命令: python -m pip install requests

Netty简介及简单客户端/服务端示例代码

什么是Netty? Netty是一个NIO客户机-服务器框架,它支持快速而容易地开发网络应用程序,如协议服务器和客户机。它大大简化和简化了网络编程,如TCP和UDP套接字服务器。 “快速简单”并不意味着生成的应用程序将遭受可维护性或性能问…

【再识C进阶3(上)】详细地认识字符串函数、进行模拟字符串函数以及拓展内容

小编在写这篇博客时,经过了九一八,回想起了祖国曾经的伤疤,勿忘国耻,振兴中华!加油,逐梦少年! 前言 💓作者简介: 加油,旭杏,目前大二,…

基于AVR128单片机智能电风扇控制系统

一、系统方案 模拟的电风扇的工作状态有3种:自然风、常风及睡眠风。使用三个按键S1-S3设置自然风、常风及睡眠风。 再使用两个按键S4和S5,S4用于定时电风扇定时时间长短的设置,每按一次S4键,定时时间增加10秒,最长60秒…

(一)详解策略模式

目录 必备背景知识 一.使用场景 二.核心逻辑 三.举例子 总结 必备背景知识 针对接口编程,而不是针对实现编程(修改功能更加容易,我们只需要对接口作出修改即可)优先使用组合而不是继承(继承会导致后来的子类都具…

mysql优化之索引

索引官方定义:索引是帮助mysql高效获取数据的数据结构。 索引的目的在于提高查询效率,可以类比字典。 可以简单理解为:排好序的快速查找数据结构 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这种数据…

html和css相关操作

html第一个网页 <!DOCTYPE html> <!--html文档声明&#xff0c;声明此文档是一个html5的文档--> <html> <!--html文档开头标签--><head><!--html文档的设置标签&#xff0c;文档的设置及资源的引用都写在这个标签中--><meta charset&q…

[Pytorch]语义分割任务分类的实现

文章目录 [Pytorch]语义分割任务分类的实现 [Pytorch]语义分割任务分类的实现 假如我们定义了一个网络用于语义分割任务&#xff0c;这个网络简称为model() 语义分割任务要做的是&#xff1a; 对于一个图片输入input&#xff0c;大小为&#xff08;B&#xff0c;C&#xff0c…

如何快速走出网站沙盒期(关于优化百度SEO提升排名)

网站沙盒期是指新建立的网站在百度搜索引擎中无法获得好的排名&#xff0c;甚至被完全忽略的现象。这个现象往往发生在新建立的网站上&#xff0c;因为百度需要时间来评估网站的质量和内容。蘑菇号www.mooogu.cn 为了快速走出网站沙盒期&#xff0c;需要优化百度SEO。以下是5个…

IDEA .iml文件及.idea文件夹详解

.iml文件 idea 对module 配置信息之意&#xff0c; infomation of module。每个模块都有一个iml文件。 IDEA中的.iml文件是项目标识文件&#xff0c;缺少了这个文件&#xff0c;IDEA就无法识别项目。跟Eclipse的.project文件性质是一样的。并且这些文件不同的设备上的内容也会…