从零到一:Ubuntu 20.04内核编译的避坑指南与实战经验

ubuntu20.04下内核源码下载分析 ubuntu 20.04下内核源代码下载,配置编译环境写在前面一、安装VMware Workstation和Ubuntu20.04二、修改apt源合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 写在前面 我最近的科研工作需要使用到对ubun 阅读详情

从零到一:Ubuntu 20.04内核编译的避坑指南与实战经验

第一次尝试在Ubuntu 20.04上编译Linux内核时,我遇到了无数个坑——依赖缺失、配置错误、签名问题接踵而至。经过72小时的反复尝试和5次系统重装后,终于找到了稳定可靠的编译路径。本文将分享这些用时间换来的经验,帮助开发者避开90%的常见陷阱。

1. 环境准备:构建稳固的基础

编译内核就像建造高楼,地基不稳后续工作全是徒劳。Ubuntu 20.04默认使用5.4内核,但我们需要从源码构建自己的版本。以下是经过验证的准备工作:

硬件要求:

  • 至少4核CPU(编译速度与核心数成正比)
  • 15GB可用磁盘空间(源码+临时文件)
  • 4GB以上内存(避免OOM killer中断编译)

依赖安装(关键步骤):

sudo apt update && sudo apt install -y \
    libncurses5-dev flex bison libssl-dev \
    dwarves elfutils libelf-dev bc rsync \
    git build-essential dpkg-dev

注意:dwarves是新版内核必需的包,缺少它会导致BTF生成失败

源码获取的两种可靠方式:

  1. 官方仓库(推荐稳定版本):

    wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.0.tar.xz
    tar -xvf linux-5.4.0.tar.xz
    
  2. Ubuntu官方源(含补丁):

    sudo apt install linux-source-5.4.0
    tar -xvf /usr/src/linux-source-5.4.0.tar.xz
    

环境检查清单:

  • 确认gcc版本:gcc --version(需≥7.5.0)
  • 检查磁盘空间:df -h /
  • 验证依赖完整性:dpkg -l libncurses5-dev flex bison

2. 配置艺术:平衡功能与稳定性

内核配置是编译过程中最易出错的环节。新手常犯的错误是直接使用make defconfig生成默认配置,这会导致缺少必要驱动或包含冗余功能。

推荐配置策略:

方法优点缺点适用场景
复用现有配置稳定性高功能受限生产环境
make menuconfig灵活可控复杂度高开发环境
本地mod配置驱动完整可能冗余硬件兼容

最佳实践:

# 复制当前系统配置(黄金标准)
cp /boot/config-$(uname -r) .config

# 更新配置以适应新源码
make olddefconfig

# 关键配置调整(避免后续报错)
./scripts/config --disable CONFIG_MODULE_SIG
./scripts/config --disable CONFIG_DEBUG_INFO_BTF

常见配置陷阱:

  1. 签名验证:必须禁用CONFIG_MODULE_SIG,否则需要密钥
  2. BTF调试:新版需要dwarves工具链
  3. 地址随机化:开发时建议禁用CONFIG_RANDOMIZE_BASE

经验分享:在AWS c5.large实例上,启用所有调试选项会使编译时间从45分钟延长至3小时,且生成的内核镜像增大300%。

3. 编译实战:效率与可靠性的平衡

编译阶段看似简单,但隐藏着诸多性能优化点和潜在问题。以下是经过数十次测试得出的优化方案:

编译命令对比:

命令线程数内存占用适用场景
make -j$(nproc)全部核心高独立服务器
make -j$((nproc/2))半核中共享环境
make -j2双核低虚拟机环境

关键技巧:

# 使用nohup防止SSH断开
nohup make -j$(nproc) bindeb-pkg LOCALVERSION=-custom &

# 实时监控编译状态
tail -f nohup.out | grep -E 'error|warning'

# 内存不足时的解决方案
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

典型错误处理:

  1. BTF生成失败:

    BTF: .tmp_vmlinux.btf: pahole (dwarves) is not available
    

    解决方案:安装dwarves或禁用CONFIG_DEBUG_INFO_BTF

  2. 签名错误:

    No rule to make target 'debian/certs/benh@debian.org.cert.pem'
    

    解决方案:彻底禁用模块签名

  3. 头文件缺失:

    fatal error: gnu/stubs-32.h: No such file or directory
    

    解决方案:sudo apt install gcc-multilib

4. 安装与验证:确保系统稳定性

编译成功只是第一步,正确安装和配置引导加载程序才是真正的挑战。我曾因GRUB配置错误导致系统无法启动,最终只能通过LiveCD修复。

安全安装流程:

# 安装内核包
sudo dpkg -i ../linux-image-5.4.0-custom_5.4.0-custom-1_amd64.deb

# 关键GRUB配置(避免启动失败)
sudo sed -i 's/GRUB_TIMEOUT_STYLE=hidden/#GRUB_TIMEOUT_STYLE=hidden/' /etc/default/grub
sudo sed -i 's/GRUB_TIMEOUT=0/GRUB_TIMEOUT=10/' /etc/default/grub

# 更新引导(不同环境命令不同)
# 传统BIOS:
sudo update-grub
# UEFI系统:
sudo update-grub2

验证步骤:

  1. 重启后检查内核版本:

    uname -r
    

    应显示"5.4.0-custom"

  2. 模块加载测试:

    sudo modprobe tun
    lsmod | grep tun
    
  3. 系统稳定性监测:

    dmesg | grep -i error
    journalctl -p 3 -xb
    

回滚方案:

  1. 启动时在GRUB菜单中选择旧内核
  2. 彻底移除问题内核:
    sudo apt purge linux-image-5.4.0-custom
    sudo update-grub
    

在最近一次为Kubernetes节点编译内核的实践中,这套流程成功将网络性能提升了15%,同时保持了100%的API兼容性。记住,内核编译不是目的,而是实现特定需求的工具——在开始前务必明确你的目标,是优化性能、添加驱动还是学习原理。

ubuntu18.04内核升级(使用编译的方法达到内核6.1.62) 自己的电脑是22年买的thinkbook16+,乘着今年双11给它加了一个外接显卡,在windows上能成功识别并使用,但是在ubuntu18.04上因为无法识别出雷电接口,所以无法使用。后来换成20.04的版本竟然又可以,比较两者的区别后,初步推测是内核版本稍低,遂尝试升级内核,已验证自己的猜测。 阅读详情

相关推荐

Ubuntu 20.04 server 安装和编译Linux内核

Ubuntu 20.04 server 编译Linux内核 虚拟机软件:VirtualBox 远程shell工具:Xshell 6(Free for School) 一、新建虚拟机的时候虚拟硬盘大小我给了65G 二、然后开始安装Ubuntu 20.04 server** 选择语言,回车 done 根据你的网络情况,如果是网线插好,有DHCP,系统就会自动默认为DHCP,并把已经获取到的IP显示到对应的网卡上。使用DHCP就直接光标选择done,回车。 设置代理服务器,一般不需要,默

weixin_42834266的博客 3885

Ubuntu20.04编译Linux内核

Ubuntu20.04编译Linxu内核教程

qq_43509129的博客 6688

Ubuntu 20.04下libfranka实时内核编译避坑指南

本文详细解析了在Ubuntu 20.04系统上为Franka机械臂编译安装实时内核的必要性与关键步骤。针对libfranka库的强制要求,文章重点揭示了内核版本选择的常见误区,指出应优先采用经过验证的Linux 5.9.1实时内核而非盲目追求最新版本。指南提供了从下载源码、打补丁、配置编译到修改GRUB默认启动项的完整避坑流程,确保用户能成功搭建稳定的实时控制环境,为后续libfranka的顺利安装奠定基础。

weixin_29261711的博客 562

Ubuntu20编译Aosp内核

解决AOSP内核源码没有build/build.sh文件问题;Pixel3 XL的AOSP内核编译;Ubuntu20系统AOSP内核编译

StepTp的博客 1654

Ubuntu20.04内核源码获取与编译环境搭建实战

本文详细介绍了在Ubuntu 20.04系统上获取Linux内核源码并搭建完整编译环境的实战步骤。内容涵盖系统准备、软件源配置、多种内核源码获取方法(包括APT、官方仓库和Git),以及依赖安装、配置、编译、安装与调试的全流程,旨在帮助开发者建立可修改和测试的内核实验室,深入理解操作系统机制。

postgres8guard的博客 882

Linux | UBuntu22.04编译内核

Linux | UBuntu22.04编译内核

RobKing的博客 4393

Ubuntu20.04下Xenomai3.2.1安装避坑指南:从内核编译到实时性测试全流程

本文详细介绍了在Ubuntu20.04系统上安装Xenomai3.2.1实时框架的全流程避坑指南。重点解析了如何为Linux5.10.76内核正确应用Dovetail补丁,完成内核编译、配置优化、用户空间库安装,并进行实时性测试与性能验证,旨在帮助开发者构建稳定可靠的硬实时Linux系统。

postgres8guard的博客 823

从零到一:Intel SGX在Ubuntu20.04上的避坑实战与深度解析

本文详细解析了在Ubuntu20.04上部署Intel SGX的完整流程,涵盖硬件兼容性检查、驱动安装、离线环境部署及验证调试等关键步骤。通过实战经验分享和避坑指南,帮助开发者高效完成SGX环境搭建,特别针对SDK安装和内核兼容性问题提供了专业解决方案。

weixin_29216049的博客 868

如何在20.04Ubuntu编译并安装Linux 5.4.34内核

在22.04Ubuntu安装5.4.34版本Linux内核

always_on_way的博客 1451

ARM开发板实战:Ubuntu 20.04 LTS系统从零构建全流程(附避坑指南)

本文详细介绍了在ARM开发板上从零构建Ubuntu 20.04 LTS系统的全流程,包括环境准备、根文件系统构建、内核适配及系统优化等关键步骤。特别针对Raspberry Pi、NVIDIA Jetson等热门开发板的常见问题提供了避坑指南,帮助开发者高效完成ARM平台的系统构建与配置。

k0l1m2n3o的博客 876

WinForm布局

登录模板页面UILoginForm

m0_71541781的博客 470

RK35XX开发板环境搭建避坑指南:从虚拟机配置到内核编译全流程

本文详细介绍了RK35XX开发板环境搭建的全流程,包括虚拟机配置、交叉编译工具链选择、内核源码获取与编译等关键步骤。针对嵌入式开发中的常见问题提供了实用解决方案,帮助开发者快速构建稳定高效的开发环境,特别适合RK35XX系列开发板的初学者和进阶用户。

purple的博客 1707

从SPI协议到文件系统:手把手教你用HAL库给W25Q16移植FATFS(附扇区管理优化方案)

本文详细介绍了如何在STM32平台上,通过HAL库的SPI接口为W25Q16 Flash芯片移植FATFS文件系统。文章从SPI通信基础讲起,深入解析了FATFS底层驱动(diskio.c)的移植要点,并重点探讨了针对W25Q16的4KB物理扇区特性进行扇区管理优化的两种方案,旨在帮助开发者构建稳定高效的文件存储方案。

happy2的博客 1043

Linux实验 | Ubuntu20.04编译内核并添加一个系统调用

Ubuntu 20.04 LTS VMware Workstation Pro 16 Linux

Hello 6663

Android客户端如何设计架构

当我们在新开发一款APP时,我们在初期要如何设计架构呢?在这里我根据我的经验,总结了一些基本的架构思路。 客户端架构设计的时候,首先需要充分考虑到所开发的app的类型,这里我分为功能型和服务型两大类,功能型的app侧重业务和功能,服务型的app侧重服务和运算。下面我就具体来讲讲针对这两种类型的通用架构。 功能型app 功能型app的activity比较多,整个app都以一个个activity承载业务和功能,在设计这类app时,我们需要考虑哪些要素呢? 由于activity比较多,我们需要考虑页面的跳转路由,

子者不语的专栏 1544

张量/数组存储方式与向量化展开/展平、view、reshape、permute对比

对于一个Tensor来说,我们可以认为它有两种存储方式。

欢迎关注,共同进步! 3434

Linux内核开发——编译Ubuntu 20.04内核代码

可以使用下列可以直接下载一个比当前内核版本新的代码,也可以去https://mirrors.edge.kernel.org/pub/linux/kernel下载自己内核使用的版本。此文下载的是更新的版本 5.17.15,去官网https://www.kernel.org/,下载linux-5.17.12.tar.xz。不同版本的Ubuntu,需要对应不同版本的源。可以通过。https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/上可以选择不同版本的Ubuntu对应的源

飞鹤的程序员人生 1万+

AI Agent在智能投研中的实战:多智能体信息整合与策略生成

那么,什么是AI Agent?简单来说,AI Agent是一种能够感知环境、做出决策并采取行动的自主系统。自主性:能够在没有人类直接干预的情况下运行,对自己的行为和内部状态有一定的控制权。反应性:能够感知环境的变化,并及时做出反应。主动性:不仅能够对环境变化做出反应,还能够主动地设定目标并采取行动实现这些目标。社会性:能够与其他Agent(包括人类和人工智能)进行交互、协作和竞争。它们可以全天候不间断地监控和处理海量信息,大大提升信息处理能力;

AI大模型应用之禅 188

避坑指南:WSL2内核与模块版本不一致的终极解决方案(Ubuntu 20.04实测)

本文针对WSL2中常见的`/lib/modules`目录与`uname -r`显示的内核版本不一致问题,提供了从诊断到根治的完整解决方案。通过编译安装与当前运行内核完全匹配的模块,一劳永逸地解决因版本错配导致的驱动编译和内核开发错误,适用于Ubuntu 20.04等WSL2环境。

lg888的博客 652

【论文分享】【Agent】ProAgent: Building Proactive Cooperative Agents with Large Language Models

多智能体系统是由多个智能体组成的集合,这些智能体可以是软件程序、机器人、传感器或其他实体,它们各自具备一定的智能和自主性,并通过交互协作来实现单个智能体难以完成的复杂目标。

nanxun___的博客 1122

Open3D 计算点云的倒角距离(Chamfer Distance)【2025最新版】

;Chamfer Distance距离可以计算生成点云数据与标签点云数据之间的平均最短点距离。Open3D可以直接用来计算点云的Chamfer Distance距离。博客长期更新,本文最近一次更新时间为:2025年2月18日。

点云侠的博客 3254

Ubuntu 20.04 内核编译

Ubuntu 20.04内核编译

u012625323的博客 2117

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ubuntu16.04重新编译linux内核

首先的首先,如果用的是虚拟机,那硬盘至少要分个40G, 硬盘太小的后果,你可以试试。。。 一、下载内核 首先到kernel官网获取linux源代码包。 我用的ubuntu版本是16.04 因此下载的包可以采用4.x 如果从官网下载速度过慢(我这下载需要两个多小时,还经常掉线),可以找找国内的镜像站。 以下是北京大学镜像站的资源,可以选择4.20进行下载 Index of /kernel/linu...

soviet1941的博客 5008

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Ubuntu20.04 实时内核配置教程

进行franka机器人控制时配置实时内核流程

weixin_43649128的博客 4767

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Ubuntu20.04安装实时内核补丁及配置实时内核显卡驱动

注意:需要在实时内核的恢复项启动(Ubuntu,with Linux 5.15.119-rt65(recovery mode)),实时内核的一般项通常由于没有安装驱动进不去界面而卡死在电脑自检程序。上小节的驱动版本为515.105.01,所以需要下载相应的.run文件NVIDIA-Linux-x86_64-515.105.01.run,大家可以查看各自对应的驱动版本,下载的地址为。重启后进入实时内核的一般项,到此实时内核的显卡驱动安装完成;中,并按照提示修改变量“NV_FILE”,完成后保存即可。

lalahang的博客 3869
上一篇: Swagger元数据的二次生命:用Python打造智能API知识图谱
下一篇: 从网格艺术到工程实践:LS-DYNA单元公式选择的隐藏逻辑与设计哲学
生活碎片
博客等级 码龄2年 51粉丝 1780原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值