Устранение проблем с загрузкой
(Новая страница: «Category:Users») |
|||
| Строка 1: | Строка 1: | ||
| − | [[Category: | + | [[Category:Пользователи]] |
| + | |||
| + | === Устранение проблем, связанных с загрузкой === | ||
| + | Необходимо меню загрузки [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 | ||
| + | Данная команда выполнит всю процедуру запуска (точнее, ее интересную часть) и будет предоставлена возможность просмотреть все сообщения, сопровождающие загрузку. | ||
| + | Помните, что сторожевое устройство перезагрузит машину через некоторое время. | ||
| + | |||
| + | === Сообщение о проблемах, связанных с загрузкой === | ||
| + | |||
| + | При сообщении о проблемах с загрузкой/перезагрузкой используйте ниже предложенную информацию, которая поможет при отладке: | ||
| + | |||
| + | * Результат выполнения <code>/proc/bootreason</code> | ||
| + | * Результат выполнения <code>/var/lib/dsme/stats/lifeguard_resets</code> | ||
| + | * Приложение, которое было запущено, когда произошла перезагрузка | ||
| + | * Состояние устройства – ожидание в закрытом виде, ожидание в открытом виде, выключено, используется и так далее | ||
| + | * Режим устройства – режим исследования и разработки или рабочий режим | ||
| + | * Выполните <code>dmesg</code> после успешной загрузки. Станет понятно, завершает ли OOM-подавитель (подавление из-за нехватки памяти) процессы. | ||
| + | |||
| + | У <code>/proc/bootreason</code> могут быть следующие значения: | ||
| + | pwr_key нажали кнопку Питание, чтобы включить устройство | ||
| + | 32wd_to Сброс сторожевого устройства – что-то потребляло слишком большое количество ресурсов центрального процессора, что вызвало сброс сторожевого устройства или произошел сброс ядра | ||
| + | sw_rst Сброс программного обеспечения (критическое системное приложение аварийно завершается или прерывается OOM-подавителем ядра) | ||
| + | rtc_alarm Устройство аварийной сигнализации запустило устройство | ||
| + | |||
| + | Необходимо инсталлировать 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> - номер файла. | ||
| + | |||
| + | Наконец, включайте проблемные приложения в архив [http://bugs.maemo.org ошибки]. | ||
| + | |||
| + | |||
| + | [[Category:Пользователи]] | ||
| + | |||
| + | [[Category:Продвинутые]] | ||
Версия 12:23, 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 - номер файла.
Наконец, включайте проблемные приложения в архив ошибки.