启动内核,运行到Freeing init memory: 120K卡死的解决方法

本文介绍了解决启动内核时出现的卡死问题,该问题出现在Freeing init memory: 120K阶段。通过使用相同的交叉编译器重新编译busybox并制作文件系统,成功解决了守护进程init未正确启动的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

启动内核,运行到Freeing init memory: 120K卡死,具体如下:

......

yaffs: dev is 32505858 name is "mtdblock2"

yaffs: passed flags ""

yaffs: Attempting MTD mount on 31.2, "mtdblock2"

yaffs: auto selecting yaffs2

VFS: Mounted root (yaffs filesystem).

Freeing init memory: 120K

---------------------------------------------------------------------------------------------------

解决方法:

原因是守护进程init没有运行起来,或者运行错误。使用与编译kernel相同的交叉编译器来编译busybox,然后重新制作文件系统,内核完美启动如下:

yaffs: dev is 32505858 name is "mtdblock2"

yaffs: passed flags ""

yaffs: Attempting MTD mount on 31.2, "mtdblock2"

yaffs: auto selecting yaffs2

VFS: Mounted root (yaffs filesystem).

Freeing init memory: 120K

init started: BusyBox v1.7.0 (2010-11-26 18:26:44 CST)

starting pid 731, tty '': '/etc/init.d/rcS'

mount: mounting tmpfs on /dev failed: Invalid argument

Please press Enter to activate this console.

starting pid 736, tty '/dev/console': '/bin/sh'

#

# ls

bin etc linuxrc proc sys

dev lib lost+found sbin usr

#









<think>好的,我现在需要帮助用户分析Linux内核启动日志中关于VFS、devtmpfs和systemd的信息。首先,我应该回忆一下这些组件在内核启动过程中的作用和相关日志的常见信息。 用户提到的是内核启动日志中的三个关键部分:VFS、devtmpfs和systemd。首先,VFS(虚拟文件系统)是Linux内核中的一个抽象层,负责处理所有文件系统相关的操作。在内核启动时,VFS的初始化信息通常会在日志中出现,比如挂载根文件系统、识别文件系统类型等。例如,日志中可能会有类似“VFS: Mounted root (ext4 filesystem) on device”这样的条目。 接下来是devtmpfs,这是一个用于设备管理的临时文件系统。它在内核启动早期被挂载,通常位于/dev目录,允许内核在用户空间初始化之前创建设备节点。相关的日志可能包括“devtmpfs: initialized”或者“devtmpfs: mounted”这样的信息,表明devtmpfs已经成功初始化和挂载。 然后是systemd,这是现代Linux发行版中常用的初始化系统和服务管理器。在内核启动完成后,systemd会接管启动过程,加载服务单元,挂载文件系统等。启动日志中可能会记录systemd的版本号,初始化步骤,比如“Starting systemd version 249”,以及各个服务的启动状态,如“Started User Manager for UID 1000”。 用户的需求是分析这些部分的日志,因此我需要考虑如何定位和解读这些信息。通常,内核启动日志可以通过dmesg命令查看,或者查看/var/log/boot.log等日志文件。在分析时,需要注意时间戳、各个子系统初始化的顺序以及可能的错误信息。 还需要注意不同发行版的日志管理可能不同,比如使用systemd的发行版会使用journalctl来查看日志,而传统的系统可能使用syslog。用户可能需要结合具体的命令和日志位置来提取相关信息。 此外,用户可能遇到问题,比如VFS无法挂载根文件系统,devtmpfs挂载失败,或者systemd启动服务时出现错误。需要指导用户如何根据日志中的错误信息进行故障排除,例如检查文件系统类型是否正确,设备是否存在,或者服务配置文件是否有误。 最后,生成相关问题时要围绕这三个主题,可能涉及日志分析方法、常见错误解决、组件功能等,确保问题对用户进一步学习有帮助。</think>### Linux内核启动日志分析指南 分析内核启动日志时,建议使用`dmesg --level=emerg,alert,crit,err,warn`筛选关键信息,重点关注以下三个模块的日志特征: #### 一、VFS相关日志分析 1. 根文件系统挂载日志 ```bash VFS: Mounted root (ext4 filesystem) readonly on device 8:2 ``` 该日志表明VFS成功挂载了ext4格式的根文件系统,设备号为8:2(即/dev/sda2)[^1] 2. 文件系统探测过程 ```bash EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) ``` 表示内核成功识别并应用了ext4文件系统的默认挂载选项 #### 二、devtmpfs日志分析 1. 初始化记录 ```bash devtmpfs: initialized ``` 表示内核已成功初始化devtmpfs子系统,此时已可创建设备节点 2. 自动挂载日志 ```bash devtmpfs: mounted ``` 表示内核自动将devtmpfs挂载到/dev目录,通常出现在系统启动早期阶段 #### 三、systemd初始化日志 1. 接管系统控制权 ```bash systemd[1]: systemd 245.4-4ubuntu3.21 running in system mode ``` 显示systemd版本号及运行模式,此时systemd开始接管后续启动流程 2. 关键服务启动顺序 ```bash systemd[1]: Mounting /sys... systemd[1]: Starting Create list of required static device nodes... systemd[1]: Started udev Kernel Device Manager ``` 展示systemd初始化过程中挂载虚拟文件系统、创建设备节点等关键步骤 #### 典型错误分析案例 ```bash VFS: Cannot open root device "sda2" or unknown-block(0,0) ``` 该错误表示内核无法找到指定的根设备,可能原因包括: 1. 设备驱动未正确加载 2. 内核参数中的root=指定错误 3. 文件系统损坏
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值