【发布时间】:2011-07-25 06:31:29
【问题描述】:
查看android source for the reboot command,我们发现以下行:
__reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, \
LINUX_REBOOT_CMD_RESTART2, argv[optind]);
这是使用特定命令重新启动系统的标准 Linux 系统调用,请参阅Unix System Call Reboot。
在 Android 中,此命令用于告诉引导加载程序以恢复模式启动内核或进入引导加载程序中的快速启动模式。
我的问题是:引导加载程序如何获取命令?这个功能是否在 U-Boot 中实现?(我无法通过 Google 或 U-Boot 源搜索找到它。)
此外,这似乎并非特定于 Android,而是 Linux 执行“使用命令重启”的方式。有关如何在 Linux 中“通常”处理/使用的任何信息?
【问题讨论】:
-
我认为他们这里所说的命令是用来重启机器的,而不是机器重启后会运行的命令。但是我不知道,这是我第一次看到这个。
-
@Carlos:当引导加载程序被要求“重新启动进入恢复模式”时,它需要使用特殊的恢复根文件系统启动 linux 内核。这发生在 OTA 更新期间,或者当您执行“adb reboot recovery”或类似操作时。所以这个重启到恢复模式的请求必须在重启后从正在运行的 linux 内核传递给引导加载程序。
-
嗯,是的,你是对的。通过
setenv bootargs something查看相关问题how does one tell -uboot to tell the linux kernel which runlevel to boot to 可能是相同的方式@ -
是的,U-boot 可以为 Linux 内核提供选项,这很简单(只需使用内核命令行。)这里发生的是内核正在提供选项(即命令)引导加载程序,在重新启动时。我需要了解它是如何工作的?
-
我今天很糟糕。我想我要喝杯咖啡了。
标签: android linux linux-kernel bootloader u-boot