首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 内核编译(三天吐血经历!)

大家好,又见面了,我是你们的朋友全栈君。 写在前面的话: 本人大二,东南大学一个软工狗,正在修一门名为《操作系统原理》的坑爹课!前几天做一个实验:编译Linux内核并向其增加一个系统调用。...,在终端输入密码时,是不显示星号的。...四、编译内核 ps:深吸一口气,前面做的只是准备工作!下面才是真正的开始!打好精神,真正的挑战在下面! 下面的记得一定要一步一步都要做!不要漏掉一步!!!!...先检验一下我们的结果: 首先查看一下编译好的内核版本,以便命名 打开 /lib/modules 里面应该多了一个 纯数字不带“generic”的文件夹,那就是新内核版本号,我们的是2.62.32.71...全部完成如图所示: 红框是改过之后的,篮框里面的是你需要复制的内容 可以看到 ,两者在同一个###BEGIN /etc/**** 里面 黄色下划线部分 (图丑见谅) 八、收尾工作

3.2K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    IDEA中使用eclipse快捷键「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 1.修改使用Eclipse风格的快捷键 目的是习惯了使用eclipse的快捷键,在使用IDEA时不想重头记一套新的快捷键。...Shortcut 添加 Remove xxx 删除 至此有了强大的Alt + / 再配合 万能的Alt + Enter 就能解决大部分开发时想要的了。...M 重构之修抽取方法 Ctrl + shift + X 大小写切换 Ctrl + F 当前文档查找 Ctrl + H 超级查找 Ctrl + T 查看实现类 Ctrl + o 查看当前类的成员属性 Ctrl...+ shift + E 最近修改过的文件 Ctrl + D 比较文件内容(注意: 是选中了两个文本文件的情况下是比较文件,如果是文本编辑区域就是删除行) Ctrl + F9 编译所有文件 Ctrl +...shift + F9 编译有改动的文件 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/146612.html原文链接:https://javaforall.cn

    1.3K20

    扎心的程序员,你不会修电脑一定懂操作系统吧!

    拿修电脑这件事来说吧,这类高情商分子就是明明知道找你修电脑不合适,但是呢反正找你试试也不费自己什么事儿,说不定还能省一笔去修电脑的开销。...除了修电脑这个梗,让程序员扎心了。还有另外一个人程序员扎心的! 你会 Linux 操作系统吗?公司的妹子一脸清纯的望着你! 会一点!但现实是,后端妹子,运维妹子来请你时,你埋头工作半天,搞不定。...还记得当初刚找工作时,面试官问了我很多操作系统方面的知识:你了解操作系统原理吗?Linux 环境会部署吗?底层是怎么实现的?都会哪些 Linux命令?一系列问题把我问得一脸懵逼。...2.研究操作系统内核代码,你能学到数据结构与设计模式的落地实践。在Linux内核里,你会看到数据结构和算法的经典使用案例。你甚至还会看到系统对并发情况保护这种复杂场景。...可是很多人在学习过程中很容易迷路,主要有下面两个原因: 1.操作系统涉及方方面面的知识,包括数据结构与算法、计算机组成原理、网络协议、编译原理等等CS专业的硬核知识,可以说是最复杂的软件系统; 2.理解操作系统更需要理论与实践深度结合

    71960

    使用ABS编译ArchLinux内核

    前言 Arch Linux 2020年12月更新Kernel到5.10版本以后,我的AR5B22网卡的蓝牙无法正常工作,于是我尝试降级内核到5.9以后蓝牙又可以正常工作了,于是可以判定问题是存在于内核上...为了解决这个问题我重新编译了内核。这篇文章将记录如何使用ABS(Arch Build System)编译ArchLinux的内核(Kernel)。蓝牙问题将在记录在下一篇文章。...mkdir ~/kernelbuild && cd ~/kernelbuild 安装编译内核需要的包 sudo pacman -S asp base-devel 获取内核代码(一般获取到的是ArchLinux...完成后记得复制.config文件替换和PKGBUILD同级目录下的config文件。 make nconfig 若修改过config文件,需要重新生成校验和。...# 加上参数i,在内核编译完成后会执行安装操作 # 当然你也可以使用pacman -U 来安装 # 如果你不想要清除构建过程中的文件,包括源代码,请去除c参数 makepkg -sci

    2K20

    解决git不小心提交大文件导致无法提交问题

    index-filter 'git rm --cached --ignore-unmatch system_status/test_26457' 大概原理是,删除大文件,重新生成commit,但运行后又出现问题...之后找到一种较为暴力的解决方法: git stash 在网上找到关于这段命令(git 储藏)的使用场景: 发现有一个类是多余的,想删掉它又担心以后需要查看它的代码,想保存它但又不想增加一个脏的提交。...其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用git stash就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的...,所以你可以放心的修Bug,等到修完Bug,提交到服务器上后,再使用git stash apply将以前一半的工作应用回来。...解决这个问题的办法就是git stash命令。储藏(stash)可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。

    3.1K30

    (2024) webpack实战技巧:watch实现热打包和添加代码备注

    在前面的学习中,我们一直使用webpack-dev-server充当(本地)服务器和完成打包任务,但是当出项目团队联合开发,共同使用一个服务器时,这时候我们需要实时进行打包以确保团队间能进行联调或者进行相关代码的合并工作时...1.4 保存(ctrl+S)  保存后我们会发现,终端底部信息为:(修该过的文件信息) ?  此时我的打包的文件中就会自动新增该部分内容。 ?...配置后使用 watchOptions:{ //检测修改的时间,以毫秒为单位 poll:1000, //防止重复保存(ctrl+S)而发生重复编译错误。...1000:以1000毫秒检测一次,判断是否修改过代码。...3.添加代码备注  在工作中每个人写的代码都要写上备注,用于区分某部分代码的编写人。 这个插件就是BannerPlugin,会自动给我们添加我们指定的相关注释。

    71230

    Linux From Scratch(LFS11.0)构建 LFS 系统 - 清理系统

    从现在起,在退出并重新进入 chroot 环境时,要使用下面的修改过的 chroot 命令: logout chroot "$LFS" /usr/bin/env -i \ HOME...如果解除了虚拟内核文件系统的挂载,必须通过手动或重启系统的方式重新挂载它们,保证在进入 chroot 时它们已经挂载好。...正如我们已经讨论过的,它们在链接到共享库,特别是使用 autotools 以外的构建系统时,是不必要,甚至有害的。...执行以下命令删除它们: find /usr/lib /usr/libexec -name \*.la -delete 上文中构建的编译器仍然有一部分安装在系统上,它现在已经没有存在的意义了。...userdel -r tester ---- 本次分享到此结束啦~ 如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。

    71120

    将hello程序作为驱动程序编译进系统内核

    0x00开始 恩,可能是我比较愚钝,一个内核编译搞了一天,各种问题,各种bug,几度无奈,也是因为我突发奇想,并没有按照原来的那种操作,我直接把helloworld程序放到内核模块中编译成了一个驱动程序...好了,废话不多说,直接开始还原我的helloworld驱动内核程序编译流程。...0x01下载内核并解压 编译内核,首先要做的就是有一个内核能够供你编译,我选择的操作系统是Ubuntu14.04,低版本的系统的编译难度要小很多,所以当然要选个简单的了。...其次,修改/drivers目录下的Makefile文件,添加: obj-$(CONFIG_HELLOWORLD) += helloworld/ 这行编译指令告诉模块构建系统在编译模块时需要进入...grub就是管理Ubuntu系统启动的一个程序,我们编译好的内核要运行就要修改对应的grub,其实很简单。

    1.5K30

    架构师速成——如何高效编程 for java

    打仗要修身、修技、修器才能左冲右突,如入无人之境,同样做it也要修身、修技、修器,才能高效编程,如入无人之境。 高效编程的修炼 何谓修身、修技、修器?...修身,古今都是修炼自己的体魄和思维,使自己体魄强健,思维敏捷 修技,古代修炼自己的武艺和兵法,如今修炼自己的设计方法、模式及设计技能 修器,子龙左手青釭剑,右手亮银枪,跨下白龙马,一身白盔白甲,帅到爆炸...待修到山花烂漫时,需求丛中过,片叶不粘身。 修身 修身是一个很大的话题,要讲个几天几夜了,所以我们就先略过。...开发工具,eclipse 快捷键,统一的格式,重构功能 ,findbug,checkstyle 自动化编译发布,使用hudson进行定时自动化打包发布 其他工具,xmind 快捷键 时间管理,番茄工作法...这样后期修改代码或者进行集成测试时,才会比较顺畅。 进行findbug,checkstyle自动检查,系统自动化发布,如果出现问题邮件通知。 自测,自己实现功能后,先按照需求自测一般,保证正确性。

    38310

    架构师速成——如何高效编程 for java

    打仗要修身、修技、修器才能左冲右突,如入无人之境,同样做it也要修身、修技、修器,才能高效编程,如入无人之境。 高效编程的修炼 何谓修身、修技、修器?...修身,古今都是修炼自己的体魄和思维,使自己体魄强健,思维敏捷 修技,古代修炼自己的武艺和兵法,如今修炼自己的设计方法、模式及设计技能 修器,子龙左手青釭剑,右手亮银枪,跨下白龙马,一身白盔白甲,帅到爆炸...待修到山花烂漫时,需求丛中过,片叶不粘身。 修身 修身是一个很大的话题,要讲个几天几夜了,所以我们就先略过。...开发工具,eclipse 快捷键,统一的格式,重构功能 ,findbug,checkstyle 自动化编译发布,使用hudson进行定时自动化打包发布 其他工具,xmind 快捷键 时间管理,番茄工作法...这样后期修改代码或者进行集成测试时,才会比较顺畅。 进行findbug,checkstyle自动检查,系统自动化发布,如果出现问题邮件通知。 自测,自己实现功能后,先按照需求自测一般,保证正确性。

    93200

    Centos和Redhat的区别和联系

    AS这些Update版本所包含的主要程序包版本都有一定差别,最好不要混用,否则很容易出现问题。...所有的Linux都是采用的GPL许可,GPL许可允许GPL软件卖钱,但必须公布源码,所以每个Linux发行版的代码都是全公开的,只是,使用这些代码的人必须也公开修改过的代码。  3....由于Redhat的源代码是公开的,所以CentOS项目的人拿来自己再编译,同样的代码,同样的编译器,编译出来的自然是同样的东西。...你应该记得,前些天,我还自己手动编译了一套系统。  FreeBSD是从4.4BSD演变过来的Unix-Like操作系统,并不是也使用Linux内核。  ...FreeBSD使用的软件许可证是BSDL,BSDL的特点是:你可以免费使用我的代码,基于我的代码修改后的代码你不必公开,使用我的代码出了问题你不要告我(原:don’t pay me, don’t sue

    7.5K20

    Postgresql源码(55)IndexOnlyScan读取vm信息跳过扫描堆表,为什么读取vm可以不加锁?(race condition第二篇)

    但是访问vm页面时没有加锁,如果出现race condition有人在并发修改vm会不会出现问题?...如果VM_ALL_VISIBLE为真,说明页面内没有修改过的元组,不会出现dead tuple,可以直接使用索引数据(这才是真的index only scan) 如果VM_ALL_VISIBLE为假,说明页面内修改过元组...) 上述逻辑都比较好理解,但是问题来了,VM_ALL_VISIBLE访问VM页面时没有加锁(参考《Postgresql源码(54)visibilitymap基础功能分析》) 如果上述逻辑正在判断时,被别人修改了会不会出现问题...这样在IndexOnlyNext通过这条元组,走VM_ALL_VISIBLE判断时,会有几种情况: 情况一:当前读拿的快照不包含这个delete,那么这次删除就是对我不可见的,所以这条数据对我来说还没没删...这种情况下VM_ALL_VISIBLE返回false也是Ok的,我继续去读堆页面一定可以拿到正确的结果。

    38810

    Postgresql源码(55)IndexOnlyScan读取vm信息跳过扫描堆表,为什么读取vm可以不加锁?

    但是访问vm页面时没有加锁,如果出现race condition有人在并发修改vm会不会出现问题?...如果VM_ALL_VISIBLE为真,说明页面内没有修改过的元组,不会出现dead tuple,可以直接使用索引数据(这才是真的index only scan) 如果VM_ALL_VISIBLE为假,说明页面内修改过元组...) 上述逻辑都比较好理解,但是问题来了,VM_ALL_VISIBLE访问VM页面时没有加锁(参考《Postgresql源码(54)visibilitymap基础功能分析》) 如果上述逻辑正在判断时,被别人修改了会不会出现问题...这样在IndexOnlyNext通过这条元组,走VM_ALL_VISIBLE判断时,会有几种情况: 情况一:当前读拿的快照不包含这个delete,那么这次删除就是对我不可见的,所以这条数据对我来说还没没删...这种情况下VM_ALL_VISIBLE返回false也是Ok的,我继续去读堆页面一定可以拿到正确的结果。

    42320

    初次见面,你好,Linux!

    Linux由来 其实,Linux最早的前身是UNIX,UNIX又是怎么来的呢,我摘选了维基百科的一段关于UNIX的介绍: UNIX操作系统,是由美国AT&T公司贝尔实验室于1969年完成的操作系统。...1983年,理查德·马修·斯托曼创立GNU计划。这个计划有一个目标,是为了发展一个完全自由的类Unix操作系统。...自1984年发起这个计划以来,在1985年,理查德·马修·斯托曼发起自由软件基金会并且在1989年撰写GPL。...1990年代早期,GNU开始大量地产生或收集各种系统所必备的组件,像是——库、编译器、调试工具、文本编辑器,以及一个Unix的用户界面(Unix shell)——但是像一些底层环境,如硬件驱动、守护进程...最后的话: Linux对于想要学计算机专业的人来说是必学的,而且还得非常熟练。而要学好Linux用命令行是最基本的操作,大家平时在windows上操作时也可以多试试调用命令行。

    47420

    代码中被植入了恶意删除操作,太狠了!

    事情是这样的,一老板接手了一套系统,可能因为双方在交接时出现了什么不愉快的事情,对方不提供源代码,只是把生产环境的服务器打了一个镜像给到对方。...在文件的修改时间上还真找到了一些问题,发现在打镜像的两个小时前,项目中一个多个项目底层依赖的jar包被修改过,另外还有两个class文件被修改过。于是,就对它们进行了重点排查。...首先反编译了那两个被修改过的class文件,在代码中找到了可疑的地方。在两个被修改的类中都有上述代码。最开始没太留意这段代码,但直觉告诉我不太对,一个查询业务里面怎么可能出现删除操作呢?...找到了问题的根源,解决起来就不是啥事了,由于没有源代码,稍微费劲的是只能把原项目整个反编译出来,然后将改修改地方进行了修改。...又起波折本以为到此问题已经解决完毕了,没想到第二天又出现问题了,项目又跑不起来了。经过多方排查和定位,感觉还有定时任务再进行暗箱操作。

    26430

    代码中被植入了恶意删除操作,太狠了!

    事情是这样的,一老板接手了一套系统,可能因为双方在交接时出现了什么不愉快的事情,对方不提供源代码,只是把生产环境的服务器打了一个镜像给到对方。...在文件的修改时间上还真找到了一些问题,发现在打镜像的两个小时前,项目中一个多个项目底层依赖的jar包被修改过,另外还有两个class文件被修改过。于是,就对它们进行了重点排查。...首先反编译了那两个被修改过的class文件,在代码中找到了可疑的地方。在两个被修改的类中都有上述代码。最开始没太留意这段代码,但直觉告诉我不太对,一个查询业务里面怎么可能出现删除操作呢?...找到了问题的根源,解决起来就不是啥事了,由于没有源代码,稍微费劲的是只能把原项目整个反编译出来,然后将改修改地方进行了修改。...又起波折本以为到此问题已经解决完毕了,没想到第二天又出现问题了,项目又跑不起来了。经过多方排查和定位,感觉还有定时任务再进行暗箱操作。

    21710

    关键字volatile正确理解和使用!

    前言: 今天给大家分享的一个知识点,这也是我最近在项目中使用过的一个c语言知识点,关键字volatile,这个关键字在stm32的代码里面经常看到,以前我对这个关键字理解的不是特别深;ok,下面分两期文章来分析这个关键字...void Barrier(void) 这个函数通知编译器插入一个内存屏障,但对硬件无效,编译后的代码会把当前CPU寄存器中的所有修改过的数值存入内存,需要这些数据的时候再重新从内存中读出。...ISR_2中断产生时,在main函数中调用dosomething函数,但是,由于编译器判断在main函数里面没有修改过i,因此可能只执行一次对从i到某寄存器的读操作,然后每次if判断都只使用这个寄存器里面的...可以,当一个中服务子程序修该一个指向一个buffer的指针时。...volatile的本质: 编译器的优化:在本次线程内, 当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量值时,就直接从寄存器中取值;当变量值在本线程里改变时

    62530

    代码中被植入了恶意删除操作,太狠了!

    事情是这样的,一老板接手了一套系统,可能因为双方在交接时出现了什么不愉快的事情,对方不提供源代码,只是把生产环境的服务器打了一个镜像给到对方。...在文件的修改时间上还真找到了一些问题,发现在打镜像的两个小时前,项目中一个多个项目底层依赖的jar包被修改过,另外还有两个class文件被修改过。 于是,就对它们进行了重点排查。...首先反编译了那两个被修改过的class文件,在代码中找到了可疑的地方。 在两个被修改的类中都有上述代码。最开始没太留意这段代码,但直觉告诉我不太对,一个查询业务里面怎么可能出现删除操作呢?...找到了问题的根源,解决起来就不是啥事了,由于没有源代码,稍微费劲的是只能把原项目整个反编译出来,然后将改修改地方进行了修改。...又起波折 本以为到此问题已经解决完毕了,没想到第二天又出现问题了,项目又跑不起来了。经过多方排查和定位,感觉还有定时任务再进行暗箱操作。

    40220

    十二、可观测性——监控与日志

    事件监控 k8s中状态转换时产生的 normal、warning 事件。...采集方式 pull 普罗米修斯定时去采集数据,实现简单,但是采集周期内被采集方挂了,会造成数据丢失 push 被采集方将数据 push 到 pushgetway,再由普罗米修斯去定时采集。...日志 日志的场景 主机内核的日志 主机内核的日志,比如说网栈的异常,类似像我们的 iptables mark,它可以看到有 controller table 这样的一些 message; 驱动异常...,比较常见的是一些网络驱动异常, GPU 的一些场景,驱动异常可能是比较常见的一些错误 文件系统异常,在早期 docker 还不是很成熟的场景之下,overlayfs 或者是 AUFS,实际上是会经常出现问题的...影响节点的一些异常,比如说内核里面的一些 kernel panic,或者是一些 OOM Runtime 的日志 比较常见的是 Docker 的一些日志,排查类似像删除一些 Pod Hang

    71230
    领券