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

免费网站建设平台网站的风格有哪些

免费网站建设平台,网站的风格有哪些,拼多多cms网站怎么做,成都职业培训网络学院linux kernel 编译 升级汇总 写在前面内核编译获取kernel代码开始前的准备工作 编译过程1\.解压与净化将下载好的linux内核解压至/usr/src 2\. 得到源代码后,将其净化3\. 配置要进行编译的内核4.编译内核. (15分钟)5.编译模块.方法1:方法2: 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.126

2. 得到源代码后,将其净化

这步,目前来看,最好不要做。

make mrproper 

然后可以git init
git add .
git commit -s -m “init”

如果还没有配置用户:
git config --global user.name “YourName”
git config --global user.email “YourName@qq.com”

3. 配置要进行编译的内核

 cp /boot/config-`uname -r`  ./.configmake menuconfig

4.编译内核. (15分钟)

make bzImage -j$(nproc)

_(-j表示加速,$(nproc)代表着线程数,或占用核数量)

5.编译模块.

 make modules -j4

遇到如下错误:

root@xylxperf:/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_KEYS

canonical-revoked-certs.pem

scripts/config --disable SYSTEM_REVOCATION_KEYS

通常是由于内核配置中包含了对debian/canonical-certs.pem文件的引用,但是该文件在您的系统中不存在。为了解决这个问题,

方法2:

  1. 编辑内核的配置文件
    您需要编辑内核的.config文件,这个文件通常位于内核源代码的根目录下。

  2. 修改CONFIG_SYSTEM_TRUSTED_KEYS配置项
    .config文件中找到CONFIG_SYSTEM_TRUSTED_KEYS这一行,将其设置为空值。修改前可能是这样的:

    CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
    

    修改后应该是:

    CONFIG_SYSTEM_TRUSTED_KEYS=""
    

    如果存在CONFIG_SYSTEM_REVOCATION_KEYS配置项,并且它也被设置为包含debian/canonical-revoked-certs.pem,同样将其设置为空值:

    CONFIG_SYSTEM_REVOCATION_KEYS=""
    
  3. 保存并退出配置文件
    保存对.config文件的更改后退出编辑器。

这个问题,有许多解决的办法。原本我记得,只需要配置几个变量即可。

6.安装模块

make INSTALL_MOD_STRIP=1 modules_install

这里需要斟酌一下。
如果我们还需要调试符号,就应当指明strip的内容放在哪里:

export MODLIB=/usr/lib/modules/$(uname -r)/.debug
make INSTALL_MOD_STRIP=1 modules_install

报这个错

arch/x86/Makefile:142: CONFIG_X86_X32 enabled but no binutils support
sed: can't read modules.order: No such file or directory
make: *** [Makefile:1544: __modinst_pre] Error 2
root@xylxperf:/usr/src/linux-5.15.126# get install --reinstall binutils
Command 'get' not found, but there are 18 similar ones.
root@xylxperf:/usr/src/linux-5.15.126# apt get install --reinstall binutils
E: Invalid operation get

要么重装,
root@xylxperf:/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-runscripts/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 2>&1;  \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 ihex

ld -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

注意:objcopyld 参数值的不同(elf32-86-64elf32_86_64)。

解决方法

假如查看到的工具链不支持需要的目标,只需升级工具链再重新编译内核即可。

小结
  • 64 位处理器运行原生 32 位程序,需要打开内核 CONFIG_X86_X32 选项。

  • CONFIG_X86_X32 选项需要工具链支持编译 elf32_x86_64 目标。

  • objcopy --helpld -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-generic

DWARF

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.126

grub

升级

升级很简单,只要确保编译之后的文件放在指定位置:/boot
然后
sudo update-grub
即完成。
自动将当前最新的排在0的位置

还原到旧的版本

这步就需要了解一些内容。

如何更换,这一篇是最好的
https://www.cnblogs.com/qusixing/p/17995926

  1. 理解清楚,GRUB_DEFAULT变量,是在这个文件中: /etc/default/grub ; 这里网上一些位置没有解释清楚。
  2. 直接/boot/grub/grub.cfg修改也是没有问题的。当然不太好。
  3. GRUB_DEFAULT从零开始
  4. GRUB_DEFAULT="1>2"表示大菜单项的,第2个小项。这里好像有点问题,虽然我成功了,但显示的启动菜单,完全不是我们想要的样子。
http://www.yayakq.cn/news/175783/

相关文章:

  • 个人网站能干嘛兰州口碑营销
  • 自己做网站要学前端和后端成全视频免费高清观看在线动漫
  • vps 做网站乐山乐人网站建设公司
  • 辽宁省营商建设监督局网站更改wordpress后台登录图标
  • 查不到备案的网站判断网站的好坏
  • 深圳专业做网站设计网站地图怎么弄
  • 网站iis安全配置毕设做购物网站容易吗
  • 专业网站制作公司是如何处理一个优秀网站的wordpress 图片 alt
  • 高性能网站建设进行指南天水建设局网站渣土治理
  • 大连网站开发乛薇为什么wordpress打开很慢
  • 家装设计网页论文做网站优化找谁
  • 深圳装修公司哪家好十大排名优化电池充电什么意思
  • 企业网站推广案例滁州网站建设czesou
  • 太原网站建设哪家强制作网站的网址
  • 杭州做网站的企业网站友链查询
  • 嘉兴高档网站建设淘宝官网首页登录入口电脑版
  • 什么行业最需要网站建设这样制作公司网站
  • 阿里云虚拟主机wordpress建站大兵seo博客
  • 嘉兴制作网站石家庄网站制作方案
  • 网站群建设需求班级优化大师下载安装app
  • 长沙网站搭建首选智投未来润才网站建设
  • 在微信怎样搞做微视频网站成都住建局官网网上办事大厅
  • 网站项目中的工作流程贵阳做网站kuhugz
  • 微网站模板开发临沂品牌网站推广
  • 企业网站管理系统 免费wordpress 首页浏览量统计
  • 打电话沟通做网站网站打开速度
  • 当当网的网站怎么做的网站设计的趋势
  • 中土南方建设有限公司网站建立网站的详细步骤
  • ps自学网官方网站网站地图有什么作用
  • 单页网站模板安装专业的大良网站设计