当前位置: 首页 > news >正文

网站名称注意事项网站建设知识及维护技巧

网站名称注意事项,网站建设知识及维护技巧,wordpress资讯插件,承接php网站建设linux kernel 编译 升级汇总 写在前面内核编译获取kernel代码开始前的准备工作 编译过程1\.解压与净化将下载好的linux内核解压至/usr/src 2\. 得到源代码后,将其净化3\. 配置要进行编译的内核4.编译内核. #xff08;15分钟#xff09;5.编译模块.方法1:方法2#xff1a; 6… linux kernel 编译 升级汇总 写在前面内核编译获取kernel代码开始前的准备工作 编译过程1\.解压与净化将下载好的linux内核解压至/usr/src 2\. 得到源代码后,将其净化3\. 配置要进行编译的内核4.编译内核. 15分钟5.编译模块.方法1:方法2 6.安装模块源码分析查看工具链支持的编译目标解决方法小结 7.打包8.到此为止,构建内核完毕,把内核映象和System.map拷贝到/boot/下DWARF grub升级还原到旧的版本 写在前面 收集自己编译内核的一些信息 版本5.15.126 为什么选这个版本该版本的lttng可以正常工作。 内核编译 这个文章相对交清楚 https://blog.csdn.net/weixin_62882080/article/details/124260136获取kernel代码 到哪里下代码,尽管似乎现在倾向于基于github来下kernel代码和编译但我认为还是传统的方式更正确对大部分人来说。 www.kernel.org www.kernel.org/pub/linux/kernel/v5.x/开始前的准备工作 输入下面命令完成安装需要的包 sudo apt-get install libncurses5-dev openssl libssl-dev sudo apt-get install build-essential openssl sudo apt-get install pkg-config sudo apt-get install libc6-dev sudo apt-get install bison sudo apt-get install flex sudo apt-get install libelf-dev sudo apt-get install zlibc minizip sudo apt-get install libidn11-dev libidn11还有 sudo apt-get update sudo apt-get install flex sudo apt-get install bison sudo apt-get install zstd编译过程 先切换到root用户 1.解压与净化 将下载好的linux内核解压至/usr/src tar -xavf linux-5.15.126.tar.xz -C /usr/srccd /usr/src/linux-5.15.1262. 得到源代码后,将其净化 这步目前来看最好不要做。 make mrproper 然后可以git init git add . git commit -s -m “init” 如果还没有配置用户 git config --global user.name “YourName” git config --global user.email “YourNameqq.com” 3. 配置要进行编译的内核 cp /boot/config-uname -r ./.configmake menuconfig4.编译内核. 15分钟 make bzImage -j$(nproc)_-j表示加速$(nproc)代表着线程数或占用核数量 5.编译模块. make modules -j4遇到如下错误 rootxylxperf:/usr/src/linux-5.15.126# make modules -j4DESCEND objtoolDESCEND bpf/resolve_btfidsCALL scripts/atomic/check-atomics.shCALL scripts/checksyscalls.shCHK include/generated/compile.h make[1]: *** No rule to make target debian/canonical-certs.pem, needed by certs/x509_certificate_list. Stop. make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:1905: certs] Error 2 make: *** Waiting for unfinished jobs....CHK kernel/kheaders_data.tar.xz以及,如果报错 canonical-revoked-certs.pem make[1]: *** No rule to make target debian/canonical-revoked-certs.pem, needed by certs/x509_revocation_list. Stop. make: *** [Makefile:1868: certs] Error 2方法1: https://blog.csdn.net/m0_47696151/article/details/121574718 debian/canonical-certs.pem scripts/config --disable SYSTEM_TRUSTED_KEYScanonical-revoked-certs.pem scripts/config --disable SYSTEM_REVOCATION_KEYS通常是由于内核配置中包含了对debian/canonical-certs.pem文件的引用但是该文件在您的系统中不存在。为了解决这个问题 方法2 编辑内核的配置文件 您需要编辑内核的.config文件这个文件通常位于内核源代码的根目录下。 修改CONFIG_SYSTEM_TRUSTED_KEYS配置项 在.config文件中找到CONFIG_SYSTEM_TRUSTED_KEYS这一行将其设置为空值。修改前可能是这样的 CONFIG_SYSTEM_TRUSTED_KEYSdebian/canonical-certs.pem修改后应该是 CONFIG_SYSTEM_TRUSTED_KEYS如果存在CONFIG_SYSTEM_REVOCATION_KEYS配置项并且它也被设置为包含debian/canonical-revoked-certs.pem同样将其设置为空值 CONFIG_SYSTEM_REVOCATION_KEYS保存并退出配置文件 保存对.config文件的更改后退出编辑器。 这个问题有许多解决的办法。原本我记得只需要配置几个变量即可。 6.安装模块 make INSTALL_MOD_STRIP1 modules_install这里需要斟酌一下。 如果我们还需要调试符号就应当指明strip的内容放在哪里 export MODLIB/usr/lib/modules/$(uname -r)/.debug make INSTALL_MOD_STRIP1 modules_install报这个错 arch/x86/Makefile:142: CONFIG_X86_X32 enabled but no binutils support sed: cant read modules.order: No such file or directory make: *** [Makefile:1544: __modinst_pre] Error 2 rootxylxperf:/usr/src/linux-5.15.126# get install --reinstall binutils Command get not found, but there are 18 similar ones. rootxylxperf:/usr/src/linux-5.15.126# apt get install --reinstall binutils E: Invalid operation get要么重装 rootxylxperf:/usr/src/linux-5.15.126# apt install --reinstall binutils 要么关闭32位支持 禁用CONFIG_X86_X32如果您不需要x32支持可以通过编辑内核的.config文件注释掉CONFIG_X86_X32这一行然后重新编译内核。 注意这个issue只在特定版本上出。很难解决是个很顽固的bug对我是说这是个bug.因为我的binutils版本是大于要求版本的。而且64位运行32位程序是个正常需求。 我认为正确的解决应当是这个 https://blog.csdn.net/weixin_33755557/article/details/92246999 CONFIG_X86_X32 enabled but no binutils support 源码分析 在内核源码中搜索上述警告定位到 arch/x86/Makefile ifdef CONFIG_X86_X32x32_ld_ok : $(call try-run,\/bin/echo -e 1: .quad 1b | \ $(CC) $(KBUILD_AFLAGS) -c -x assembler -o $$TMP - \ $(OBJCOPY) -O elf32-x86-64 $$TMP $$TMPO \ $(LD) -m elf32_x86_64 $$TMPO -o $$TMP,y,n)ifeq ($(x32_ld_ok),y)CONFIG_X86_X32_ABI : yKBUILD_AFLAGS -DCONFIG_X86_X32_ABIKBUILD_CFLAGS -DCONFIG_X86_X32_ABI else$(warning CONFIG_X86_X32 enabled but no binutils support)endifendif此段代码即是根据 try-run 的运行结果确定工具链是否支持 elf32_x86_64如果支持则定义 CONFIG_X86_X32_ABI否则输出前述编译警告。 try-run 在 scripts/Kbuild.include 中定义 # output directory for tests belowTMPOUT : $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/)# try-run# Usage: option $(call try-run, $(CC)...-o $$TMP,option-ok,otherwise)# Exit code chooses option. $$TMP serves as a temporary file and is# automatically cleaned up.try-run $(shell set -e; \TMP$(TMPOUT).$$$$.tmp; \TMPO$(TMPOUT).$$$$.o; \ if ($(1)) /dev/null 21; \then echo $(2); \ else echo $(3); \fi; \rm -f $$TMP $$TMPO)其作用是执行第一个入参指定的命令如果成功则输出第二个入参失败则输出第三个入参最后删除临时目录下的两个临时文件。 结合 arch/x86/Makefile 的使用情况完成如下三个操作 将一行汇编语句使用 gcc 编译成 .$$$$.tmp 使用 objcopy 将 .$$$$.tmp 转换为 elf32-x86-64 格式的 .$$$$.o 最后使用 ld 将 .$$$$.o 链接为 elf32_x86_64 目标的 .$$$$.tmp复用此文件名。 假如三个操作都没有错误发生表明目标工具链支持 x32 ABI 对应的选项则 x32_ld_ok 变量赋值为 y否则赋值为 n。 其中要编译的汇编语句仅有一行作用是定义一个值为 1 的 64 比特数值仅用于后续的选项测试没有实际功能 1: .quad 1b查看工具链支持的编译目标 在 objcopy --help 的最后可查看其支持的目标其中包括 elf32-86-64各个目标可作为 -O 参数传入 objcopy: supported targets: elf64-x86-64 elf32-i386 elf32-iamcu elf32-x86-64 pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big pe-x86-64 pe-bigobj-x86-64 pe-i386 plugin srec symbolsrec verilog tekhex binary ihexld -V 可查看其支持的目标其中包括 elf32_86_64各个目标可作为 -m 参数传入 # ld -VGNU ld (GNU Binutils for Ubuntu) 2.31.1Supported emulations:elf_x86_64elf32_x86_64elf_i386elf_iamcuelf_l1omelf_k1omi386pepi386pe注意objcopy 和 ld 参数值的不同elf32-86-64 和 elf32_86_64。 解决方法 假如查看到的工具链不支持需要的目标只需升级工具链再重新编译内核即可。 小结 64 位处理器运行原生 32 位程序需要打开内核 CONFIG_X86_X32 选项。 CONFIG_X86_X32 选项需要工具链支持编译 elf32_x86_64 目标。 objcopy --help 和 ld -V 可查看两个命令支持的目标格式。 7.打包 这个命令的作用是把/lib/modules/5.17.3中对应的.ko驱动打包到initrd.img文件中。 8.到此为止,构建内核完毕,把内核映象和System.map拷贝到/boot/下 mkinitramfs /lib/modules/5.17.3 -o /boot/initrd.img-5.17.3-genericDWARF sudo apt-get install libdw-dev sudo apt-get install libelf-dev sudo apt-get install dwarves#cp /usr/src/linux-5.15.126/arch/x86/boot/bzImage /boot/vmlinuz-5.15.126-generic#cp /usr/src/linux-5.15.126/System.map /boot/System.map-5.15.126grub 升级 升级很简单只要确保编译之后的文件放在指定位置/boot 然后 sudo update-grub 即完成。 自动将当前最新的排在0的位置 还原到旧的版本 这步就需要了解一些内容。 如何更换这一篇是最好的 https://www.cnblogs.com/qusixing/p/17995926 理解清楚GRUB_DEFAULT变量是在这个文件中 /etc/default/grub 这里网上一些位置没有解释清楚。直接/boot/grub/grub.cfg修改也是没有问题的。当然不太好。GRUB_DEFAULT从零开始GRUB_DEFAULT12表示大菜单项的第2个小项。这里好像有点问题虽然我成功了但显示的启动菜单完全不是我们想要的样子。
http://www.sczhlp.com/news/218678/

相关文章:

  • 上线了做网站价格贵西安做企业网站哪家做的好
  • 网站开发过程中遇到的问题及解决办法wordpress打赏赞插件
  • 苏州手机网站做网站开发的电话销售话术
  • 网站布局模版低价做营销企业网站
  • 佛山专业的网站建设永州做网站
  • 百度推广授权代理商海外seo培训
  • 网站建设公司的电话做网店有哪些拿货网站
  • 网站建设.国风网络网站建设保定
  • 哈尔滨口碑好的网站建设十大安卓应用商店排名
  • 官网建设建站中英文外贸网站模版
  • 公司网站修改方案制作应用的网站
  • 大型网站建设招商建设局查询网站首页
  • 哪家做网站好杨凌做网站网址
  • 手表网站制作照片做网站费免图片网站
  • 长春手机建站模板wordpress 显示微信二维码
  • pc蛋蛋游戏体验网站建设上海活动策划公司排行榜
  • 百度网站的安全建设方案怎么做网站的内部链接
  • 模板王网站怎么下载不了模板wordpress style.
  • 2025年定型机厂家权威推荐榜:拉幅定型机/门富士/节能/余热回收/废气回收/烟气回收/智能排风/双层定型机源头企业综合解析
  • 2025年立式TYPE-C母座厂家推荐排行榜,TYPE-C接口,USB-C母座,立式贴片TYPE-C连接器,防水TYPE-C母座公司精选
  • 2025年粘度计厂家权威推荐榜:旋转粘度计、落球粘度计、在线粘度计、便携式粘度计专业选购指南
  • 法语NER模型在可再生能源领域的应用
  • 菜鸟学做网站手机端steam怎么调中文
  • 网页制作与网站建设宝典宁波企业做网站
  • 西安哪里找做网站公司网页设计实验报告代码
  • 做电影网站赚了几百万wordpress 菜单 下拉
  • 网站开发设计比赛icp备案是网站上线前
  • 沈阳网站建设定制网络营销公司推荐
  • 西部数码网站管理助手 没有d盘产品推广包括哪些内容
  • 番禺网站建设策划有哪些专做旅游定制的网站