kexec是一个内核机制,注意它的参数,一个是-l,一个是-p,-l加载的内核不能用于panic之后重启的,只有-p加载的内核才可以用于panic重启,另外使用linux的启动命令行也是可以的,效果和-p是一样的。 kexec -l加载的内核一般用于快速重启系统,前提是要确保硬件设备处于“和谐”状态(通过kexec重启就是为了跳过硬件的初始...
kexec是一个内核机制,注意它的参数,一个是-l,一个是-p,-l加载的内核不能用于panic之后重启的,只有-p加载的内核才可以用于panic重启,另外使用linux的启动命令行也是可以的,效果和-p是一样的。 kexec -l加载的内核一般用于快速重启系统,前提是要确保硬件设备处于“和谐”状态(通过kexec重启就是为了跳过硬件的初始...
1)新的kernel镜像和initrd镜像连续存储在内存中,initrd的位置记录在boot_params中 2)切换到新内核就是跳转到新的kernel镜像所在内存位置,CPU执行其entry的代码即可,新的内核通过boot_params记录的initrd位置完成根文件系统内容的加载 原理不复杂,但受到一些实际情况的限制,所以在实现上会略复杂一些。 首先,kernel镜像有指...
首个字节的虚拟地址Elf32_Addr p_paddr;// 该段被载入内存后,首个字节的物理地址(对于使用虚拟地址的系统来说,该项为 0)Elf32_Word p_filesz;// 段长度(字节数)Elf32_Word p_memsz;// 段在内存中的长度
2、kdump服务调用 kexec -p 加载内核 3、当panic发生时 启动2nd n内核 调用makedumpfile 将/proc/vmcore 保存到指定位置 4、研发人员 分析vmcore 找出问题 解释一下 kexec -l : 将内核加载到某个生产内核的地址空间,后续可以使用kexec -e去引导此内核 kexec -p : 将内核加载到预留的内存区域。当系统崩溃时,...
字节跳动在过去几年中一直在积极优化 Linux 内核,最近的贡献是提升使用 Kexec 重启内核的速度。原因在于他们的产品越来越流行,比如抖音及其海外版,以及其他应用都需要依赖大量 Linux 服务器,所以字节跳动工程师会尽其所能优化 Linux 内核,将服务器的启动 / 重启时间缩短几毫秒,以减少服务器停机时间。这就是他们参与...
kexec 的main函数解析参数,kexec -l 解析为调用my_load函数。 my_load函数根据路径参数读取内核文件到kernel_buf中,然后执行通用函数file_type[i].load,mips下对应elf_mips_load。 elf_mips_load函数主要内容是解析elf格式的kernel文件,并将所有信息存放在info中,主要是对elf文件的ELF header, Program header table...
mkdir -p "${initdir}/tmp" fi . /lib/kdump/kdump-lib.sh } check() { [[ $debug ]] && set -x #kdumpctl sets this explicitly if [[ -z $IN_KDUMP ]] || [[ ! -f /etc/kdump.conf ]]; then return 1 fi return 0 ...
. /lib/kdump/kdump-lib.sh standard_kexec_args="-p" # Some default values in case /etc/sysconfig/kdump doesn't include KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug" if [ -f /etc/sysconfig/kdump ]; then . /etc/sysconfig/kdump fi single_instance_lock() ...
I am working on 2160 processor to use kexec to jump into a new kenel, but after "kexec -e", the board haltled, like this: # /usr/kexec -e[ 93.742151] kexec_core: Starting new kernel[ 93.746328] Disabling non-boot CPUs ...[ 93.804342] IRQ 136: no longer affine to CPU1[ 93.80440...