Uos内核编译,升级,驱动模块安装

一.获取当前内核的软件版本

uname -a  获取内核版本信息

二.获取内核源码包
1.从网络下载
从 https://www.kernel.org/ 内核网站上查看内核源码,具体路径:
https://mirrors.edge.kernel.org/pub/linux/kernel/,找到对应的版本进行解压获取源码
2.从uos源上下载
修改源/etc/apt/sources.list,将 deb-src 的注释去掉,然后 sudo apt update
下载源码
搜索源上的源码:linux-source
xcl@xcl-PC:~$ sudo apt search linux-sour
下载源码:sudo apt source
xcl@xcl-PC:~$ apt download linux-source-4.19 这方式下载的属于 debian 的软件包文件有:
linux-source-4.19.dsc 文件包含了所发生的修改和签名
linux-source-4.19.tar.gz (tarball)包含了源代码
linux-source-4.19 合并后的源码
三.编译内核
1.安装相关的编译工具链
比如执行 make menuconfig 提示需要安装库 libncurses5-dev 执行 sudo apt install -f
libncurses5-dev 执行 make 提示 libssl-dev ... 根据提示安装必要的工具
2.编译选项
打补丁,此过程为可选项,补丁是为了升级内核,和修改内核
#patch -p xxx.patch
编译选项 make menuconfig 选取合适的模块
或者拷贝系统原有的 config 放入编译目录
cp /boot/config-4.19.0-xxx .config
3.编译过程
进入内核目录执行 #make
如果是 debian 的软件包,可以借助 debian,直接编译成 deb 。# dpkg-buildpackage
-uc -us (我们主要讲解前面的 make 方法生成文件。dpkg 直接编译成 deb 后面暂不作介
绍) 四.安装内核和模块
正常编译完成后会生成内核文件 vmlinuxz-xxx 几个跟当前编译的版本一样的文件
#make install 安装模块,这部完成后,/lib/modules/目录下会生成一个以版本号命
名的一个文件模块
#make modules_install
五.启动引导项修改
Grub 启动主要从两个文件夹进行修改: /etc/default/grub 和/etc/grub.d
1、/etc/default/grub 文件
DEEPIN_GFXMODE_DETECT=1
#手动添加内核启动参数
GRUB_CMDLINE_LINUX=""
#添加内核启动参数,这个为默认
GRUB_CMDLINE_LINUX_DEFAULT="splash quiet "
#默认启动项,这个值为 0 就是默认启动第一个,为 1 默认启动第二个
GRUB_DEFAULT=0
#获得发行版本(此行将追加到所有的 linux 定义内核行的后面,不论是救援模式还是一般
模式)
GRUB_DISTRIBUTOR="`/usr/bin/lsb_release -d -s 2>/dev/null || echo Deepin`" #启动的分辨率
GRUB_GFXMODE=2560x1600,1920x1440,1856x1392,1792x1344,1920x1200,1600x1200,
1680x1050,1400x1050,1280x1024,1440x900,1280x960,1360x768,1280x800,1152x864,1
280x768,1024x768,auto
#启动的主题,是各种图片和各种显示的字体
GRUB_THEME=/boot/grub/themes/deepin-fallback/theme.txt
#等待时间,5 秒未操作直接进入默认系统。改为-1 是一直等待。
GRUB_TIMEOUT=5
2、/etc/grub.d
00_header
# 配置初始的显示项目,如默认选项,时间限制等,一般由
/etc/default/grub 导入,一般不需要配置
05_debian_theme
# 配置引导画面,文字颜色等主题
10_linux
#定位当前操作系统使用中的 root 设备内核的位置,包含
deepin 启动项和 advanced 里面的启动项
15_linux_bar
# 救援模式的启动项
20_linux_xen
# 虚拟机监视器的东西,(暂时不知有什么用
30_uefi-firmware
# “system setup” 的启动项
35_os-prober
# windows 的启动项一般在这个里面
40_custom
# 用来加入用户自定义的启动项,将会在执行 update-grub 时更
新至 grub.cfg 中
41_custom
# 判断 custom.cfg 此配置文件是否存在,如果存在就加载它 前面的数字是对文件排列执行的顺序进行排序,可进行更改,比如你想把 windows 启动项
调到第一个,就把 35_os-prober 前面那个数字改成 5 到 10 的数字,比如 06、07、08、09.
存在多个系统启动项时选择启动选项
按照上述方案创建的多个系统启动项会放置到启动界面的 Advanced options 选项中,启动
时需要手动选择启动项。在实际应用中需要设定某一版本的系统自动启动,此时需要更改启
动选项,更改步骤如下:
①、将需要自动启动的内核启动项从/boot/grub/grub.cfg 文件的 submenu 中找到。
②、将其复制到/etc/grub.d/40_custom 文件,修改之后文件内容如下所示。
③、修改/etc/default/grub 文件的 default 值为 2,执行 update-grub 命令。
六.驱动模块安装
我们针对特定的设备,需要修改默认内核下的部分模块,这里以 usb serial 模块为例:如果
添加 usbserial vendor=0x1ab7 product=0x6000 到 usbserial 模块
1. 修改 linux-4.19.xx/drivers/usb/serial/generic.c 文件 加入我们自己设备的 vendor 和
product 2. 编译模块,回到内核的根目录,首先要按照原先的 config 配置编译内核,主要是为了得
到 Module.symvers 文件(以及 modpost 等。如果直接编译模块,就算编译成功,也可能
无法加载):
# make menuconfig
#make
这里,如何配置内核将不详细说明,主要是要保证配置要加入"device drivers"->"usb
support"->"usb serial convertor support"中的对应项。
{注:如果之前已经编译过内核,可以直接编译模块。使用如下方式编译:}
# make -C $KERNEL_SOURCE_DIR M=drivers/usb/serial modules
编译完成后,即可在对应目录下得到新的 usbserial.ko 驱动程序。
3.更新或者安装新编译的驱动
sudo rmmod usbserial
卸载
sudo insmod
usbserial.ko 安装驱动
Sudo modprobe usbserial.ko 将有依赖关系的驱动全部加载到内核
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值