Debian 또는 Ubuntu Linux의 커널 업그레이드

Debian 또는 Ubuntu Linux의 커널 업그레이드

즉, 다음 명령이 실패하는 경우가 있습니다.

$ sudo reboot

컴퓨터가 멈춰 다시 시작해야 하기 전 터미널에 표시된 마지막 메시지:

Restarting system.

다음 시작 매개변수를 시도했습니다 reboot=(원천) 성공하지 못했습니다:

  • 따뜻한
  • 추운
  • 세 번
  • 통신 인터페이스
  • EFI

해당 페이지의 조언에 따라 다음 명령을 실행하여 변경 사항이 적용되었는지 확인했습니다.

$ 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 시스템에서 맞춤형 Linux를 실행 중입니다.2.6.35. 게다가 X 서버가 설치되어 있지 않아 데스크탑 환경도 없습니다.

답변1

여러 가지 방법이 있습니다:

sudo 다시 시작
sudo 초기화 6
sudo /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

(이것은 아마도 불필요할 것입니다; 그것은 나에게 효과적입니다). 쉘 스크립트에서 사용하고 있습니다. 내에서 실행할 필요는 없지만 rootX 세션 내(예: 터미널)에서 실행해야 합니다. 이 주제에 대한 자세한 내용은 다음에서 확인할 수 있습니다.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

둘째, 커널 디버깅에 "남자답게" 작업하는 방법이 있습니다. Google은 여러분의 친구이지만 이것은 좋은 초기 개요와 몇 가지 검색어를 제공합니다.http://www.elinux.org/DebuggingTheLinuxKernelUsingGdb

아마도 흡수해야 할 새로운 개념이 많이 있을 것입니다. 이 비디오는 프로세스에 대한 높은 수준의 보기를 제공합니다.http://www.youtube.com/watch?v=q07VvWS1qBc

http://www.wikihow.com/Solve-a-Problem어려운 문제 해결에 대한 훌륭한 조언을 제공합니다. GL!

답변3

탐구/검토할 몇 가지 사항은 다음과 같습니다. 나는ARM Tegra에 대한 커밋 로그 커널 버전 2.6.39에 대한 커밋 로그:

Simon Glass (1):
ARM: tegra: 재부팅 시 중단 문제 수정

내 생각에 이것은 Simon이 제출한 다음과 같은 패치인 것 같습니다.[패치 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로 백포트하거나 최신 커널로 업그레이드해야 할 것 같습니다.

인용하다

답변4

실제로는 있어요오래된 복원내 특별한 질문에 대해. 너무 많은 시간을 낭비하기 전에 그것을 (마술처럼) 알았 더라면 좋았을 텐데요 .

참고로 이 시스템은VAB-800, Freescale i.MX537 Cortex-A8 SoC를 사용합니다.

관련 정보