本文將指導你把Weston裝入樹莓派. 全部的命令行和編譯操做都直接在派上完成. 用Raspbian做爲操做系統的時候須要以用戶'pi'來運行Weston, 這是由於在本地登陸(非ssh)該用戶時Raspbian才容許輸入設備接入. html
若是你只是想試試Weston, 並不想手動編譯它, 能夠用下面的包. android
Raspbian包
對於Raspbian, 有預編譯好的Wayland及Weston包. git
在/etc/apt/sources.list文件中添加一行: github
deb http://raspberrypi.collabora.com wheezy rpi接着運行: ssh
sudo apt-get update sudo apt-get install weston這會安裝一個名爲weston-launch的腳本 (並不是真實啓動程序), 它會爲你自動設置XDG_RUNTIME_DIR, 並運行weston. 想要運行Weston十分簡單: ide
weston-launch無需手動設置環境變量. 可是下面說起的固件仍然須要檢查. 工具
若是你使用的是Raspbian, 請安裝編輯依賴: flex
$ sudo apt-get install build-essential automake libtool bison flex \ xutils-dev libcairo2-dev libffi-dev libmtdev-dev libjpeg-dev \ libudev-dev libxcb-xfixes0-dev libxcursor-dev libraspberrypi-dev
你須要更新到最新的樹莓派固件, 以便你能得到rpi-update工具. 太舊的固件會致使樹莓派rpi-backend出現故障. 執行rpi-update會覆蓋一些raspbian包安裝的文件, 好比libraspberrypi-dev. 你先不要rpi-update, 直接運行Weston, 若是出現了圖像問題, 再執行它, 看看可否解決問題. ui
你可能須要在/boot/config.txt文件中調整如下選項: spa
gpu_mem=128
爲VideoCore保留多少內存, 例如: framebuffer, GL紋理貼圖, Dispmanx資源.
dispmanx_offline=1
固件將切換爲離線合成Dispmanx元素. 一般狀況下合成都是在線完成的, 可是在scanout時沒法處理過多的元素. 在開啓離線後, 會分配一個關屏緩衝區來合成. 當屏幕複雜度(元素的數量和尺寸)太高, 將會在緩衝區中離線合成. 強烈推薦開啓!
咱們將安裝到樹莓派用戶的home目錄下.
export WLD="$HOME/local" export PATH="$WLD/bin:$PATH" export LD_LIBRARY_PATH="$WLD/lib:/opt/vc/lib" export PKG_CONFIG_PATH="$WLD/lib/pkgconfig/:$WLD/share/pkgconfig/" export ACLOCAL="aclocal -I $WLD/share/aclocal" export XDG_RUNTIME_DIR="/run/shm/wayland" export XDG_CONFIG_HOME="$WLD/etc" export XORGCONFIG="$WLD/etc/xorg.conf" mkdir -p "$WLD/share/aclocal" mkdir -p "$XDG_RUNTIME_DIR" chmod 0700 "$XDG_RUNTIME_DIR"
你能夠把上面的內容放到一個腳本里並在終端裏放置到你想編譯包的位置或者運行Weston.
派上的一些庫並無安裝合適的 pkg-config文件. 咱們須要手動安裝它們.
從git://git.collabora.co.uk/git/user/pq/android-pc-files.git下載.pc文件而且確保你選取的是raspberrypi分支. 主分支是適用於Android平臺的類似文件.
複製.pc文件到$WLD/share/pkgconfig/目錄下:
$ cp bcm_host.pc egl.pc glesv2.pc $WLD/share/pkgconfig/
Libwayland請按照the generic build guide來編譯及安裝.
$ git clone git://anongit.freedesktop.org/wayland/wayland $ cd wayland $ ./autogen.sh --prefix=$WLD --disable-documentation $ make $ make install
使用--disable-documentation使其不依賴Doxygen.
Libxkbcommon一樣請按照the generic build guide來編譯及安裝.
$ git clone git://people.freedesktop.org/xorg/lib/libxkbcommon.git $ cd libxkbcommon/ $ ./autogen.sh --prefix=$WLD $ make && make install
相比正常的編譯, Weston的配置有些許不一樣:
$ git clone git://anongit.freedesktop.org/wayland/weston $ cd weston $ ./autogen.sh --prefix=$WLD \ --disable-setuid-install --with-cairo-glesv2 \ --disable-x11-compositor --disable-drm-compositor \ --disable-fbdev-compositor --disable-wayland-compositor \ --disable-weston-launch --disable-simple-egl-clients \ --disable-egl --disable-libunwind --disable-colord \ --disable-resize-optimization --disable-xwayland-test \ WESTON_NATIVE_BACKEND="rpi-backend.so" $ make $ make install
若是你以前就裝過wayland, 須要添加--disable-wayland-compositor, 刪除虛設的wayland-egl.pc pkg-config文件. 這裏須要注意, toytoolkit (Weston示例程序) 並不使用Cairo EGL. EGL不能做爲客戶端工做, 由於EGL Wayland還沒在樹莓派上實現.
如今Weston應該已經能夠運行了. 要記得設置環境, 以防Weston不能打開任何輸入或輸出設備, 最好先與樹莓派開啓ssh會話. 在Raspbian下最好用'pi'用戶登陸.
checking for RPI_BCM_HOST... no configure: WARNING: Raspberry Pi BCM host libraries not found, will use stubs instead.
若是沒有安裝正確的pkg-config文件, weston的編譯將會失敗. 若是在Weston的配置過程當中看到上面的提示, 找不到bcm_host.pc文件, rpi-backend將沒法執行. 下面是正常的提示:
checking for RPI_BCM_HOST... yes
原本不該該被用到的cairo-egl被用到了. 刪除虛設的wayland-egl.pc文件, 並確保在配置參數裏有--disable-wayland-compositor. 當一切正常的時候, 應該提示:
checking for CAIRO_EGL... no configure: WARNING: clients will use cairo image, cairo-egl not used
老舊的固件會致使圖形破損. 請嘗試更新固件, 並嘗試上面提到的/boot/config.txt選項.
你可能沒有設置固件dispmanx_offline=1. 當屏幕上有過多東西須要作在線合成處理, 沒有離線合成備用, 輸出就會掛掉或中斷.
多是在屏幕上有太多東西了, 即便用固件裏的離線合成也忙不過來. 關掉些窗口就行了.
極大多是你跑出了$XDG_RUNTIME_DIR的空間. 這個目錄是Wayland程序分配像素緩衝區的位置.