首页 > 系统相关 >Linux内核编译

Linux内核编译

时间:2025-01-02 11:31:02浏览次数:1  
标签:get sudo apt 编译 内核 install Linux

Linux内核编译

实验内容

下载内核源码:

确定内核版本号

uname -r

alt text

在www.kernel.org选择接近的内核版本下载

linux-6.6.60.tar.xz

将压缩包解压到虚拟机目录中

确认系统位数

getconf LONG_BIT

alt text

确认虚拟机保留足够大硬盘空间(20G)

df -h

alt text

编写自定义系统调用函数

修改/kernel/sys.c文件,在文件末尾增加自己设定的函数
alt text
修改系统函数头文件/include/linux/syscalls.h
在文件最后的#endif之前添加函数声明
alt text
为函数添加系统调用号:/arch/x86/entry/syscall/syscall_32.tbl。(根据刚才查看系统的位数而定,如果是64位就修改syscall_64.tbl文件)。
在文件最后添加调用号,可以接着上面的序号继续+1,后面的格式参照上面编写模式。
alt text
编译内核

#编译安装依赖
sudo apt-get update
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install libssl-dev
sudo apt-get install libelf-dev

sudo apt-get install binutils-dev
sudo apt-get install pkg-config
sudo apt-get install libncurses5-dev


#清除内核的目标文件、附属文件以及配置文件
#(一般第一次编译时候需要使用,主要防止下载的源码包有一些配置文件,影响结果)
sudo make mrproper 

#清除内核中的目标文件,并不会删除设置文件
#(在后续需要重新编译时候,只需要make clean就可以了)
sudo make clean

#设置配置文件:这是一种通过已存在.config文件内容,使用该文件内的默认值,只将新版本内核功能新功能提供出来让用户选择,可以简化内核功能挑选过程。
#(如果使用默认值一直按回车键快速略过也可以)
sudo make oldconfig

#编译内核
sudo make bzImage –j6 #-j6代表用六线程编译

编译完成
alt text

#编译模块
sudo make modules
#安装模块
sudo make modules_install
#安装内核
sudo make install

alt text
修改grub引导

#/etc/default/grub
GRUB_TIMEOUT_STYLE=meun
GRUB_TIMEOUT=30 #引导菜单超时时间
sudo update-grub #更新grub配置

重启系统,可以在GRUB界面选择编译的第二个内核
alt text
进入系统后查看内核版本

uname -r

alt text
内核版本已经被更换成6.6.60

调用系统函数

编写调用函数

#include<stdio.h>
int main(){
    int num;
    //syscall(arg1,arg2);1为自定义函数的系统调用号,2为函数参数
    num = syscall(548,111);
    printf("the number is %d",num);
    return 0;
}

标签:get,sudo,apt,编译,内核,install,Linux
From: https://www.cnblogs.com/Arisf/p/18647268

相关文章

  • 内核编译与系统调用
    Linux内核编译实验内容下载内核源码:确定内核版本号uname-r在www.kernel.org选择接近的内核版本下载linux-6.6.60.tar.xz将压缩包解压到虚拟机目录中确认系统位数getconfLONG_BIT确认虚拟机保留足够大硬盘空间(20G)df-h编写自定义系统调用函数修改/kernel/sys......
  • Linux模块与系统调用
    模块与系统调用1.编写内核模块代码首先,编写一个简单的“HelloWorld”内核模块文件hello_module.c。#include<linux/init.h>//用于宏__init和__exit#include<linux/module.h>//用于模块编程基本宏#include<linux/kernel.h>//用于printk宏MODULE_LI......
  • linux安装php运行环境
    https://github.com/wintercoder/datamaker开源的mysql做假数据项目 一、linux下安装php集成环境sudoapt-getinstallhttpdservicehttpdstart主配置目录:/etc/httpd/conf/主配置文件:/etc/httpd/conf/httpd.conf/子配置目录:/etc/httpd/conf.d/子配置文件:/etc/http......
  • Dify 框架连接 PGSQL 数据库与 Sandbox 环境下的 Linux 系统调用权限问题
    Dify框架连接PGSQL数据库与Sandbox环境下的Linux系统调用权限问题背景在使用Dify框架进行开发时,遇到了两个主要的技术挑战:代码节点连接到PGSQL(PostgreSQL)数据库。解决沙盒环境中由于系统调用限制导致的“operationnotpermitted”错误。本文档将详细描述如何解......
  • linux ubuntu更改软件源
    更换步骤sudocp/etc/apt/sources.list /etc/apt/sources.list.backsudovim/etc/apt/sources.list替换为下面内容debhttps://mirrors.ustc.edu.cn/ubuntu/bionicmainrestricteduniversemultiversedeb-srchttps://mirrors.ustc.edu.cn/ubuntu/bionicmainrestric......
  • linux mint安装hadoop
    一、安装安装sshopenssh-server 配置jdk环境变量~/.bashrc参考exportJAVA_HOME=/opt/jdk1.7.0_55/exportJRE_HOME=${JAVA_HOME}/jreexportCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexportPATH=${JAVA_HOME}/bin:$PATH exportHADOOP_HOME=/opt/Servers/hadoo......
  • Linux安装nodejs npm
    1、检查whereisnodejswhereisnpm2、下载wget-chttps://npm.taobao.org/mirrors/node/v12.12.0/node-v12.12.0-linux-x64.tar.xztar-xvfnode-v12.12.0-linux-x64.tar.xzmvnode-v12.12.0-linux-x64nodejsmv/root/nodejs//usr/sbin/3、配置软连接ln-s/usr/sbin/......
  • 一文读懂 Linux top 命令
    一文读懂Linuxtop命令在Linux系统管理与性能调优的“武器库”中,top命令无疑是一把极为锋利的“利刃”。它能够实时动态地展示系统关键运行指标,犹如系统运行状态的“监控大屏”,为管理员和开发者快速洞察系统健康程度、资源分配状况提供关键信息。下面,就来详细拆解这个......
  • 深入理解 Linux 中的“rm -rf”:威力与风险并存
    深入理解Linux中的“rm-rf”:威力与风险并存在Linux系统的命令行世界里,“rm-rf”可谓是声名远扬,它是一条用于删除文件与目录的强力指令。对于经验丰富的系统管理员和开发者而言,它是高效清理磁盘空间、整理文件系统的得力助手;然而,倘若使用不当,也极有可能酿成数据丢失......
  • 解释型语言和编译型语言的差异是什么?
    解释型语言和编译型语言是两种不同的编程语言类型,它们在执行程序时的方式和过程上存在显著区别。这些差异对于前端开发尤为重要,因为它们直接影响到代码的执行效率、开发流程以及跨平台兼容性。以下是解释型语言和编译型语言在前端开发中的主要差异:执行过程:解释型语言(如JavaSc......