Tự động khởi động ứng dụng X từ hệ thống tệp chỉ đọc


7

Để bảo vệ thẻ SD trong một ứng dụng có thể bị mất điện đột ngột, tôi đang cố gắn root ở chế độ chỉ đọc.

Trong hệ thống làm việc (đọc-ghi), ứng dụng toàn màn hình của chúng tôi được khởi chạy bằng đăng nhập X tự động thực thi tập lệnh khởi động tự động LXDE.

Tôi đã có hệ thống đang chạy, chủ yếu, bởi bảng / etc / fstab được đề xuất trước đó :

proc            /proc            proc    defaults                   0       0
/dev/mmcblk0p1  /boot            vfat    defaults                   0       2
/dev/mmcblk0p2  /                ext4    defaults,noatime           0       1
tmpfs           /tmp             tmpfs   defaults,noatime,mode=1777 0       0
tmpfs           /var/log         tmpfs   defaults,noatime,mode=0755 0       0
tmpfs           /var/lock        tmpfs   defaults,noatime,mode=0755 0       0

Vấn đề của tôi nằm ở việc khởi chạy ứng dụng X. LXDE phàn nàn về việc không thể tạo tệp .xmasterity . Vì vậy, tôi đã thêm các loại bùn sau (lưu ý chế độ truy cập!):

tmpfs           /var/lib/lightdm tmpfs   defaults,noatime,mode=1777 0       0

Thật không may, tự động khởi động vẫn không hoạt động, khiến tôi nhìn chằm chằm vào màn hình chào mừng lightdm. Cố gắng thực sự đăng nhập nhanh chóng đưa tôi trở lại cùng một dấu nhắc, và tò mò các bản ghi dường như im lặng về những gì thất bại có thể.

Nỗ lực tiếp theo của tôi là từ bỏ hoàn toàn trình quản lý cửa sổ thông qua .xsession hoặc .xinitrc tùy chỉnh . Trong khi điều này hoạt động khi thực hiện thủ công startx, nó không tự động đăng nhập cho người dùng pi . Tôi sợ những nỗ lực của tôi để nghịch ngợm với toàn cầu / etc / X11 / xinit / xinitrc cũng gặp rất ít thành công.

Ý tưởng tiếp theo là để thay thế mặc định lightdm-chào mừng kịch bản bằng cách liên kết với các kịch bản tự động bắt đầu trong / usr / share / xgreeters và chỉnh sửa /ect/ligthdm/ligthdm.conf với luân phiên chào mừng người dùngchào mừng phiên cài đặt. Điều này không thành công với thông báo "Kênh liên lạc đóng kín". Có lẽ có một giao thức thuộc loại nào đó mà một người chào đón thích hợp dự kiến ​​sẽ thực hiện.

Bất kỳ đề xuất? Tôi nghi ngờ đây là trò chơi trẻ con với bất kỳ ai có kinh nghiệm thực tế về quản trị Unix nhưng điều đó khiến tôi đập đầu vào tường.


1
bạn đã thành công chưa
Dân gian van Heusden

Không, tôi phải thừa nhận rằng tôi đã không. Cuối cùng tôi đã từ bỏ và chạy hệ thống với một hệ thống tệp đọc-ghi. Bây giờ tôi chỉ tự hỏi sẽ mất bao lâu trước khi tôi nhận được báo cáo lỗi đầu tiên của một hệ thống bị sập ..
doynax

Câu trả lời:


2

Tôi đã làm một số điều. Nó tự động khởi động với kiosk tài khoản

mèo / nhà / kiosk / kioskstartup
#! / thùng / sh
xset -dpms
xset s tắt
sắp đặt &
hộp diêm-window-manager -use_coder no -use_titlebar no &
midori -e Toàn màn hình -a http://127.0.0.1:4079/index.html

mèo /home/kiosk/.profile
# ~ / .profile: được thực thi bởi trình thông dịch lệnh cho shell đăng nhập.
# Tập tin này không được đọc bởi bash (1), nếu ~ / .bash_profile hoặc ~ / .bash_login
# tồn tại.
# see / usr / share / doc / bash / example / startup-files để lấy ví dụ.
# các tệp được đặt trong gói bash-doc.

# ô mặc định được đặt trong / etc / profile; để đặt ô
# cho đăng nhập ssh, cài đặt và định cấu hình gói libpam-umask.
#umask 022

# nếu chạy bash
nếu [-n "$ BASH_VERSION"]; sau đó
    # bao gồm .bashrc nếu nó tồn tại
    nếu [-f "$ HOME / .bashrc"]; sau đó
    . "$ HOME / .bashrc"
    fi
fi

# đặt PATH để nó bao gồm thùng riêng của người dùng nếu nó tồn tại
nếu [-d "$ HOME / thùng"]; sau đó
    PATH = "$ HOME / thùng: $ PATH"
fi
xinit ./kioskstartup

mèo /usr/share/xsimes/matchbox.desktop
[Mục nhập máy tính để bàn]
Mã hóa = UTF-8
Tên = Hộp diêm
Nhận xét = Phiên này đăng nhập bạn vào Hộp diêm
Exec = hộp diêm
Thiết bị đầu cuối = Sai
Biểu tượng =
Loại = Ứng dụng

Ngoài ra, tôi đã sửa đổi các tập lệnh khởi động bị ảnh hưởng để chúng không ghi vào / var, thay vào đó tạo các thư mục / tmp và đặt dữ liệu vào đó ...

    chmod 777 / tmp / chạy
fi

nếu [ ! -d / tmp / bộ đệm]
sau đó
    mkdir / tmp / bộ đệm
    chmod 777 / tmp / bộ đệm
fi

nếu [ ! -d / tmp / bộ đệm / lighttpd]
sau đó
    mkdir / tmp / bộ đệm / lighttpd
    chmod 777 / tmp / bộ đệm / lighttpd
fi
nếu [ ! -d / tmp / log]
sau đó
    mkdir / tmp / log
    chmod 777 / tmp / log
fi
nếu [ ! -d / tmp / log / lighttpd]
sau đó
    mkdir / tmp / log / lighttpd
    chmod 777 / tmp / log / lighttpd
fi

PATH = / sbin: / bin: / usr / sbin: / usr / bin
DAEMON = / usr / sbin / lighttpd
NAME = lighttpd
DESC = "máy chủ web"
PIDFILE = / tmp / run / $ NAME.pid
SCRIPTNAME = / etc / init.d / $ NAME

DAEMON_OPTS = "- f /etc/lighttpd/lighttpd.conf"

kiểm tra -x $ DAEMON | | thoát 0

đặt -e

kiểm tra_syntax ()
{
    $ DAEMON -t $ DAEMON_OPTS> / dev / null || thoát $?
}

if ["$ 1"! = trạng thái]; sau đó
    # hãy chắc chắn có / tmp / run / lighttpd, ngay cả với tmpfs
    # Thư mục được định nghĩa là không ổn định và do đó có thể không tồn tại
    # sau khi khởi động (DPM §9.3.2)
    nếu ! dpkg-statoverride --list / tmp / run / lighttpd> / dev / null 2> & 1; sau đó
        cài đặt -d -o www-data -g www-data -m 0750 "/ tmp / run / lighttpd"
    fi
fi

. / lib / lsb / init-Hàm

trường hợp "$ 1" trong
    khởi đầu)
    kiểm tra
        log_daemon_msg "Bắt đầu $ DESC" $ NAME
        nếu ! bắt đầu-dừng-daemon - bắt đầu --oknodo --quiet \
            --pidfile $ PIDFILE --exec $ DAEMON - $ DAEMON_OPTS
        sau đó
            log_end_msg 1
        khác
            log_end_msg 0
        fi
        ;;
    dừng lại)
        log_daemon_msg "Dừng $ DESC" $ NAME
        nếu start-stop-daemon --stop --retry 30 --oknodo --quiet \
            --pidfile $ PIDFILE --exec $ DAEMON
        sau đó
            rm -f $ PIDFILE
            log_end_msg 0
        khác
            log_end_msg 1
        fi
        ;;
    tải lại | buộc tải lại)
    kiểm tra
        log_daemon_msg "Đang tải lại cấu hình $ DESC" $ NAME
        nếu start-stop-daemon --stop --signal INT --quiet \
            --pidfile $ PIDFILE --exec $ DAEMON
        sau đó
            rm $ PIDFILE
            nếu start-stop-daemon - bắt đầu --quiet \
                --pidfile $ PIDFILE --exec $ DAEMON - $ DAEMON_OPTS; sau đó
                log_end_msg 0
            khác
                log_end_msg 1
            fi
        khác
            log_end_msg 1
        fi
        ;;
    mở lại nhật ký)
        log_daemon_msg "Mở lại nhật ký $ DESC" $ NAME
        nếu start-stop-daemon --stop --signal HUP --oknodo --quiet \
            --pidfile $ PIDFILE --exec $ DAEMON
        sau đó
            log_end_msg 0
        khác
            log_end_msg 1
        fi
        ;;
    khởi động lại)
    kiểm tra
        $ 0 dừng
        $ 0 bắt đầu
        ;;
    trạng thái)
        status_of_proc -p "$ PIDFILE" "$ DAEMON" lighttpd && thoát 0 || thoát $?
        ;;
    *)
        echo "Cách sử dụng: $ SCRIPTNAME {start | stop | restart | tải lại | buộc tải lại | trạng thái}"> & 2
        thoát 1
        ;;
esac

thoát 0

Điều cuối cùng, tôi đã hoàn toàn thoát khỏi LXDE và đi đến trình quản lý cửa sổ ở trên. Tôi đã sử dụng lighttpd thay vì khỉ như máy chủ web vì nó hỗ trợ bí danh đúng cách. Trình duyệt của tôi là midori.

Cấu hình này cần một chút công việc, nhưng nó hoạt động!


0

Cố gắng sudo chmod 777 /tmpvà cũng /varquá nếu một cái gì đó thất bại.

Trong trường hợp của tôi, đó là điều duy nhất cần làm thêm.


0

Một điều quan trọng cần hiểu là hệ thống tập tin không bị hỏng từ rwthời điểm xảy ra sự cố. Nó bị hỏng vì một hoạt động viết chưa hoàn thành tại thời điểm xảy ra sự cố. Nếu không có thao tác ghi nào đang diễn ra, rwhệ thống tệp của bạn an toàn như một ro.

Vì vậy, tôi khuyên bạn nên rời khỏi hệ thống tập tin của mình rw, kích hoạt nhật ký và ngừng lo lắng về nó. Nếu thao tác ghi duy nhất vẫn còn là tạo .xauthoritytệp khi khởi động, có khả năng sự cố sẽ xảy ra chính xác tại thời điểm đó đã khá mỏng và thậm chí trong trường hợp đó, tạp chí có thể sẽ xử lý vấn đề mà bạn không hề nhận ra.

Giai thoại cá nhân:

Tôi có một SBC chạy không đầu (không chính xác là trường hợp của bạn, nhưng vẫn) được sử dụng như một bộ định tuyến không dây. Mẹ tôi bị ám ảnh về điện kéo phích cắm mỗi tối và cắm lại vào buổi sáng. Hệ thống tập tin gốc là rw, nhưng điều này đã chạy trong nhiều tháng nay mà không có vấn đề gì.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.