编译准备
本文是在默认操作系统Ubuntu 20.04.3(内核版本5.4.0-81-generic)下进行编译内核源码编译。
在编译开始前,请正确配置服务器的网络环境、软件源、同步服务器系统时间,以便下载相关的编译依赖包。
- 编译时请使用root账号登录和操作。
- 禁用警告“your kernel does not support swap memory limit...”。
编辑“/etc/default/grub”文件,修改参数“GRUB_CMDLINE_LINUX”的值。
1 2
# vim /etc/default/grub GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
- 禁用SELinux。编辑“/etc/selinux/config”文件,若没有该文件就创建后再进行编辑,编辑参数“SELINUX”的值为“disabled”。
1 2
# vim /etc/selinux/config SELINUX=disabled
- 启动多路Kbox容器时,主机侧文件访问量大,需调整用户可创建的inotify instances的上限。在“/etc/sysctl.conf”文件中添加“fs.inotify.max_user_instances”参数的值。
1 2
# vim /etc/sysctl.conf fs.inotify.max_user_instances = 8192
- 更新引导项并重启系统,使上述配置生效。
1 2
# update-grub # reboot
- 安装基础依赖包。
1 2
# apt install dpkg dpkg-dev libncurses5-dev libssl-dev libpciaccess0 # apt install libdrm-amdgpu1 xserver-xorg-video-amdgpu lxc
如果安装过程中有获取包失败的情况,请根据提示中的网址,手动获取安装包进行安装,安装成功后,继续安装尚未安装的依赖包。
- 安装Docker组件。若用户已自定义安装Docker,可跳过此步骤。
参考软件环境中的下载链接,下载Docker静态安装包,以docker-19.03.15.tgz为例。
- 将下载后的安装包上传至服务器,以“/root”路径为例,并解压。
# cd ~ # tar xvpf docker-19.03.15.tgz
- 解压后,root路径下会多出一个“docker”文件夹,将“docker”文件夹中所有内容拷贝至“/usr/bin”文件夹下。
# cp -p docker/* /usr/bin
- 整段执行如下命令,配置docker.service文件。
cat >/usr/lib/systemd/system/docker.service <<EOF [Unit] Description=Docker Application Container Engine Documentation=http://docs.docker.com After=network.target docker.socket [Service] Type=notify EnvironmentFile=-/run/flannel/docker WorkingDirectory=/usr/local/bin ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock --selinux-enabled=false --log-opt max-size=1g ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target EOF
拷贝上述代码时请注意粘贴在终端的样式,参考样式如下图:
- 启动docker服务并设置开机启动docker服务。
# systemctl daemon-reload # systemctl restart docker # systemctl enable docker
每次重启服务器后,如果Docker未自启动成功,需要执行上述三条命令。
- 将下载后的安装包上传至服务器,以“/root”路径为例,并解压。
- 更新linux-firmware。若用户已升级过固件,可跳过此步骤。
参考软件环境中的下载链接,下载linux-firmware-20210919.tar.gz文件。
将下载后的安装包上传至服务器,以“/root”路径为例,并解压。# cd ~ # tar -xvpf linux-firmware-20210919.tar.gz
解压后,“root”路径下会多出一个“linux-firmware-20210919”文件夹,将firmware拷贝Linux标准固件目录下。# cp -ar linux-firmware-20210919/*gpu /usr/lib/firmware/
父主题: 编译内核及ko模块