也就是说,以下命令有时会失败:
$ sudo reboot
终端上的最后一条消息,之后机器卡住,需要重新启动:
Restarting system.
我尝试了以下reboot=
启动参数(来源) 没有成功:
- 温暖的
- 寒冷的
- 三倍
- 交流接口
- 力量
- 电喷
根据该页面上的建议,我通过运行以下命令进行验证,以确保更改生效:
$ cat /proc/cmdline
如果它可能有帮助,这里是内核模块的列表:
$ lsmod
Module Size Used by
ppp_generic 16680 0
slhc 4055 1 ppp_generic
ath9k_htc 50685 0
mac80211 231186 1 ath9k_htc
ath9k_common 1720 1 ath9k_htc
ath9k_hw 338115 2 ath9k_htc,ath9k_common
ath 13793 3 ath9k_htc,ath9k_common,ath9k_hw
cfg80211 158343 3 ath9k_htc,mac80211,ath
compat 29364 5 ath9k_htc,mac80211,ath9k_common,ath9k_hw,cfg80211
这是在 ARM 系统上运行定制的 Linux2.6.35。另外,没有安装 X 服务器,因此没有桌面环境。
答案1
有以下几种方法:
须藤重新启动
须藤初始化6
须藤/sbin/重新启动
您可能也想尝试一下
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger
如果您有与 freedesktop 兼容的会话管理器,则可以使用 DBus 从 X 会话内部调用重新启动。命令如下:
dbus-send --system --dest=org.freedesktop.Hal --type=method_call \
--print-reply /org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Reboot int32:0
(这可能是不必要的;对我有用)。我在 shell 脚本中使用它。您不需要从 运行它root
,但需要从 X 会话内部运行它(例如在终端中)。您可以在以下位置找到有关此主题的更多信息https://wiki.ubuntu.com/DebuggingGNOMEPowerManager
如果仍然遇到问题,请显示该命令的输出last reboot
,该输出将显示自 Linux 下创建日志文件以来所有重新启动的日志,输入:
# 最后一次重启
我认为问题可能是由于这个漏洞和这个漏洞。尝试按照以下方法升级内核:
Debian 或 Ubuntu Linux 中的内核升级
使用apt-get
命令。首先找到你的内核版本:
$ uname -r
接下来查找可用的内核映像:
$ apt-cache search linux-image
现在通过显式指定版本号来安装内核:
# apt-get install linux-image-x.x.x-xx
或者
$ sudo apt-get install linux-image-x.x.x-xx
更新:
执行此操作后,您还可以尝试设置reboot=pci
内核引导标志。要使更改永久生效,请将rebooot=pci
标志添加到GRUB_CMDLINE_LINUX
的行中/etc/default/grub
。欲了解更多信息,请查看此关联和这个关联
答案2
它可能是时候考虑勇敢地学习一些内核调试了。
首先,找到与 gdb-remote 兼容的 JTAG 探针。您使用的是 ARM,因此您应该有很多选择,例如参见http://openocd.sourceforge.net/doc/html/Debug-Adapter-Hardware.html
其次,还有一些工作……在内核调试方面“男子气概”。谷歌是你的朋友,但这个提供了很好的初步概述和一些搜索术语:http://www.elinux.org/DebuggingTheLinuxKernelUsingGdb
你可能有很多新概念需要吸收。该视频提供了该过程的高级视图:http://www.youtube.com/watch?v=q07VvWS1qBc
http://www.wikihow.com/Solve-a-Problem对解决棘手问题有很好的建议。 GL!
答案3
这里有一些需要探索/检查的内容。我在一个内核版本 2.6.39 的 ARM Tegra 提交日志的提交日志:
Simon Glass (1):
ARM:tegra:修复重启时挂起的问题
我认为这是西蒙提交的补丁,标题为:[补丁 7/7] ARM:tegra:修复重启时挂起的问题,指的是:
From: Simon Glass <sjg@...>
We cannot use writel() here since the resulting wmb() calls l2x0_cache_sync()
which uses a spinlock and L1 cache may be off at this point.
Signed-off-by: Simon Glass <sjg@...>
Signed-off-by: Olof Johansson <olof@...>
---
arch/arm/mach-tegra/common.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-tegra/common.c b/arch/arm/mach-tegra/common.c
index 34559d1..b1ecf60 100644
--- a/arch/arm/mach-tegra/common.c
+++ b/arch/arm/mach-tegra/common.c
<at> <at> -41,7 +41,7 <at> <at> void tegra_assert_system_reset(char mode, const char *cmd)
reg = readl(reset);
reg |= 0x04;
- writel(reg, reset);
+ writel_relaxed(reg, reset);
}
static __initdata struct tegra_clk_init_table common_clk_init_table[] = {
--
我认为您要么需要将此更改向后移植到 2.6.35,要么升级到较新的内核。