Ubuntu18.04安装linux-lab
文章目录
- Ubuntu18.04安装linux-lab
- docker安装
- linux-lab安装
- 意外事件流处理
- 参考资料
本文主要目的是搭建linux内核实验环境
因为工作需要所以学习linux内核,目前主要根据《linux内核完全注释》和《自己动手写操作系统》进行学习,众所周知,编程的学习是要和实操相结合的,《自己动手写操作系统》中提到的实验环境是Virtual PC搭建的,太古老了,也太麻烦了。后面在找寻更新更方便的环境搭建工具的时候,发现了linux-lab
这个开源项目,这个项目的目的就是linux内核的学习,里面提供了各种linux内核实验环境的搭建。
docker安装
- 更新软件库安装docker依赖
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
-
添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
-
添加Docker官方存储库
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
-
安装Docker引擎
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
-
启动Docker服务并将其设置为开机启动
sudo systemctl start docker sudo systemctl enable docker
-
验证Docker是否正确安装
sudo docker run hello-world
运行该命令后,您应该会看到一条消息,确认Docker已正确安装并正在运行
linux-lab安装
- 下载
git clone https://gitee.com/tinylab/cloud-lab.git
cd cloud-lab && tools/docker/choose linux-lab
- 安装
tools/docker/run # 加载镜像,拉起一个 Linux Lab 容器
- 快速尝鲜
执行 tools/docker/webvnc
后会打开一个 VNC 网页,根据 console 提示输入密码登陆即可,之后打开桌面的 Linux Lab
控制台并执行:
make boot
启动后,会打印如下登陆提示符,输入 root,无需密码直接按下 Enter 键即可,后续即可以在这个环境进行测试编译linux内核了。
意外事件流处理
- 安装完docker后,执行docker相关命令,报错
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: dial unix /var/run/docker.sock: connect: permission denied
大概的意思就是:docker进程使用Unix Socket而不是TCP端口。而默认情况下,Unix socket属于root用户,需要root权限才能访问。
解决方法1
使用sudo获取管理员权限,运行docker命令
解决方法2
docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
docker ps #测试docker命令是否可以使用sudo正常使用
参考资料
Linux 内核实验环境