Linux内核开发环境-安装Linux发行版

建议点击这里查看个人主页上的最新原文

点击这里在哔哩哔哩bilibili在线观看配套的教学视频

点击这里在哔哩哔哩bilibili在线观看配套的加餐视频(就是一些补充)

点击跳转到内核课程所有目录

下面介绍Linux内核编译环境和测试环境的搭建过程,当然我也为各位朋友准备好了已经安装好的虚拟机镜像,只需下载运行即可。

点击这里从百度网盘下载对应平台的虚拟机镜像x86_64(也就是你平时用来安装windows系统的电脑,或者2020年前的苹果电脑)选择ubuntu-x64_64.ziparm64(2020年末之后的苹果电脑)选择ubuntu-aarch64.zip。虚拟机运行后,登录界面的密码是1

安装Linux发行版,你可以选择以下几种方式:

  • 在物理机上直接安装安装Linux发行版。这是工作时比较推荐的一种安装方法,可以最大程度的利用硬件资源。
  • 在容器(如docker)中安装Linux发行版。这种方式也能最大程度的利用硬件资源,还能快速恢复开发环境。
  • 在虚拟机上安装Linux发行版。在学习阶段推荐这种方式安装,因为一旦系统出现什么问题可以快速恢复。

虚拟机软件

接下来介绍几个常用的虚拟机软件。Windows系统推荐使用VirtualBox,arm64苹果系统推荐使用UTM。如果你在看VMware虚拟机相关的视频,请转为查看这个视频

  • VirtualBox。首先在VirtualBox下载界面下载对应平台的安装包,比如如果要在Windows系统下安装VirtualBox,点击Windows hosts下载安装包。VirtualBox的安装过程很简单,只需根据安装提示操作即可。VirtualBox安装完成后,下载VirtualBox 7.0.14 Oracle VM VirtualBox Extension Pack安装插件。arm芯片的版本好像只有7.0.8版本才有。
  • VMware下载点击这篇文章,注册登录账号,下载时的信息填写类似Address 1: 1ONE, City: SACRAMENTO, Postal code: 94203-0001, Country/Territory: United States, State or province: California。安装过程很简单,只需根据提示操作即可。Linux下安装VMware时需要注意的是/tmp目录的挂载不能在/etc/fstab文件中指定noexec,还需要安装gcc较新的版本(如VMware-Workstation-Full-17.5.1-23298084.x86_64.bundle在ubuntu2204下安装时要安装gcc12,默认安装的是gcc11)。
  • Virtual Machine Manager。这个虚拟机软件只用在Linux平台上,如果你物理机上安装的操作系统是Linux,那么使用这个软件运行虚拟机就比较合适。比如在Ubuntu上使用命令sudo apt-get install qemu qemu-kvm virt-manager qemu-system -y安装(需要重启才能以非root用户启动)。
  • UTM。只针对苹果电脑系统,从github下载安装包。建议在配置比较高(尤其是内存)的苹果电脑上使用,如果配置比较低可能会遇到一些问题。从github上下载安装包。导入虚拟机时,选择"创建一个新虚拟机" -> “虚拟化” -> “其他” -> 打勾"Skip ISO boot",“Storage"选择小一点的容量(如1G),创建虚拟机后打开配置,“VirtIO驱动器” -> “删除”,然后再"新建” -> “导入”,可以选择vmdkqcow2等格式,会统一转换成qcow2格式,保存后生效。安装后的虚拟机文件在~/Library/Containers/com.utmapp.UTM/Data/Documents目录下,默认Finder中不显示这个目录,可以在家目录下打开Show View Options -> Show Library Folder。需要注意一下,网络如果选择共享网络会出现不稳定断网的情况,建议选择桥接(高级),选择桥接时如果宿主机的网络切换了(如连了另一个wifi)虚拟机中的网络也要断开重连一下。如果出现虚拟机网络经常断开的情况,可以尝试宿主机换一个稳定的网络。

配置虚拟机时,Windows系统cpu核数查看方法: 任务管理器->性能->CPU,苹果电脑cpu核数查看方法: sysctl hw.ncpusysctl -n machdep.cpu.core_count,Linux系统cpu核数查看方法lscpu

安装Ubuntu发行版

Linux发行版很多,我们选择一个使用人数相对较多的Ubuntu发行版x86_64的ubuntu22.04arm64的ubuntu22.04下载。x86_64的ubuntu20.04arm64的ubuntu20.04

安装内核编译和测试所需软件:

sudo apt install git -y # 代码管理工具
sudo apt install build-essential -y # 编译所需的常用软件,如gcc等
sudo apt-get install qemu qemu-kvm qemu-system -y # qemu虚拟机相关软件
sudo apt-get install virt-manager -y # docker中不需要安装,虚拟机图形界面,会安装iptables,可能需要重启才能以非root用户启动virt-manager,当然对于内核开发来说安装这个软件是为了生成自动生成virbr0网络接口
sudo apt install flex bison bc kmod pahole -y # 内核编译所需软件
sudo apt-get install libelf-dev libssl-dev libncurses-dev -y # 内核源码编译依赖的库
sudo apt install zstd -y

交叉编译所需软件:

sudo apt-get install u-boot-tools -y
sudo apt install gcc-9-aarch64-linux-gnu -y # 指定版本的交叉编译软件
mv /usr/bin/aarch64-linux-gnu-gcc /usr/bin/aarch64-linux-gnu-gcc.bak # 原来指向其他版本
ln -s /usr/bin/aarch64-linux-gnu-gcc-9 /usr/bin/aarch64-linux-gnu-gcc # 指向特定版本

docker环境

除了在vmware虚拟机中搭建开发环境,还可以在docker中搭建开发环境。注意qemu的权限配置请参考后面的“qemu配置”相关的章节。

NAT模式

参考中文翻译QEMU Documentation/Networking/NAT

qemu命令行的网络参数修改成(modelmacaddr可以自己指定):

-net tap \
-net nic,model=virtio,macaddr=00:11:22:33:44:01 \

注意在虚拟机中,不要手动配置ip,要运行systemctl restart networking.service自动获取ip地址。

桥接模式(TODO)

宿主机中桥接模式配置:

apt install bridge-utils -y # brctl命令
brctl addbr br0
brctl stp br0 on
brctl addif br0 eth0
# brctl delif br0 eth0
ip addr del dev eth0 172.17.0.2/16 # 清除ip
ifconfig br0 172.17.0.2/16 up # 或 ifconfig virbr0 172.17.0.2 netmask 172.17.0.1 up
route add default gw 172.17.0.1
sysctl net.ipv4.ip_forward=1 # 或 echo 1 > /proc/sys/net/ipv4/ip_forward

虚拟机中:

ip addr add 172.17.0.3/16 dev ens2
# ip addr del dev ens2 172.17.0.3/16 # 删除ip
ip link set dev ens2 up
# ip link set dev ens2 down
# 网关可不配置
# route del default dev ens2
# route add default gw 172.17.0.1 # ip route add default via 172.17.0.1 dev ens2

手动配置ip没法访问外网,暂时还不知道要怎么弄,如果有知道的朋友可以指导我一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值