内核最终目的:运行根文件系统的应用程序 内核做的事情: 处理uboot传入的参数 arch\arm\kernel /*启动内核:bi_arch_number机器ID。...参数存放的地址 bd->bi_boot_params*/ theKernel (0, bd->bi_arch_number, bd->bi_boot_params); 判断是否支持单板(根据启动内核时传入的机器...add pc, r10, #PROCINFO_INITFUNC @ initialise processor @ (return control reg) 跳转到start kernel(内核的第一个...C函数,处理启动参数) b start_kernel main.c(init) /*启动流程 start_kernel setup_arch 解析UBOOT传入的启动参数 setup_command_line...解析UBOOT传入的启动参数 parse_early_param do_early_para 从_setup_start到_setup_end,调用early函数 unknown_bootoption
debian 看当前系统内核 cat /boot/grub/grub.cfg | grep menuentry if [ x" menuentry 'Debian GNU/Linux, with Linux...menuentry_id_option 'gnulinux-4.9.0-11-amd64-recovery-cdd695b0-e558-4915-ba1d-38c769fee1b1' { 修改grub文件 假设修改启动内核为...更新grub文件 sudo update-grub 重启 重启之后使用uname -r可以查看当前的系统内核。...957.27.2.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-65113b1a0d2f6087d515e6a8cd0ee7ef) 7 (Core) 设置默认启动内核...假设修改启动内核为3.10.0-957.27.2。
4.4.0-89-generic #112-Ubuntu SMP Mon Jul 31 19:38:41 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 2.查看当前linux内核的启动参数...-4202-4513-b39b-cde6a5d9753f :这一串可以用root=/dev/sda1(假如根文件系统在第一个分区)来代替,但是不能用root=(hd0,msdos1)来代替 ro : 启动时以只读方式挂载根文件系统...所以去掉此项将会迎来很多打印信息 splash: 显示开机动画 vt.handoff=7 : 图形界面会去使用tty7,此项用来禁止splash占用tty7,因此如果将splash参数去掉,此项就无效了 4.添加新的启动参数...update-grub命令无法满足更细致的内核参数修改需求
---- 无权限,需要root用户权限: insmod: error inserting 'option.ko': -1 Operation not permitted ---- 编译的内核版本与当前系统内核版本不匹配
,便不用uboot的do_bootm函数来帮我们搬运内核了,可以缩短启动时间。...总结bootm做了什么: 1.读取头部 2.将内核移动到加载地址 3.启动内核 具体如何启动内核?...使用在/lib_arm/bootm.c定义的do_bootm_linux(),我们已经知道入口地址,只需跳到入口地址就可以启动linux内核了,在这之前需要做一件事———— uboot传递参数(启动参数...uboot机器码必须一致才能启动内核 2....更多uboot启动内核的细节观看毕业班视频自己写uboot。
centos7 选定默认启动内核,及删除无用内核 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29...30 31 #使用cat /boot/grub2/grub.cfg |grep menuentry 查看系统可用内核 [root@bigapp-slave27 ~]# cat /boot/grub2...[root@bigapp-slave27 ~]# uname -r 3.10.0-514.16.1.el7.x86_64 #修改开机时默认使用的内核 grub2-set-default 'CentOS...=CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core) #查看系统安装了哪些内核包 [root@bigapp-slave27 ~]# rpm -qa |grep...64 kernel-3.10.0-514.16.1.el7.x86_64 kernel-tools-3.10.0-327.el7.x86_64 #使用yum remove 或rpm -e 删除无用内核
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #使用cat /boot/grub2/grub.cfg |grep menuentry 查看系统可用内核...[root@bigapp-slave27 ~]# uname -r 3.10.0-514.16.1.el7.x86_64 #修改开机时默认使用的内核 grub2-set-default 'CentOS...Linux (3.10.0-327.el7.x86_64) 7 (Core)' #查看内核修改结果 [root@bigapp-slave27 ~]# grub2-editenv list saved_entry...=CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core) #查看系统安装了哪些内核包 [root@bigapp-slave27 ~]# rpm -qa |grep...64 kernel-3.10.0-514.16.1.el7.x86_64 kernel-tools-3.10.0-327.el7.x86_64 #使用yum remove 或rpm -e 删除无用内核
此时的问题就是,真正的根分区并不在boot目录下,系统启动需要的一些lib文件也并不在boot目录下,内核要启动根分区就得加载根分区的驱动,由于内核大小和开机速度限制,以及不同的主机不同的根文件系统的限制...步骤七:启动内核模块 依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。...name 修改指定的连接类型 chkconfig [–level levels] name 级别省略表示2345 3、grub命令行接口: 在grub.conf文件被破坏或有错误时...参数中rhgb不显示最后的加载图像,只显示启动情况;quiet隐藏内核加载信息,及初始化信息,只显示之后的开启服务信息。...title TITLE定义菜单标题 root (hd#,#) 给定stage2和内核的位置 kernel 启动的内核 initrd 虚根文件 password [–md5] STRING 选择内核后,
目标: 1.给内核打补丁 2.配置 3.编译 4.重启 1 内核打补丁 1.1 通过FTP将Windows里system目录下linux-2.6.22.6.tar.bz2和linux-2.6.22.6...这是内核配置的过程。...:表示这选项能被模块化(按下M键有响应) 3 编译(2种配置方法) 3.1 输入 make 命令直接编译 3.2 输入 make uImage 命令生成uImage内核文件(头部uImage+真正的内核...root (nfs filesystem).字段,表示已安装文件系统 4.2输入”nand erase root”删除内存中root区0x0026000~0x0fffffff文件系统后,重启设备,就会无法启动内核..., 所以要想启动内核,必须需要文件系统!!!!!
可以查看断点信息 clear : 清除全部已定义的断点 delete : 删除指点的断点号,后面接断点号 gdb -tui main或者在启动...建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行 (gdb)break start_kernel # 断点的设置可以在target remote之前,也可以在之后 运行启动...set_task_stack_end_magic start_kernel是内核启动阶段的入口,通过单步调试,可以发现它是linux内核执行的第一个init,我们单步进入看看它做了哪些操作: ?...比如如果你写了一个无限循环,导致栈使用不断增长了,那么,一旦把这个标记未修改了,就导致了栈溢出的错误 ? local_irq_disable函数 ?...: Linux-0.11 #set_trap_gate(0,÷_error)//除零错误 …… #define set_trap_gate(n,addr) \ _set_gate(&idt
目标: 通过分析makefile,明白make uImage如何编译内核 把整个内核的makefile分成三类(makefile资料文档在linux-2.6.22.6/Documentation/build...最后编译成isdn.ko模块文件 所以 在配置文件auto.conf中CONFIG_XXX=y, 那么编译时,源码.o文件会被Makefile追加到built-in.o文件,供给顶层 Makefile生成内核...boot) MACHINE=$(MACHINE) $(boot)/$@ 得出uImage等5个目标的生成都是依赖于vmlinux(vmlinux位于顶层makefile,其中vmlinux 指未压缩的内核...uImage 3 分析顶层目录Makefile 3.1 顶层vmlinux生成过程 在顶层目录makefile中第484行得出: 484 all: vmlinux 其中,all就是直接 make 指令编译内核...,显然make uImage和make都依赖于vmlinux(内核) 然后在746得到出vmlinux生成步骤: 746 vmlinux: $(vmlinux-lds) $(vmlinux-init)
现象 docker启动mysql失败,报错docker exec -it mysql mysql -uroot -proot Error response from daemon: Container...until the container is running 一直显示正在重启 解决 使用docker logs –tail 50 –follow –timestamps ID/NAME命令,根据id号查看错误日志定位原因...2022-06-10T16:40:18.089308353Z 2022-06-10T16:40:18.066793Z 0 [ERROR] Aborting 问题在于mysqld在试图检查配置时失败
目标: 通过分析makefile,明白make uImage如何编译内核 把整个内核的makefile分成三类(makefile资料文档在linux-2.6.22.6/Documentation/build...最后编译成isdn.ko模块文件 所以 在配置文件auto.conf中CONFIG_XXX=y, 那么编译时,源码.o文件会被Makefile追加到built-in.o文件,供给顶层Makefile生成内核...boot) MACHINE=$(MACHINE) $(boot)/$@ 得出uImage等5个目标的生成都是依赖于vmlinux(vmlinux位于顶层makefile,其中vmlinux 指未压缩的内核...uImage 3 分析顶层目录Makefile 3.1 顶层vmlinux生成过程 在顶层目录makefile中第484行得出: 484 all: vmlinux 其中,all就是直接 make 指令编译内核...,显然make uImage和make都依赖于vmlinux(内核) 然后在746得到出vmlinux生成步骤: 746 vmlinux: $(vmlinux-lds) $(vmlinux-init)
查看内核配置/版本 查看当前启动内核 root@BJ-CentOS7 ~ # uname -sr 查看当前默认启动内核 root@BJ-CentOS7 ~ # grub2-editenv list 确认系统内当前已安装内核版本...---- 设置默认启动内核 root@BJ-CentOS7 ~ # grub2-set-default 'CentOS Linux (3.10.0-1062.9.1.el7.x86_64) 7 (Core
查看当前启动内核 root@BJ-CentOS7 ~ # uname -sr Linux 3.10.0-957.21.3.el7.x86_64 查看当前默认启动内核 root@BJ-CentOS7 ~...# grub2-editenv list saved_entry=CentOS Linux (3.10.0-693.el7.centos.toa.x86_64) 7 (Core) 确认系统内当前已安装内核版本...3.10.0-123.el7.x86_64 kernel-3.10.0-693.el7.centos.toa.x86_64 kernel-3.10.0-957.21.3.el7.x86_64 设置默认启动内核...修改默认启动内核后,重启机器即可以修改后的内核加载系统 root@BJ-CentOS7 ~ # grub2-set-default 'CentOS Linux (3.10.0-693.el7.centos.toa.x86
/initramfs-2.6.18-274.img 2.6.18-274 修改grub.cfg启动顺序 reboot系统
TSINGSEE青犀视频在去年对旗下的视频平台EasyNR、EasyGBS、EasyCVR等均更换了新的流媒体内核,新内核版的视频平台性能更加稳定和流畅,平台丰富灵活的视频能力,可满足用户在多场景中的视频监控需求...有用户反馈EasyNVR在启动后出现了无法播放视频的情况,初步判断为流媒体启动失败。...解决步骤如下: 1)单独启动流媒体内核,自动报错退出,如图: 2)查找对应报错的端口18083,发现这个端口被占用: 3)在任务管理器kill该进程,或将流媒体的端口更换为其他可用端口: 4)再次启动流媒体...,此时服务已经可以正常启动,如图: 5)视频播放也正常了,如图: EasyNVR可实现设备接入、实时直播、录像、检索与回放、存储、视频分发等视频能力服务,支持分发RTSP、RTMP、HTTP-FLV
Linux 5.12引入一个新的内存错误检测工具:KFENCE(Kernel Electric-Fence,内核电子栅栏)。KFENCE是一个低开销的、基于采样的内存错误检测工具。...KASAN依靠编译器插桩,对每个内存访问都检查地址的合法性,更精确,但是导致内核的性能下降,所以KASAN只适合测试环境。...KFENCE使用采样的方法,牺牲了精度,但是性能开销几乎为零,它被设计为在产品内核中使用,发现在测试环境中测试用例没有执行的代码路径中的缺陷。...可以使用内核启动参数“kfence.sample_interval”在启动时指定采样间隔,单位是毫秒,设置为0表示禁止KFENCE。 KFENCE通过debugfs文件系统提供了一些调试信息,如下。...在页错误异常处理程序里面,KFENCE拦截页错误异常,报告一个越界访问,如果开启了“panic_on_warn”(通过内核启动参数“panic_on_warn”开启,或者执行命令“echo 1 > /proc
cat /etc/default/grub # kernel内核启动顺序配置文件 sed -i "s/DEFAULT....*/DEFAULT=0/g" /etc/default/grub # 设置 GRUB_DEFAULT=0, 将 GRUB 初始化页面的第一个内核将作为默认内核 # sed -i 修改文件,"s/x.....* # 修改后的字符为:a 特殊字符转译:g ;然后跟上文件路径 grub2-mkconfig -o /boot/grub2/grub.cfg # centos 创建内核配置 #sudo update-grub...# ubuntu 生效内核配置 参考第三方内核升级;https://eisc.cn/index.php?
目标: 分析make menuconfig内核配置过程 在上1小结中(内核编译试验)讲到了3种不同的配置: (1)通过make menuconfig 直接从头到尾配置.config文件 (2) 通过make...命令在默认的配置上进行自动修改.config文件 (3)使用厂家提供的配置config_ok文件覆盖.config文件 所以,所有的配置结果都是配置.config文件 1 在linux下通过vi指令查看.config内核配置文件...如上图所示:就是一堆配置项: CONFIG_XXX=y/CONFIG_XXX=m/ CONFIG_XXX=n =y:表示编进内核 =m:表示编译成模块,提供动态加载 =n:表示不参与编译 输入grep...,内核会根据.config自动生成auto.conf和autoconf.h这两个文件( 其中autoconf.h是供c源码使用(宏开关),而auto.conf被顶层Makefile包含,供子目录Makefile...Makefile编译成xxx.ko模块文件 如果auto.conf中CONFIG_xxx=n,对应的源码文件不会被makefile编译; 接下来分析Makefile来找到内核编译过程,明白make uImage
领取专属 10元无门槛券
手把手带您无忧上云