在D1/openEuler上安装docker,并运行docker/Debian
实验时间:2021.9.1
需要的硬件有: D1开发板,TF卡,TF卡读卡器,串口转USB线
软件有: Linux系统,Windows下的Xshell, Windows下的串口转USB的驱动。
openEuler镜像: https://mirror.iscas.ac.cn/plct/openEuler-D1-wifi-hdmi-docker-20210826.img.bz2 (这是我目前使用的版本,镜像一直在更新中)
步骤
一、在D1上安装openEuler系统
简明步骤如下:
1. 在x86/Ubuntu下烧录oE镜像。
我的Ubuntu系统信息:
a. 将TF卡放入读卡器,连接上x86主机。
b. 下载oE镜像:
sudo fdisk -l
d. 使用dd命令将镜像烧录到TF卡:
e. 对/dev/sdb中的系统分区进行扩容
sudo fdisk -ldf -hT
sudo fdisk -ldf -Th
现在烧录完成,之后将TF卡放入D1并开机。
说明:这里使用的镜像应该是支持HDMI的,也就是支持显示器的信号输入的,但是我在实验过程中,显示器始终起不来。因此我这里改成用串口登录系统了,遇到同样问题的小伙伴也可以采用这种方式,以及如果使用了不支持HDMI的镜像,也可以使用串口登录。下面来看,如何使用串口登录。
2. 使用串口登录uboot,并使用SSH登录oE系统
我是Windows下是用Xshell来进行串口和SSH登录的,在Linux中可以使用minicom来进行串口登录uboot。下面主要说一下Windows下的操作步骤。
a. 安装串口转USB的驱动程序
需要注册账号登录下载,下载的工具和位置参见下图:
留着,待会儿安装。
现在把TF卡插入D1里,接上HDMI线到显示屏(运气好显示屏可以起来),插上串口线到x86主机的USB上,串口端插在D1的板子上,针的顺序如下,从靠近typec口依次是白绿黑线,红线不用:
这时候,打开x86主机上的设备管理器(电脑->管理->设备管理器->COM口)COM口会多出一个无法识别的硬件,右键点击它,选择安装驱动,然后指定前面下载的FT232R驱动的文件夹,然后它会自动搜索并安装。安装成功之后,会显示出USB Serial Port,如下图所示:
b. 启动D1,进入uboot界面,设置wifi
下载Xshell软件,下面是官网地址,有30天免费试用版,家庭学校用户免费版,按需下载吧。
下载安装之后,启动Xshell,新建一个会话,协议选择SERIAL,其他默认,如下图所示:
然后连接进入这个会话,这时候串口线也是插上的,然后再给D1上电,Xshell界面就能显示出uboot的启动过程了。
(注意,一定是先插好线,开启SERIAL会话,再给D1上电)
uboot启动完成之后就可以登录系统了,登陆账号密码: root/openEuler12#$
登陆系统之后,赶紧设置WiFi吧,有wifi就能SSH登录了,不用忍受串口时不时打印出的信息。
Wifi的设置方法是:
这里使用的镜像已经支持wifi了,执行ifconfig可以看到wlan0,可以使用nmtui图形模式配置。
直接输入命令nmtui即可:
接着选择:Edit a connection -> -> Wi-Fi
填写Profile name、SSID、选择认证方式,然后就可以连接上WiFi了 : )
现在有了wifi,就可以使用SSH登录了,先查看一下D1的ip地址:
然后再Xshell中创建一个新的会话,协议选SSH,主机填入D1的IP,其他默认,确定,然后连接这个SSH会话,要求输入密码,选择保存密码。由于D1使用DHCP获得IP的,所以D1重启之后,IP就会变,那这里的IP就需要重新设置了。
到此,我们就成功登录了D1/oE,准备工作完成,下面要正式开始在D1/oE上安装Docker,并运行Docker/Linux了。
二、在D1/oE上安装Docker
- 安装依赖的包
2. 下载并安装go
目前还没有官网的go for RISCV的安装包,我们是从下面的github仓库里找到了prebuilt的安装包:
这里我用的版本是go1.17.linux-riscv64.tar.gz。
3. 下载docker安装包并安装
目前还没有官网的docker for RISCV的安装包,我们是从下面的github仓库里找到了prebuilt的安装包:
上面安装的oE系统的Glibc版本是2.31,适合的docker安装包是下面这个:
如果系统的Glibc版本是2.33的话,可以使用下面这个:
我这里用的是docker-19.03.8-dev_riscv64.tar.gz。下载之后解压缩,并且安装包的目录,拷贝到系统的相应目录下:
4. 安装CNI的插件
5. 设置LD_LIBRARY_PATH
6. 启动docker
上面的步骤都做完了之后,建议重启D1开发板,IP会改变,Xshell相应的SSH连接会话IP需要重新设置。(先用串口会话看IP,再设置SSH IP)
重启之后,查看一下后台进程,containerd和dockerd可能默认就是开启的,先把它们kill掉,例如:
总结一下命令如下:
docker version
下面就是拉取riscv64/debian的镜像,并且运行docker/debian:
运行成功会是类似这样的:
到这里就完成了,撒花!
PS: 后来我又重新执行了一遍这个流程,这次遇到找不到runc,解决方法是创建一个crun到runc的软连接:
之前是没有遇到这个问题,不知道问题出在哪里。