У меня проблема с последовательностью загрузки в моем Raspberry Pi. Моя цель - запустить браузер Minimal Kiosk (kweb) в последовательности загрузки. Для этого я внес изменения в скрипт /etc/rc.local:

(...)
sh /home/lustron/Lustron/starter.sh   &
sleep 5s
python /home/lustron/Lustron/sensor5.py  &


exit 0

и скрипт starter.sh:

#!/bin/bash

xinit /usr/bin/kweb -KHCUA+-zbhrqfpoklgtjneduwxy file:///var/www/index.php &

К сожалению, когда мой RPi загружается, он заканчивается в командной строке пользователя Lustron, как будто он вообще не использует файл /etc/rc.local. Когда я выполняю команду sudo sh /etc/rc/local , скрипт загружается, и я вижу, что xserver запускается, но есть только белое "окно?"на 3/4 части экрана. Единственная ошибка, которую я вижу: FATAL: module g2d_23 not found . Другой скрипт (sensor5.py) работает нормально.

В чем здесь проблема? Очевидно, здесь есть две проблемы: - xinit не инициализирован должным образом - /etc/rc.local не выполняется при загрузке

2 ответа2

1

Убедитесь, что /etc/rc.local является исполняемым (chmod a+rx). Вы можете добавить в начало строку для перенаправления ошибок в файл журнала:

exec 2>>/tmp/rc.errors

В Linux есть несколько виртуальных терминалов. Только 1 может отображаться на экране одновременно. Сервер X11 тоже использует VT. Файл /etc/inittab содержит строку для каждого VT, например:

2:23:respawn:/sbin/getty 38400 tty2

Вы можете подавить их позже, когда все работает. Вы можете переключаться между VT с клавиатуры с помощью alt F7, например, чтобы перейти к VT 7 (tty7), который обычно остается единственным, который не используется getty (из inittab), и таким образом тот, на котором будет работать сервер X11.

Вы также можете использовать команду chvt (как root) для изменения VT.

1

Я использовал решение от: http://blogs.wcode.org/2013/09/howto-boot-your-raspberry-pi-into-a-fullscreen-browser-kiosk/

Я добавил следующее в /etc/rc.local:

if [ -f /boot/xinitrc ]; then
    ln -fs /boot/xinitrc /home/pi/.xinitrc;
    su - pi -c 'startx' &
fi

и в /boot /xinitrc:

#!/bin/sh
while true; do

    # Clean up previously running apps, gracefully at first then harshly
    killall -TERM chromium 2>/dev/null;
    killall -TERM matchbox-window-manager 2>/dev/null;
    sleep 2;
    killall -9 chromium 2>/dev/null;
    killall -9 matchbox-window-manager 2>/dev/null;

    # Clean out existing profile information
    rm -rf /home/pi/.cache;
    rm -rf /home/pi/.config;
    rm -rf /home/pi/.pki;

    # Generate the bare minimum to keep Chromium happy!
    mkdir -p /home/pi/.config/chromium/Default
    sqlite3 /home/pi/.config/chromium/Default/Web\ Data "CREATE TABLE meta(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY, value LONGVARCHAR); INSERT INTO meta VALUES('version','46'); CREATE TABLE keywords (foo INTEGER);";

    # Disable DPMS / Screen blanking
    xset -dpms
    xset s off

    # Reset the framebuffer's colour-depth
    fbset -depth $( cat /sys/module/*fb*/parameters/fbdepth );

    # Hide the cursor (move it to the bottom-right, comment out if you want mouse interaction)
    xwit -root -warp $( cat /sys/module/*fb*/parameters/fbwidth ) $( cat /sys/module/*fb*/parameters/fbheight )

    # Start the window manager (remove "-use_cursor no" if you actually want mouse interaction)
    matchbox-window-manager -use_titlebar no -use_cursor no &

    # Start the browser (See http://peter.sh/experiments/chromium-command-line-switches/)
    chromium  --app=http://URL.of.your/choice.html

done;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .