> 文章列表 > Ubuntu18.04安装linux-lab

Ubuntu18.04安装linux-lab

Ubuntu18.04安装linux-lab

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 容器

Ubuntu18.04安装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 内核实验环境