Устранение проблем с загрузкой
(→Сообщение о проблемах, связанных с загрузкой) |
(→Устранение проблем, связанных с загрузкой) |
||
Строка 3: | Строка 3: | ||
=== Устранение проблем, связанных с загрузкой === | === Устранение проблем, связанных с загрузкой === | ||
Необходимо меню загрузки [1] с инсталлированным сервером telnet или ssh. Предположим, что используется сервер telnet: | Необходимо меню загрузки [1] с инсталлированным сервером telnet или ssh. Предположим, что используется сервер telnet: | ||
− | + | * Загрузите Nxx0 и запустите сервер telnet/ssh | |
− | + | * Подсоедините USB кабель к компьютеру | |
− | + | * На компьютере с операционной системой 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-адрес в той же подсети для компьютера) | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | 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 | ||
− | |||
− | |||
− | |||
− | |||
Данная команда выполнит всю процедуру запуска (точнее, ее интересную часть) и будет предоставлена возможность просмотреть все сообщения, сопровождающие загрузку. | Данная команда выполнит всю процедуру запуска (точнее, ее интересную часть) и будет предоставлена возможность просмотреть все сообщения, сопровождающие загрузку. | ||
− | Помните, что сторожевое устройство перезагрузит машину через некоторое время. | + | Помните, что сторожевое устройство перезагрузит машину через некоторое время. |
=== Сообщение о проблемах, связанных с загрузкой === | === Сообщение о проблемах, связанных с загрузкой === |
Версия 12:47, 16 декабря 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
- номер файла.
Наконец, включите проблемные приложения в архив ошибки.