IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> M1芯片的MacBook安装docker -> 正文阅读

[开发工具]M1芯片的MacBook安装docker

1 安装homebrew

homebrew是mac平台下的一个包管理软件系统,类似于ubuntu的apt。可以通过命令安装很多现成的二进制包。安装brew需要从github下载一些资源,但是一般国内的网络速度太慢,很难安装成功,我们可以更换为国内源进行安装以加快安装速度。

homebrew清华软件源地址?https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/

安装过程通过在终端中输入命令完成,打开终端,按照如下步骤安装:

  • 在命令行输入?xcode-select --install安装Command Line Tools for Xcode

安装完成后,在终端继续输入下面的命令设置环境变量:

export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"

输入下面的命令下载和安装homebrew:

# 下载安装脚本到brew-install目录
git clone --depth=1 https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/install.git brew-install
# 执行安装脚本
/bin/bash brew-install/install.sh
# 安装完成之后 可以删除刚才下载的安装脚本
rm -rf brew-install

安装完成之后,还需要在终端手动执行一些配置命令:

# 把brew加入到系统路径
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/jihongbin/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
# 修改默认软件源
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"' >> /Users/jihongbin/.zprofile
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"' >> /Users/jihongbin/.zprofile
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"

完成全部安装之后,可以通过brew help查看帮助命令

Example usage:
brew search TEXT|/REGEX/
brew info [FORMULA|CASK...]
brew install FORMULA|CASK...
brew update
brew upgrade [FORMULA|CASK...]
brew uninstall FORMULA|CASK...
brew list [FORMULA|CASK...]
?
Troubleshooting:
brew config
brew doctor
brew install --verbose --debug FORMULA|CASK
?
Contributing:
brew create URL [--no-fetch]
brew edit [FORMULA|CASK...]
?
Further help:
brew commands
brew help [COMMAND]
man brew
https://docs.brew.sh

之后可以通过brew install xxx来安装相关的软件包

2 配置终端

如果是进行一些程序开发的工作,很大程度会使用到终端,可以通过修改一些配置来美化终端的界面

大部分都是使用 oh my zhs + iterm2 的组合,oh-my-zsh是 zsh 的一个插件,可以基于zsh提供一些修改和功能,iterm2是一个第三方的终端,应该也是提供了不少新的功能,但是以我目前的使用需求来看,原生的终端也是可以满足当前的需求的,所以暂时就基于原生终端去做一些配置。

原生的终端也带了一些列的主题,我选择了一个带有一些透明度的主题(Silver Aerogel),看起来还可以,就暂时使用这个了,默认的字体太小了,虽然视力还可以,但是看起来太难受,修改了一下字体的大小。

一般在ubuntu的话我会修改系统的字体,但是现在在mac下默认字体也还行,就不修改了。

3 安装docker 编译linux内核

我安装docker是因为要做一些嵌入式开发的工作,大家知道现在apple m1芯片已经是arm64架构的芯片,正好我也在进行一些arm64架构平台的软件开发工作,本来以为使用mac自带的clang工具链也可以进行一些基本的开发,但是发现苹果自己的工具链是使用mach-o的可执行文件格式,而不是我们很常见的elf。

总结一下就是:

  • windows平台使用exe
  • linux平台使用elf
  • mac平台使用mach-o

所以mac自带的工具链和我们平时嵌入式开发使用的还是有一些不兼容,很难在原生平台进行开发,所以此时需要通过虚拟机去创建一个linux的开发环境进行开发。比较常用的linux系统就是ubuntu了,不过由于M1芯片是arm64架构,所以目前创建的虚拟机也将会使用atm64版本 与我们之前接触到的ubuntu可能略有不同,但是对于我来说,还是比较合适的。

docker是一个很出名的容器,具体是什么东西还不是很清楚,最近几天的接触 又有了一些了解。

首先docker是和linux有很大的关联或者关系,我们启动的各种docker都是以一个linux系统作为基地,进而添加了各种lib、各种软件包构成的。docker可以通过一个叫做 dockerfile的文件描述一个docker镜像,我们可以基于该文件去创建一个容器。

目前在M1芯片上,docker也是采用了套娃技术来支持。docker m1版本是基于qemu- system-aarch64 去运行的,通过qemu仿真器去执行一个arm64的Linux环境,来执行docker的软件,然后在docker里面再去运行linux系统。不过根据我的尝试,编译等效率还是可以的。

所以我们这里就是使用docker作为一个linux虚拟机来使用,完成一些编译工作。

docker安装比较简单,到官网选择对应的版本下载即可,我们主要介绍一下在mac m1芯片平台基于docker + ubuntu进行linux内核的编译。

3.1 构建一个docker镜像

首先创建一个docker镜像描述文件 Dockerfile:

FROM ubuntu:21.10 as build
?
ENV DEBIAN_FRONTEND=noninteractive
?
RUN echo "" > /etc/apt/sources.list
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ impish main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ impish-updates main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ impish-backports main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ impish-security main restricted universe multiverse" >> /etc/apt/sources.list
?
RUN apt-get update
RUN apt-get install -y gcc make flex bison libssl-dev bc vim qemu-system-aarch64
RUN rm -rf /var/lib/apt/lists/*
?
WORKDIR /root
?
CMD tail -f /dev/null

上述的文件描述,将会在基于ubuntu 21.10 版本去构建一个可以编译linux内核的软件环境,主要做了下面几项工作:

  • 修改了ubuntu的软件源 加速apt安装速度
  • 安装一些必要的软件包

执行build命令,基于上面的描述文件创建镜像:

docker build --tag ubuntu -f ./Dockerfile .

创建完成之后,可以通过docker image ls查看本地的镜像

接下来基于该去运行一个docker容器:

docker run --device /dev/fuse --cap-add SYS_ADMIN --name ubuntu -it ubuntu bash

在docker与宿主机之间拷贝文件:

docker cp path/file ubuntu:path/file

退出docker之后恢复:

docker start ubuntu
docker attach ubuntu

编译一个linux内核用时,虽然是在虚拟机下面 但是这个性能还是十分强大。

?
real5m4.928s
user16m31.139s
sys2m39.652s
root@ad1f59b2dd09:~/linux-5.16# 

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:57:14  更:2022-04-22 19:00:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 15:02:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码