Linux内核配置详解
内核配置
Linux内核是Linux操作系统的核心,它负责管理系统的硬件资源和提供基本的服务,内核配置是指根据具体需求对内核进行编译和定制,以优化系统性能和功能,本文将详细介绍Linux内核配置的步骤和方法。
内核配置步骤
准备工作
在进行内核配置之前,需要准备以下工具和文件:
编译内核
(1)解压内核源代码
tar -xvf linux-5.4.0.tar.gz
(2)进入内核源代码目录
cd linux-5.4.0
(3)配置内核
选择适合自己需求的配置工具,如make menuconfig:
make menuconfig
或者使用make xconfig:
make xconfig
编译内核
在配置完成后,使用以下命令编译内核:
安装内核
编译完成后,使用以下命令安装内核:
make modules_installmake install
更新grub
编辑grub配置文件,添加新的内核:
vi /etc/grub.conf
在文件中添加以下内容:
root /dev/sda1kernel /boot/VMLinuz-5.4.0 ro root=/dev/sda1
重启系统
完成以上步骤后,重启系统以加载新的内核。
内核配置详解
内核模块
内核模块是可以在运行时动态加载和卸载的内核代码,在内核配置过程中,可以根据需要选择加载哪些模块。
内核参数
内核参数是用于控制内核行为的变量,在内核配置过程中,可以设置内核参数以满足特定需求。
内核子系统
内核子系统包括网络、文件系统、设备驱动等,在内核配置过程中,可以根据需要选择启用或禁用特定的子系统。
Q1:如何查看已安装的内核版本?
A1:使用以下命令查看已安装的内核版本:
Q2:如何卸载已安装的内核?
A2:卸载内核需要先停止系统使用该内核,然后删除内核相关文件,以下是一个简单的卸载步骤:
(1)停止使用该内核:
shutdown -r now
(2)删除内核相关文件:
rm -rf /boot/vmlinuz-内核版本号rm -rf /boot/initrd-内核版本号.imgrm -rf /boot/config-内核版本号
(3)编辑grub配置文件,删除对应的内核条目。
(4)重启系统。
如何给linux安装新内核
清除垃圾(这一步:一般是在就内核重新编译时使用,在编译新的内核是不需要);make clean及make mrproper;进行内核裁减配置;内核裁减配置的原则:从实际出发。 如:根据支持的硬件设备来决定需要选择的驱动模块,根据需要选择所支持的文件系统格式等;具体配置命令为:make config :通过命令接口,依次要求你设定每个选项,如果文件存在,会根据该文件来设置默认值;make menuconfig :显示以curses为基础的、终端式的配置菜单。 makexconfig :图形界面,显示以Tk为基础X Window配置菜单。 最常用的为:make menuconfig(注:需要ncurses的rpm包)。 说明:这一步中选择为M模式的,编译到/lib/modules/下相关目录文件中;选择为*模式的,编译到内核中即/boot/vmlinuz中,启动时加载到内核中。 具体内核裁减配置参阅其它资料。 第四步:生成依赖关系(make dep)内核源码树中大多数文件都会与一些头文件有依存关系,要想编译内核顺利,在正式编译前必须让内核源码树中的各个Makefile文件知道这些依存关系。 依存关系建立期间会在内核源码树中每个子目录里产生一个隐藏的文件,此文件内含子目录里各个文件所依存的头文件清单。 第五步:建立内核映像和模块2.4内核:make bzImage:在arch/YOUR_ARCH/boot/中生成在在zImage内核映像文件;make modules:在相应目录下生成内核模块(即驱动模块)2.6内核:make:作用相当于make bzImage与make modules第六步:安装模块(make modules_install)让make modules或make 过程中产生的.o驱动模块拷入/lib/modules/下相应目录中;第七步:安装内核第一种情况:直接使用make install命令即可。 第二中情况:先采用cp arch/i386/boot/bzImage /boot/×××(×××表示自己随意的命名)mkinitrd /boot/××× 2.6.12.6(内核版本号)
linux里oracle11g内核参数怎么配置
临时表空间一般下面这些操作会用到:排序、连接、union等,检查方法如下:首先用语句查询容量大于1g的数据段 segment_name,sum(bytes)/1024/1024 from dba_segments group by segment_name having sum(bytes)/1024/1024>1000;得到如下结果:sys_lobc$$msys_lobc$$7170msys_c 1305msys_c 1340m2.根据lob段查询该该lob段属于哪个表select table_name,segment_name from dba_lobs where segment_name in (select segment_namefrom dba_segments group by segment_name having sum(bytes)/1024/1024>1000;);经查得知是xxx表占了很多容量3.删除xxx表重复的数据行,但删除这些重复的数据后,并不会释放出磁盘空间4.然后释放lob类型数据占据的空间alter table adu_* move tablespace bfpick lob(content) store as (tablespace bfpick)5.之后就释放了重复数据所占的空间了,然后在对该表重建索引alter index ***** rebuild;
linux 如何动态分配内存
Linux内核运行在X86机器的物理内存管理使用简单平坦内存模型,每个用户进程内存(虚拟内存)地址范围为从0到TASK_SIZE字节,超过此内存的限制不能被用户访问。 用户进程被分为几个逻辑段,成为虚拟内存区域,内核跟踪和管理用户进程的虚拟内存区域提供适当的内存管理和内存保护处理。 do_brk()是一个内核函数,用于间接调用管理进程的内存堆的增加和缩减 (brk),它是一个mmap(2)系统调用的简化版本,只处理匿名映射(如未初始化数据)。 do_brk()改变进程的地址空间。 地址是代表数据段结束的一个指针(事实上是进程的堆区域)。 do_brk()的参数是一个绝对逻辑地址,这个地址代表地址空间新的结尾。 更实际地说,我们在编写用户程序的时候从来就不应该使用这个函数。 使用这个函数的用户程序就不能再使用malloc(),这是一个大问题,因为标注库的许多部分依赖于malloc()。 如果在用户程序中使用do_brk()可能会导致难以发现的程序崩溃。 do_brk(addr, len)函数给从addr到addr+len建立虚拟内存区vm_area_struct(该区的起始地址为addr;结束地址为addr+len),该虚拟内存区作为进程的堆来使用。 malloc将从此区域获取内存空间(虚拟内存), free()将会把malloc()获取的虚拟空间释放掉(归还到该进程的堆的空闲空间中去)














发表评论