Android14之解决:failed to open /dev/block/bootdevice/by-name/misc: No such file or directory(一百七十九)

本文介绍了在刷入自编内核镜像时遇到的fastbootd模式下misc分区错误,通过检查配置文件和发现vendor_boot.img大小差异,作者提出了解决方案:对比并合并缺失部分以修复问题。

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

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:在刷入自己的编译的内核镜像时,进入fastbootd模式时,出现以上以下报错:

2.报错

E:failed to open /dev/block/bootdevice/by-name/misc: No such file or directory

3.解题思路

<1>.首先查看misc分区代码配置

  • out/target/product/redfin/recovery/root/system/etc/recovery.fstab
<src>                                                  <mnt_point>            <type>  <mnt_flags and options>                              <fs_mgr_flags>
/dev/block/bootdevice/by-name/boot                      /boot                  emmc    defaults                                             slotselect,avb=boot,first_stage_mount
system                                                  /system                ext4    ro,barrier=1                                         wait,slotselect,avb=vbmeta_system,logical,first_stage_mount
system_ext                                              /system_ext            ext4    ro,barrier=1                                         wait,slotselect,avb=vbmeta_system,logical,first_stage_mount
vendor                                                  /vendor                ext4    ro,barrier=1                                         wait,slotselect,avb=vbmeta,logical,first_stage_mount
product                                                 /product               ext4    ro,barrier=1                                         wait,slotselect,avb,logical,first_stage_mount
/dev/block/by-name/metadata                             /metadata              ext4    noatime,nosuid,nodev,discard,data=journal,commit=1   wait,formattable,first_stage_mount,check,metadata_csum
/dev/block/bootdevice/by-name/modem                     /vendor/firmware_mnt   vfat    ro,shortname=lower,uid=0,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect
/dev/block/bootdevice/by-name/misc                      /misc                  emmc    defaults                                             defaults
/dev/block/bootdevice/by-name/userdata                  /data                  f2fs    noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier,inlinecrypt       latemount,wait,check,quota,formattable,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,reservedsize=128M,sysfs_path=/dev/sys/block/bootdevice,keydirectory=/metadata/vold/metadata_encryption,checkpoint=fs
/devices/platform/soc/a600000.ssusb/a600000.dwc3*       auto                   vfat    defaults                                             voldmanaged=usb:auto
/dev/block/zram0                                        none                   swap    defaults                                             zramsize=2147483648,max_comp_streams=8,zram_backingdev_size=512M

可以看出misc分区已经配置:

/dev/block/bootdevice/by-name/misc /misc emmc defaults defaults

<2>查看:/dev/block/bootdevice/by-name/misc

# ls /dev/block/bootdevice/by-name/misc -al                                                                                                                                                                                  
 /dev/block/bootdevice/by-name/misc -> /dev/block/sda3

/dev/block/bootdevice/by-name/misc实际是一个软链接,它真正的实体是 /dev/block/sda3。

4.解决方案

<1>.编译的vendor_boot.img大小

# ls -lh vendor_boot.img
36M vendor_boot.img

只有36M。

<2>.出厂vendor_boot.img大小

# ls -lh vendor_boot.img
96M vendor_boot.img

发现它是96M,所以自己编译的vendor_boot.img肯定缺东西。

<3>.解决

将出厂和编译的vendor_boot.img解压后,使用比较工具比较下,把编译的vendor_boot.img缺少的部分拷贝进入,然后再打包镜像即可。

<think>好的,我现在要解决用户遇到的hwclock无法打开/dev/misc/rtc设备文件的问题。首先,我需要了解这个错误的具体原因。用户在使用hwclock命令时提示“cannot open /dev/misc/rtc: No such file or directory”,这意味着系统找不到这个设备文件。接下来,我需要考虑可能的原因和解决方法。 首先,检查设备文件是否存在。用户可能需要使用ls命令查看/dev/misc/rtc是否存在。如果不存在,可能需要手动创建或者检查内核配置。另外,权限问题也是一个常见原因,即用户是否有访问该设备的权限,可能需要使用chmod或chown调整权限。 然后,考虑内核模块是否加载。RTC硬件通常需要对应的内核模块,比如rtc_armada、rtc_ds1307等,用户可以使用lsmod检查模块是否加载,如果没有,可以用modprobe加载相应模块。 接下来,设备树配置是否正确。特别是在嵌入式系统中,比如Zynq平台,设备树配置错误可能导致RTC设备未正确生成。用户需要检查设备树源文件(dts)中是否启用了RTC节点,并确保编译后的设备树正确加载。 另外,硬件连接问题也可能导致此错误。如果RTC是外部硬件,需要检查物理连接是否正常,电源是否接通,以及是否被系统识别。使用dmesg | grep rtc可以查看内核日志中是否有相关错误信息。 还可能涉及系统服务冲突,比如其他服务占用了RTC设备,或者hwclock的版本与系统不兼容。此外,某些系统可能使用不同的设备路径,如/dev/rtc0,需要检查是否存在其他RTC设备文件,并调整hwclock命令的参数。 最后,用户可能需要更新内核或hwclock工具,或者参考特定平台的文档,比如Petalinux的配置步骤,确保RTC支持被正确启用。 总结下来,解决步骤可能包括:检查设备文件存在性,调整权限,加载内核模块,验证设备树配置,检查硬件连接,查看内核日志,处理服务冲突,使用替代设备路径,更新软件等。用户需要逐步排查这些可能性,直到问题解决。</think>针对$hwclock$无法打开$/dev/misc/rtc$设备文件的问题,请按照以下步骤排查: ### 一、设备文件检查 1. **验证设备路径是否存在** 执行命令: ```bash ls -l /dev/misc/rtc ``` 若输出"No such file",需检查: - **内核配置**:确认编译内核时启用了$CONFIG_RTC_DRV_{YOUR_DEVICE}$选项,例如$CONFIG_RTC_DRV_DS1307$[^1] - **手动创建设备节点**(临时方案): ```bash mknod /dev/misc/rtc c 10 135 ``` 2. **权限验证** 使用命令验证设备文件权限: ```bash chmod 664 /dev/misc/rtc && chown root:rtc /dev/misc/rtc ``` ### 二、内核驱动排查 ```bash # 查看已加载的RTC模块 lsmod | grep rtc # 典型输出示例: rtc_armada 16384 0 rtc_core 32768 1 rtc_armada ``` **驱动加载方法**: ```bash modprobe rtc_armada # 以Marvell平台为例 ``` ### 三、设备树配置验证(嵌入式系统关键) 以Zynq平台为例,设备树需包含: ```dts rtc@0 { compatible = "dallas,ds1339"; reg = <0x68>; }; ``` 需重新编译设备树并部署到目标系统[^2] ### 四、硬件连接检查 通过I2C工具验证硬件识别: ```bash i2cdetect -y 0 # 检测I2C总线0上的设备 ``` 预期应显示RTC芯片的I2C地址(如0x68) ### 五、替代解决方案 ```bash # 尝试使用通用RTC接口 hwclock -r -f /dev/rtc0 ``` ### 六、系统服务冲突排查 停止可能占用RTC的服务: ```bash systemctl stop chronyd systemctl stop ntp ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android系统攻城狮

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值