Устранение проблем с загрузкой

Материал из FRUCT Maemo wiki (Russian)
(Различия между версиями)
Перейти к: навигация, поиск
({{PAGENAME}})
 
(не показаны 7 промежуточных версий 2 участников)
Строка 1: Строка 1:
 
[[Category:Пользователи]]
 
[[Category:Пользователи]]
  
=== Устранение проблем, связанных с загрузкой ===
+
=={{PAGENAME}}==
 +
 
 
Необходимо меню загрузки [1] с инсталлированным сервером telnet или ssh. Предположим, что используется сервер telnet:  
 
Необходимо меню загрузки [1] с инсталлированным сервером telnet или ssh. Предположим, что используется сервер telnet:  
Загрузите Nxx0 и запустите сервер telnet/ssh   
+
* Загрузите Nxx0 и запустите сервер telnet/ssh   
Подсоедините USB кабель к компьютеру  
+
* Подсоедините USB кабель к компьютеру  
На компьютере с операционной системой Linux выполните:  
+
* На компьютере с операционной системой Linux выполните:  
modprobe usbnet
+
 
ifconfig usb0 up
+
modprobe usbnet
ip addr add dev usb0 192.168.10.2/24
+
ifconfig usb0 up
telnet 192.168.10.1
+
ip addr add dev usb0 192.168.10.2/24
 +
telnet 192.168.10.1
 +
 
 
(где 192.168.10.1 – это IP-адрес устройства Nxx0 и 192.168.10.2 – IP-адрес в той же подсети для компьютера)  
 
(где 192.168.10.1 – это IP-адрес устройства Nxx0 и 192.168.10.2 – IP-адрес в той же подсети для компьютера)  
• Соединение установлено. Загрузите требуемые модули для получения доступа к корневому разделу диска (не все из них необходимы):
 
insmod /lib/modules/2.6.21-omap1/jbd.ko
 
insmod /lib/modules/2.6.21-omap1/mbcache.ko
 
insmod /lib/modules/2.6.21-omap1/ext2.ko
 
insmod /lib/modules/2.6.21-omap1/ext3.ko
 
• Установите корневой раздел диска (предположим, это /dev/mmcblk0p2):
 
mount /dev/mmcblk0p2 /mnt/new_root -t ext3 -o noatime
 
• Теперь запустите:
 
cd /mnt/new_root
 
mount -obind /tmp /mnt/new_root/tmp
 
pivot_root . mnt/initfs
 
  
export OSSO_VERSION=$(cat /etc/osso_software_version)
+
* Соединение установлено. Загрузите требуемые модули для получения доступа к корневому разделу диска (не все из них необходимы):
 +
 
 +
insmod /lib/modules/2.6.21-omap1/jbd.ko
 +
insmod /lib/modules/2.6.21-omap1/mbcache.ko
 +
insmod /lib/modules/2.6.21-omap1/ext2.ko
 +
insmod /lib/modules/2.6.21-omap1/ext3.ko
 +
 
 +
* Установите корневой раздел диска (предположим, это /dev/mmcblk0p2):
 +
 +
mount /dev/mmcblk0p2 /mnt/new_root -t ext3 -o noatime
 +
 
 +
* Теперь запустите:
 +
 
 +
cd /mnt/new_root
 +
mount -obind /tmp /mnt/new_root/tmp
 +
pivot_root . mnt/initfs
 +
 
 +
export OSSO_VERSION=$(cat /etc/osso_software_version)
 +
 
 +
* Все готово для загрузки вручную:
 +
 
 +
cd /etc/init.d
 +
./rcS
 +
./rc 2
  
• Все готово для загрузки вручную:
 
cd /etc/init.d
 
./rcS
 
./rc 2
 
 
Данная команда выполнит всю процедуру запуска (точнее, ее интересную часть) и будет предоставлена возможность просмотреть все сообщения, сопровождающие загрузку.  
 
Данная команда выполнит всю процедуру запуска (точнее, ее интересную часть) и будет предоставлена возможность просмотреть все сообщения, сопровождающие загрузку.  
Помните, что сторожевое устройство перезагрузит машину через некоторое время.
+
Помните, что сторожевое устройство перезагрузит машину через некоторое время.
  
 
=== Сообщение о проблемах, связанных с загрузкой ===
 
=== Сообщение о проблемах, связанных с загрузкой ===
Строка 44: Строка 55:
  
 
У <code>/proc/bootreason</code> могут быть следующие значения:
 
У <code>/proc/bootreason</code> могут быть следующие значения:
  pwr_key нажали кнопку Питание, чтобы включить устройство  
+
  pwr_key Нажали кнопку Питание, чтобы включить устройство  
 
  32wd_to Сброс сторожевого устройства – что-то потребляло слишком большое количество ресурсов центрального процессора, что вызвало сброс сторожевого устройства или произошел сброс ядра
 
  32wd_to Сброс сторожевого устройства – что-то потребляло слишком большое количество ресурсов центрального процессора, что вызвало сброс сторожевого устройства или произошел сброс ядра
 
  sw_rst Сброс программного обеспечения (критическое системное приложение аварийно завершается или прерывается OOM-подавителем ядра)
 
  sw_rst Сброс программного обеспечения (критическое системное приложение аварийно завершается или прерывается OOM-подавителем ядра)
Строка 51: Строка 62:
 
Необходимо инсталлировать XTerm или [[SSH]] для получения доступа к консоли. После этого используйте <code>cat</code> для получения доступа к содержанию конкретного файла.
 
Необходимо инсталлировать XTerm или [[SSH]] для получения доступа к консоли. После этого используйте <code>cat</code> для получения доступа к содержанию конкретного файла.
  
Можно создать каталог <code>core-dumps</code> на внутренней картра флэш-памяти, тогда аварийно завершающиеся приложения будут оставлять в нем файлы ядра. Используйте <code>file core.*</code>, чтобы выяснить имя аварийно завершившегося приложения. Теоретически, можно использовать <code>gdb</code> для трассировки стека, но без символов отладки пользы от этой команды не будет. Если скопировать файлы <code>*.core</code> на компьютер с операционной системой Linux, можно использовать <code>gdb</code>, чтобы увидеть, какая программа аварийно завершилась. Используйте <code>gdp -core core.xxxx</code>, где <code>xxxx</code>  - номер файла.  
+
Можно создать каталог <code>core-dumps</code> на внутренней карте флэш-памяти, тогда аварийно завершающиеся приложения будут оставлять в нем файлы ядра. Используйте <code>file core.*</code>, чтобы выяснить имя аварийно завершившегося приложения. Теоретически, можно использовать <code>gdb</code> для трассировки стека, но без символов отладки пользы от этой команды не будет. Если скопировать файлы <code>*.core</code> на компьютер с операционной системой Linux, можно использовать <code>gdb</code>, чтобы увидеть, какая программа аварийно завершилась. Используйте <code>gdp -core core.xxxx</code>, где <code>xxxx</code>  - номер файла.  
  
Наконец, включайте проблемные приложения в архив [http://bugs.maemo.org ошибки].
+
Наконец, включите проблемные приложения в архив [http://bugs.maemo.org ошибки].
  
  

Текущая версия на 21:48, 28 декабря 2009


[править] Устранение проблем с загрузкой

Необходимо меню загрузки [1] с инсталлированным сервером telnet или ssh. Предположим, что используется сервер telnet:

  • Загрузите Nxx0 и запустите сервер telnet/ssh
  • Подсоедините USB кабель к компьютеру
  • На компьютере с операционной системой Linux выполните:
modprobe usbnet
ifconfig usb0 up
ip addr add dev usb0 192.168.10.2/24
telnet 192.168.10.1

(где 192.168.10.1 – это IP-адрес устройства Nxx0 и 192.168.10.2 – IP-адрес в той же подсети для компьютера)

  • Соединение установлено. Загрузите требуемые модули для получения доступа к корневому разделу диска (не все из них необходимы):
insmod /lib/modules/2.6.21-omap1/jbd.ko 
insmod /lib/modules/2.6.21-omap1/mbcache.ko 
insmod /lib/modules/2.6.21-omap1/ext2.ko 
insmod /lib/modules/2.6.21-omap1/ext3.ko
  • Установите корневой раздел диска (предположим, это /dev/mmcblk0p2):
mount /dev/mmcblk0p2 /mnt/new_root -t ext3 -o noatime
  • Теперь запустите:
cd /mnt/new_root
mount -obind /tmp /mnt/new_root/tmp
pivot_root . mnt/initfs
export OSSO_VERSION=$(cat /etc/osso_software_version)
  • Все готово для загрузки вручную:
cd /etc/init.d
./rcS
./rc 2

Данная команда выполнит всю процедуру запуска (точнее, ее интересную часть) и будет предоставлена возможность просмотреть все сообщения, сопровождающие загрузку. Помните, что сторожевое устройство перезагрузит машину через некоторое время.

[править] Сообщение о проблемах, связанных с загрузкой

При сообщении о проблемах с загрузкой/перезагрузкой используйте ниже предложенную информацию, которая поможет при отладке:

  • Результат выполнения /proc/bootreason
  • Результат выполнения /var/lib/dsme/stats/lifeguard_resets
  • Приложение, которое было запущено, когда произошла перезагрузка
  • Состояние устройства – ожидание в закрытом виде, ожидание в открытом виде, выключено, используется и так далее
  • Режим устройства – режим исследования и разработки или рабочий режим
  • Выполните dmesg после успешной загрузки. Станет понятно, завершает ли OOM-подавитель (подавление из-за нехватки памяти) процессы.

У /proc/bootreason могут быть следующие значения:

pwr_key 	Нажали кнопку Питание, чтобы включить устройство 
32wd_to 	Сброс сторожевого устройства – что-то потребляло слишком большое количество ресурсов центрального процессора, что вызвало сброс сторожевого устройства или произошел сброс ядра
sw_rst 	Сброс программного обеспечения (критическое системное приложение аварийно завершается или прерывается OOM-подавителем ядра)
rtc_alarm 	Устройство аварийной сигнализации запустило устройство 

Необходимо инсталлировать XTerm или SSH для получения доступа к консоли. После этого используйте cat для получения доступа к содержанию конкретного файла.

Можно создать каталог core-dumps на внутренней карте флэш-памяти, тогда аварийно завершающиеся приложения будут оставлять в нем файлы ядра. Используйте file core.*, чтобы выяснить имя аварийно завершившегося приложения. Теоретически, можно использовать gdb для трассировки стека, но без символов отладки пользы от этой команды не будет. Если скопировать файлы *.core на компьютер с операционной системой Linux, можно использовать gdb, чтобы увидеть, какая программа аварийно завершилась. Используйте gdp -core core.xxxx, где xxxx - номер файла.

Наконец, включите проблемные приложения в архив ошибки.

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты