Advertisement
Guest User

x11docker_mm_xorg

a guest
Feb 14th, 2019
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 42.83 KB | None | 0 0
  1. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/message.log <==
  2.  
  3. x11docker[774.69]: Image name: magicmirror
  4. Image command:
  5.  
  6. x11docker[774.86]:
  7. x11docker version: 5.4.1
  8. docker version: Docker version 18.09.0, build 4d60db4
  9. Host system: Raspbian GNU/Linux 9 (stretch)
  10. Command: /usr/bin/x11docker '--user=root' '--xorg' 'magicmirror'
  11. Parsed options: --user 'root' --xorg -- 'magicmirror'
  12.  
  13. x11docker WARNING: User pi is member of group docker.
  14. That allows unprivileged processes on host to gain root privileges.
  15.  
  16. x11docker[775.78]: Using X server option --xorg
  17.  
  18. x11docker WARNING: Your configuration seems not to allow to start
  19. a second core Xorg server from within X. Option --xorg will probably fail.
  20. (Per default, only root or console users are allowed to run an Xorg server).
  21.  
  22. Possible solutions:
  23. 1.) Install one of nested X servers 'Xephyr', 'Xnest' or 'nxagent'.
  24. For --gpu support: install 'weston' and 'Xwayland'.
  25. 2.) Switch to console tty1...tty6 with <CTRL><ALT><F1>...<F6>
  26. and start x11docker there.
  27. 3.) Run x11docker as root.
  28. 4.) Edit file '/etc/X11/Xwrapper.config' and replace line:
  29. allowed_users=console
  30. with lines
  31. allowed_users=anybody
  32. needs_root_rights=yes
  33. If the file does not exist already, you can create it.
  34. On Ubuntu 16.04 and debian 9 you need package xserver-xorg-legacy.
  35.  
  36. x11docker WARNING: x11docker can run Xorg on another tty (option --xorg),
  37. but you won't see it in your SSH session.
  38. Rather install e.g. Xephyr on ssh server and use option --xephyr.
  39.  
  40. x11docker note: Option --user=root: Enabling option --sudouser.
  41.  
  42.  
  43. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log <==
  44.  
  45. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/stdout <==
  46.  
  47. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/stderr <==
  48.  
  49. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/journalctl.log <==
  50.  
  51. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/xpraserver.log <==
  52.  
  53. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/xpraclient.log <==
  54.  
  55. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/xinit.log <==
  56.  
  57. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/compositor.log <==
  58.  
  59. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/message.log <==
  60. x11docker[775.86]: Stored background pid 3895 of tailstdout
  61.  
  62. x11docker[775.87]: Waiting for file content in /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.pid1pid
  63.  
  64. x11docker[775.88]: Stored background pid 3903 of tailstderr
  65.  
  66. x11docker[775.92]: Stored background pid 3915 of watchpidlist
  67.  
  68. x11docker[775.93]: Stored background pid 3919 of watchmessagefifo
  69.  
  70. x11docker[776.00]: Waiting since 0s for /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.pid1pid to have content, will wait up to 32000 seconds.
  71.  
  72. x11docker note: Could not determine your screen size.
  73. Please improve this by installing one of xrandr, xdpyinfo or xwininfo.
  74. Or use option --size=XxY.
  75.  
  76. x11docker[776.06]: Virtual screen size:
  77.  
  78. x11docker[776.08]: Physical screen size:
  79.  
  80.  
  81. x11docker note: Looking for windowmanager linked with x-window-manager.
  82. You can set the default one detected in auto mode with
  83. update-alternatives --config x-window-manager
  84.  
  85. x11docker note: Using host window manager openbox --sm-disable
  86.  
  87. x11docker[776.13]: Chosen window manager from host: openbox --sm-disable
  88.  
  89. x11docker[776.15]: TTYs currently known to kernel: 1 2 3 4 5 6
  90.  
  91. x11docker note: New Xorg server will run on tty 8.
  92. Access it with [CTRL][ALT][F8].
  93.  
  94. x11docker WARNING: On debian 9, switching often between multiple X servers can
  95. cause a crash of one X server. This bug may be debian specific and is probably
  96. some sort of race condition. If you know more about this or it occurs on
  97. other systems, too, please report at https://github.com/mviereck/x11docker.
  98.  
  99. You can avoid this issue with switching to a black tty before switching to X.
  100.  
  101. x11docker[776.21]: New X environment:
  102. DISPLAY=:100 XAUTHORITY=/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/Xclientcookie XSOCKET=/tmp/.X11-unix/X100 X11DOCKER_CACHE=/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0
  103.  
  104. x11docker[776.24]: Waiting since 1s for /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.pid1pid to have content, will wait up to 32000 seconds.
  105.  
  106. x11docker[776.26]: X server command:
  107. /usr/bin/Xorg :100 vt8 \
  108. -dpms -s off -retro \
  109. +extension RANDR +extension RENDER +extension GLX \
  110. +extension XVideo +extension DOUBLE-BUFFER \
  111. -extension X-Resource +extension SECURITY +extension DAMAGE \
  112. -extension XINERAMA -xinerama -extension MIT-SHM \
  113. -auth /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/Xservercookie \
  114. -nolisten tcp \
  115. +extension Composite +extension COMPOSITE \
  116. -extension XTEST -tst \
  117. +extension XFree86-DRI +extension XFree86-DGA +extension XFree86-VidModeExtension \
  118. -verbose
  119.  
  120. x11docker[776.47]: Users and terminal:
  121. x11docker was started by: pi
  122. As host user serves (running X, storing cache): pi
  123. Container user will be: root
  124. Container user password: x11docker
  125. Getting permission to run docker with: bash -c
  126. Running X and other user commands with: bash -c
  127. Terminal for password frontend: bash -c
  128. Running on console: no
  129. Running over SSH: yes
  130.  
  131. x11docker[776.49]: Found tini binary: /usr/bin/docker-init
  132.  
  133. x11docker WARNING: Option --sudouser severly reduces container security.
  134. Container gains additional capabilities to allow sudo and su.
  135. If an application breaks out of container, it can harm your system
  136. in many ways without you noticing. Password: x11docker
  137.  
  138. x11docker[776.57]: Waiting since 1s for /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.pid1pid to have content, will wait up to 32000 seconds.
  139.  
  140. x11docker[776.65]: Generated docker command:
  141. docker run --tty --rm --detach \
  142. --name x11docker_X100_cba6ca3f1b9490eb3c5ec3361b7a99e0_magicmirror \
  143. --user 0:0 \
  144. --env USER=root \
  145. --userns host \
  146. --group-add 44 \
  147. --group-add 29 \
  148. --cap-drop ALL \
  149. --cap-add AUDIT_WRITE \
  150. --cap-add CHOWN \
  151. --cap-add DAC_OVERRIDE \
  152. --cap-add FOWNER \
  153. --cap-add FSETID \
  154. --cap-add KILL \
  155. --cap-add SETGID \
  156. --cap-add SETPCAP \
  157. --cap-add SETUID \
  158. --security-opt label=type:container_runtime_t \
  159. --volume '/usr/bin/docker-init':'/x11docker/tini':ro \
  160. --tmpfs /run --tmpfs /run/lock \
  161. --volume '/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share':'/x11docker':rw \
  162. --volume '/tmp/.X11-unix/X100':'/X100':rw \
  163. --workdir '/tmp' \
  164. --entrypoint env \
  165. --env 'container=docker' \
  166. --env 'XAUTHORITY=/x11docker/Xclientcookie' \
  167. --env 'DISPLAY=:100' \
  168. -- magicmirror /bin/sh - /x11docker/container.CMD.sh
  169.  
  170. x11docker[776.71]: Generated dockerrc:
  171. 1 #! /usr/bin/env bash
  172. 2 mkfile ()
  173. 3 {
  174. 4 : > "${1:-}" || return 1;
  175. 5 chown $Hostuser "${1:-}" || return 1;
  176. 6 chgrp $Hostusergid "${1:-}" || return 1;
  177. 7 [ -n "${2:-}" ] && {
  178. 8 chmod ${2:-} "${1:-}" || return 1
  179. 9 };
  180. 10 return 0
  181. 11 }
  182. 12 rocknroll ()
  183. 13 {
  184. 14 [ -s "$Timetosaygoodbye" ] && return 1;
  185. 15 [ -e "$Timetosaygoodbye" ] || return 1;
  186. 16 return 0
  187. 17 }
  188. 18 waitforfilecreation ()
  189. 19 {
  190. 20 local Zeit= Warten= Dauer= Count=;
  191. 21 Zeit=$(date +%s);
  192. 22 verbose -d "Waiting for file creation of ${1:-}";
  193. 23 case ${2:-} in
  194. 24 "")
  195. 25 Warten=15
  196. 26 ;;
  197. 27 infinity | inf)
  198. 28 Warten=32000
  199. 29 ;;
  200. 30 *)
  201. 31 Warten=${2:-}
  202. 32 ;;
  203. 33 esac;
  204. 34 while [ ! "$(find "${1:-}" 2>/dev/null)" ]; do
  205. 35 Count=$(( Count + 1 ));
  206. 36 Dauer=$(( $(date +%s) - $Zeit ));
  207. 37 sleep $(awk "BEGIN { print $Count * 0.1 }");
  208. 38 [ $Warten -lt $Dauer ] && {
  209. 39 warning "Failed to wait for file creation of
  210. 40 ${1:-}";
  211. 41 return 1
  212. 42 };
  213. 43 verbose "Waiting since ${Dauer}s for ${1:-} to be created, will wait up to $Warten seconds.";
  214. 44 rocknroll || {
  215. 45 verbose -d "Stopped waiting for ${1:-} due to terminating signal.";
  216. 46 return 1
  217. 47 };
  218. 48 done;
  219. 49 verbose "Found new created file $(ls ${1:-})";
  220. 50 return 0
  221. 51 }
  222. 52 escapestring ()
  223. 53 {
  224. 54 echo "${1:-}" | LC_ALL=C sed -e 's/[^a-zA-Z0-9,._+@=:/-]/\\&/g; 1{$s/^$/""/}; 1!s/^/"/; $!s/$/"/'
  225. 55 }
  226. 56 rmcr ()
  227. 57 {
  228. 58 case "${1:-}" in
  229. 59 "")
  230. 60 sed "s/$(printf "\r")//g"
  231. 61 ;;
  232. 62 *)
  233. 63 sed -i "s/$(printf "\r")//g" "${1:-}"
  234. 64 ;;
  235. 65 esac
  236. 66 }
  237. 67 Hostuser=pi
  238. 68 Hostusergid=1000
  239. 69 Timetosaygoodbye=/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/timetosaygoodbye
  240. 70
  241. 71 warning() {
  242. 72 echo "$*:WARNING" >>$Messagefile
  243. 73 }
  244. 74 note() {
  245. 75 echo "$*:NOTE" >>$Messagefile
  246. 76 }
  247. 77 verbose() {
  248. 78 echo "$*:VERBOSE" >>$Messagefile
  249. 79 }
  250. 80 debugnote() {
  251. 81 echo "$*:DEBUGNOTE" >>$Messagefile
  252. 82 }
  253. 83 error() {
  254. 84 echo "$*:ERROR" >>$Messagefile
  255. 85 exit 1
  256. 86 }
  257. 87 stdout() {
  258. 88 echo "$*:STDOUT" >>$Messagefile
  259. 89 }
  260. 90 Messagefile=/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/message.fifo
  261. 91
  262. 92 verbose -d 'Running dockerrc'
  263. 93 Imagename="magicmirror"
  264. 94 Imagecommand=""
  265. 95
  266. 96 # check whether docker daemon is running and refresh images.list for x11docker-gui
  267. 97 mkfile /home/pi/.cache/x11docker/x11docker-gui/images.list
  268. 98 docker images --format '{{.Repository}}:{{.Tag}}' >>/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/images.list 2>>/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log || {
  269. 99 rmcr '/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log'
  270. 100 error "Calling docker daemon failed.
  271. 101 Is docker daemon running at all?
  272. 102 Try to start docker daemon with: systemctl start docker
  273. 103 Last lines of log:
  274. 104 $(tail /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log)"
  275. 105 }
  276. 106 rmcr /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/images.list
  277. 107 while read -r Line ; do
  278. 108 grep -q "<none>" <<<$Line || echo $Line >> /home/pi/.cache/x11docker/x11docker-gui/images.list
  279. 109 done < <(sort < /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/images.list)
  280. 110
  281. 111 Dockerpull=no
  282. 112 docker inspect --type=image magicmirror >>/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log 2>&1 || {
  283. 113 read -t60 -n1 -e -p "Image 'magicmirror' not found locally.
  284. 114 Do you want to pull it from docker hub? [Y|n]
  285. 115 (Will wait up to 60s for a response, otherwise assuming no)" Choice
  286. 116 [ "$?" = '0' ] && {
  287. 117 [[ "$Choice" == [YyJj]* ]] || [ -z "$Choice" ] && Dockerpull=yes
  288. 118 }
  289. 119 }
  290. 120 [ "$Dockerpull" = 'yes' ] && {
  291. 121 note 'Pulling image magicmirror from docker hub'
  292. 122 notify-send 'x11docker: Pulling image magicmirror from docker hub' 2>/dev/null
  293. 123 docker pull magicmirror 1>&2
  294. 124 }
  295. 125 docker inspect --type=image magicmirror >>/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log 2>&1 || {
  296. 126 error 'Did not find image magicmirror.
  297. 127 Please build image first or pull it from docker hub with:
  298. 128
  299. 129 docker pull magicmirror
  300. 130
  301. 131 or run x11docker with option --pull=yes'
  302. 132 }
  303. 133 # check CMD
  304. 134 [ -z "$Imagecommand" ] && {
  305. 135 # extract image command from image if not given on cli
  306. 136 Imagecommand="$(docker inspect --format='{{.Config.Cmd}}' magicmirror | rmcr)"
  307. 137 Imagecommand="${Imagecommand#[}"
  308. 138 Imagecommand="${Imagecommand%]}"
  309. 139 Imagecommand="${Imagecommand#/bin/sh -c }"
  310. 140 }
  311. 141 # check USER
  312. 142 Imageuser=$(docker inspect --format '{{.Config.User}}' magicmirror | rmcr)
  313. 143 [ "$Imageuser" ] && note "Found 'USER $Imageuser' in image.
  314. 144 If you want to run with user $Imageuser instead of host user root,
  315. 145 than run with --user=RETAIN."
  316. 146 echo root >> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/container.user
  317. 147 sed -i "s/CONTAINERUSER/root/" /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/x11docker-startcmd.service
  318. 148 Tini="/x11docker/tini --"
  319. 149 Exec=exec
  320. 150 # check ENTRYPOINT
  321. 151 Entrypoint=$(docker inspect --format='{{.Config.Entrypoint}}' magicmirror | rmcr)
  322. 152 Entrypoint=${Entrypoint#[}
  323. 153 Entrypoint=${Entrypoint#/bin/sh -c }
  324. 154 Entrypoint=${Entrypoint%]}
  325. 155 echo "$Entrypoint" | grep -qE '/tini|/init|/systemd' && {
  326. 156 note "There seems to be an init system in ENTRYPOINT of image:
  327. 157 $Entrypoint
  328. 158 x11docker will run this instead of tini from host.
  329. 159 You can disable this ENTRYPOINT with option --no-entrypoint."
  330. 160 Tini=
  331. 161 }
  332. 162
  333. 163 [ -z "$Imagecommand$Entrypoint" ] && error 'No image command specified and no CMD or ENTRYPOINT found in image.' && exit 1
  334. 164
  335. 165 # create container.CMD.sh (shared with container and given as image command to docker run)
  336. 166 { echo '#! /bin/sh'
  337. 167 echo '# created startscript for docker run: container.CMD.sh'
  338. 168 echo '# runs as unprivileged user in container'
  339. 169 echo '
  340. 170 warning() {
  341. 171 echo "$*:WARNING" >>$Messagefile
  342. 172 }
  343. 173 note() {
  344. 174 echo "$*:NOTE" >>$Messagefile
  345. 175 }
  346. 176 verbose() {
  347. 177 echo "$*:VERBOSE" >>$Messagefile
  348. 178 }
  349. 179 debugnote() {
  350. 180 echo "$*:DEBUGNOTE" >>$Messagefile
  351. 181 }
  352. 182 error() {
  353. 183 echo "$*:ERROR" >>$Messagefile
  354. 184 exit 1
  355. 185 }
  356. 186 stdout() {
  357. 187 echo "$*:STDOUT" >>$Messagefile
  358. 188 }'
  359. 189 echo 'Messagefile=/x11docker/message.fifo'
  360. 190 echo ''
  361. 191 echo '# wait for container setup script do be ready'
  362. 192 echo 'Zeit=$(date +%s)'
  363. 193 echo 'for Count in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50; do'
  364. 194 echo ' verbose "Waiting since $(($(date +%s) - $Zeit))s for container setup to be ready"'
  365. 195 echo ' [ -e /x11docker.setupready ] && break'
  366. 196 echo ' sleep $(awk "BEGIN { print $Count*0.2 }")'
  367. 197 echo 'done'
  368. 198 echo ''
  369. 199 echo 'verbose -d "Running unprivileged user commands in container"'
  370. 200 echo ''
  371. 201 echo Imagecommand="\"$Imagecommand\""
  372. 202 echo Entrypoint="\"$Entrypoint\""
  373. 203 echo ''
  374. 204 echo 'verbose "Container system:'
  375. 205 echo '$(cat /etc/os-release)"'
  376. 206 echo ''
  377. 207 } >> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/container.CMD.sh
  378. 208 {
  379. 209 echo ''
  380. 210 echo '# x11docker variable settings'
  381. 211 echo 'Containeruser="$(cat /x11docker/container.user)"'
  382. 212 echo 'Containeruserhome="/root"'
  383. 213 echo 'export USER="$Containeruser"'
  384. 214 echo 'export HOME="$Containeruserhome"'
  385. 215 echo 'mkdir -p $Containeruserhome'
  386. 216 echo '# Copy files from /etc/skel into empty HOME'
  387. 217 echo '[ -d /etc/skel ] && {'
  388. 218 echo ' [ "$(find $Containeruserhome -mindepth 1 -print)" ] || cp -R /etc/skel/. $Containeruserhome'
  389. 219 echo '}'
  390. 220 echo '[ -e /tmp/.X11-unix/X100 ] || ln -s /X100 /tmp/.X11-unix'
  391. 221 echo 'export NO_AT_BRIDGE=1'
  392. 222 echo ''
  393. 223 echo "[ -e \"\$XDG_RUNTIME_DIR\" ] || {"
  394. 224 echo ' export XDG_RUNTIME_DIR=/tmp/XDG_RUNTIME_DIR'
  395. 225 echo ' mkdir -m 700 -p $XDG_RUNTIME_DIR'
  396. 226 echo ' export XDG_RUNTIME_DIR'
  397. 227 echo '}'
  398. 228 echo ''
  399. 229 echo 'export XDG_SESSION_TYPE=x11'
  400. 230 echo ''
  401. 231 echo ''
  402. 232 echo '# xpra environment settings'
  403. 233 echo 'export UBUNTU_MENUPROXY= QT_X11_NO_NATIVE_MENUBAR=1 MWNOCAPTURE=true MWNO_RIT=true MWWM=allwm'
  404. 234 echo 'export XPRA_XSHM=0'
  405. 235 echo ''
  406. 236 echo 'bash --version >/dev/null 2>&1 && export SHELL=/bin/bash || export SHELL=/bin/sh'
  407. 237 echo 'export TERM=xterm'
  408. 238 echo '[ -e /x11docker.LANG ] && export LANG="$(cat /x11docker.LANG)"'
  409. 239 echo '[ -e "/usr/share/zoneinfo/GB" ] || export TZ=UTC-00'
  410. 240 echo '[ "$(date -Ihours)" != "2019-02-14T09+00:00" ] && export TZ=UTC-00'
  411. 241 echo '[ "$DEBIAN_FRONTEND" = noninteractive ] && unset DEBIAN_FRONTEND'
  412. 242 echo '[ "$DEBIAN_FRONTEND" = newt ] && unset DEBIAN_FRONTEND'
  413. 243 echo '# container environment (--env)'
  414. 244 echo 'export "container=docker"'
  415. 245 echo 'export "XAUTHORITY=/x11docker/Xclientcookie"'
  416. 246 echo 'export "DISPLAY=:100"'
  417. 247 echo ''
  418. 248 echo 'env >> /x11docker/environment'
  419. 249 echo 'sed -i "/\(PWD=\|_=\)/d" /x11docker/environment'
  420. 250 echo 'verbose "Container environment:'
  421. 251 echo '$(env | sort)"'
  422. 252 echo 'verbose "Copy of environment stored in /x11docker/environment"'
  423. 253 echo ''
  424. 254 echo 'cd "$HOME"'
  425. 255 Workdir=$(docker inspect --format='{{.Config.WorkingDir}}' magicmirror 2>>'/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log'| rmcr)
  426. 256 [ "$Workdir" ] && echo "[ -d \"$Workdir\" ] && cd \"$Workdir\" # WORKDIR in image"
  427. 257 echo ''
  428. 258 echo verbose -d "Running image command: $Tini \$Dbus $Entrypoint $Imagecommand"
  429. 259 echo "$Exec $Tini \$Dbus $Entrypoint $Imagecommand >>/x11docker/stdout 2>>/x11docker/stderr"
  430. 260 echo '# Ready for docker run'
  431. 261 } >> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/container.CMD.sh
  432. 262
  433. 263 nl -ba >> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/x11docker.log < /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/container.CMD.sh
  434. 264
  435. 265 read Containerid < <(docker run --tty --rm --detach \
  436. 266 --name x11docker_X100_cba6ca3f1b9490eb3c5ec3361b7a99e0_magicmirror \
  437. 267 --user 0:0 \
  438. 268 --env USER=root \
  439. 269 --userns host \
  440. 270 --group-add 44 \
  441. 271 --group-add 29 \
  442. 272 --cap-drop ALL \
  443. 273 --cap-add AUDIT_WRITE \
  444. 274 --cap-add CHOWN \
  445. 275 --cap-add DAC_OVERRIDE \
  446. 276 --cap-add FOWNER \
  447. 277 --cap-add FSETID \
  448. 278 --cap-add KILL \
  449. 279 --cap-add SETGID \
  450. 280 --cap-add SETPCAP \
  451. 281 --cap-add SETUID \
  452. 282 --security-opt label=type:container_runtime_t \
  453. 283 --volume '/usr/bin/docker-init':'/x11docker/tini':ro \
  454. 284 --tmpfs /run --tmpfs /run/lock \
  455. 285 --volume '/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share':'/x11docker':rw \
  456. 286 --volume '/tmp/.X11-unix/X100':'/X100':rw \
  457. 287 --workdir '/tmp' \
  458. 288 --entrypoint env \
  459. 289 --env 'container=docker' \
  460. 290 --env 'XAUTHORITY=/x11docker/Xclientcookie' \
  461. 291 --env 'DISPLAY=:100' \
  462. 292 -- magicmirror /bin/sh - /x11docker/container.CMD.sh 2>>/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log | rmcr)
  463. 293
  464. 294 verbose -d "Container ID: $Containerid"
  465. 295 [ "$Containerid" ] || {
  466. 296 rmcr '/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log'
  467. 297 error "Startup of docker failed. Did not receive a container ID.
  468. 298
  469. 299 Last lines of container log:
  470. 300 $(tail /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log)"
  471. 301 }
  472. 302 echo $Containerid >> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.id
  473. 303
  474. 304 # wait for container to be ready
  475. 305 for ((Count=1 ; Count<=20 ; Count++)); do
  476. 306 docker exec x11docker_X100_cba6ca3f1b9490eb3c5ec3361b7a99e0_magicmirror sh -c : 2>&1 | rmcr >>/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log && { verbose -d 'Container is up and running.' ; break ; } || verbose -d "Container not ready on $Count. attempt, trying again."
  477. 307 sleep 0.2
  478. 308 done
  479. 309 docker logs -f $Containerid 2>&1 | rmcr >> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log &
  480. 310 Failure="$(cat /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log | rmcr | grep -v grep | grep -E 'Error response from daemon|OCI runtime exec' ||:)"
  481. 311 [ "$Failure" ] && {
  482. 312 echo "$Failure" >>/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log
  483. 313 error "Got error message from docker daemon:
  484. 314 $Failure"
  485. 315 }
  486. 316
  487. 317 docker inspect --format '{{ .NetworkSettings.IPAddress }}' x11docker_X100_cba6ca3f1b9490eb3c5ec3361b7a99e0_magicmirror 2>>/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log | rmcr >> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.ip
  488. 318 verbose -d "Container IP: $(cat /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.ip)"
  489. 319
  490. 320 Pid1pid=$(docker inspect --format '{{.State.Pid}}' x11docker_X100_cba6ca3f1b9490eb3c5ec3361b7a99e0_magicmirror 2>>/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log | rmcr)
  491. 321 echo $Pid1pid >> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.pid1pid
  492. 322 verbose -d "Host PID of container PID 1: $Pid1pid"
  493. 323
  494. 324 # get PID of container
  495. 325 Containerpid=$(ps -o ppid $Pid1pid 2>/dev/null || echo unknown | tail -n1)
  496. 326 verbose -d "Container PID: $Containerpid"
  497. 327 echo $Containerpid >> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.pid
  498. 328
  499. 329 docker exec --tty -u root x11docker_X100_cba6ca3f1b9490eb3c5ec3361b7a99e0_magicmirror /bin/sh /x11docker/containerrootrc 2>&1 | rmcr >>/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.log
  500. 330 exit 0
  501.  
  502. x11docker[776.79]: Generated containerrootrc:
  503. 1 #! /bin/sh
  504. 2 # set up docker container as root before ongoing in unprivileged container.CMD.sh
  505. 3 # commands in this script are executed as root in container
  506. 4 id
  507. 5
  508. 6 warning() {
  509. 7 echo "$*:WARNING" >>$Messagefile
  510. 8 }
  511. 9 note() {
  512. 10 echo "$*:NOTE" >>$Messagefile
  513. 11 }
  514. 12 verbose() {
  515. 13 echo "$*:VERBOSE" >>$Messagefile
  516. 14 }
  517. 15 debugnote() {
  518. 16 echo "$*:DEBUGNOTE" >>$Messagefile
  519. 17 }
  520. 18 error() {
  521. 19 echo "$*:ERROR" >>$Messagefile
  522. 20 exit 1
  523. 21 }
  524. 22 stdout() {
  525. 23 echo "$*:STDOUT" >>$Messagefile
  526. 24 }
  527. 25 Messagefile=/x11docker/message.fifo
  528. 26
  529. 27 verbose -d 'Running setup as root in container'
  530. 28 # check type of libc
  531. 29 ldd --version 2>&1 | grep -q 'musl libc' && Containerlibc='musl'
  532. 30 ldd --version 2>&1 | grep -q -E 'GLIBC|GNU libc' && Containerlibc='glibc'
  533. 31 verbose -d "Container libc: $Containerlibc"
  534. 32
  535. 33 # prepare X environment
  536. 34 # create some system dirs with needed permissions
  537. 35 mkdir -v -p /var/lib/dbus /var/run/dbus
  538. 36 mkdir -v -p -m 1777 /tmp/.ICE-unix /tmp/.X11-unix /tmp/.font-unix
  539. 37 chmod -c 1777 /tmp/.ICE-unix /tmp/.X11-unix /tmp/.font-unix
  540. 38 export DISPLAY=:100 XAUTHORITY=/x11docker/Xclientcookie
  541. 39 [ -e /X100 ] && ln -s /X100 /tmp/.X11-unix/X100
  542. 40 ls -l /X100
  543. 41 ls -l /tmp/.X11-unix/X100
  544. 42
  545. 43 # time zone
  546. 44 [ ! -d /usr/share/zoneinfo ] && [ "$Containerlibc" = "glibc" ] && {
  547. 45 mkdir -p /usr/share/zoneinfo
  548. 46 cp '/x11docker/timezone' '/usr/share/zoneinfo/GB'
  549. 47 }
  550. 48 [ -e '/usr/share/zoneinfo/GB' ] && ln -f -s '/usr/share/zoneinfo/GB' /etc/localtime
  551. 49
  552. 50 Containersystem=$(. /etc/os-release; echo $ID)
  553. 51 verbose "Container system ID: $Containersystem"
  554. 52
  555. 53 # environment variables
  556. 54 export 'container=docker'
  557. 55 export 'XAUTHORITY=/x11docker/Xclientcookie'
  558. 56 export 'DISPLAY=:100'
  559. 57
  560. 58 # Check container user
  561. 59 Containeruser=$(cat /x11docker/container.user)
  562. 60
  563. 61 # create user entry in /etc/passwd (and delete possibly existing same uid)
  564. 62 getent passwd | grep -v "$(getent passwd 0 || echo USERNOTFOUND)" > /tmp/passwd
  565. 63 # disable possible /etc/shadow passwords for other users
  566. 64 sed -i s%:x:%:-:% /tmp/passwd
  567. 65 echo 'root:x:0:0:root,,,:/root:/bin/sh' >> /tmp/passwd
  568. 66 rm /etc/passwd
  569. 67 mv /tmp/passwd /etc/passwd || warning 'Unable to change /etc/passwd. That may be a seurity risk.'
  570. 68
  571. 69 # create password entry for container user in /etc/shadow
  572. 70 rm -v /etc/shadow || warning 'Cannot change /etc/shadow. That may be a security risk.'
  573. 71 echo "root:sac19FwGGTx/A:17293:0:99999:7:::" > /etc/shadow
  574. 72 echo 'root:sac19FwGGTx/A:17219:0:99999:7:::' >> /etc/shadow # with option --sudouser, set root password 'x11docker'
  575. 73 sed -i s%root:-:%root:x:% /etc/passwd # allow password in /etc/shadow
  576. 74
  577. 75
  578. 76 # create user group entry (and delete possibly existing same gid)
  579. 77 getent group | grep -v $(getent group 0 || echo USERNOTFOUND) > /tmp/group
  580. 78 echo root:x:0: >> /tmp/group
  581. 79 mv /tmp/group /etc/group
  582. 80
  583. 81 mkdir -v -m 777 /fakehome
  584. 82
  585. 83 # create /etc/sudoers, delete /etc/sudoers.d. Overwrite possible sudo setups in image.
  586. 84 [ -e /etc/sudoers.d ] && rm -v -R /etc/sudoers.d
  587. 85 [ -e /etc/sudoers ] && rm -v /etc/sudoers
  588. 86 echo '# /etc/sudoers created by x11docker' > /etc/sudoers
  589. 87 echo 'root ALL=(ALL) ALL' >> /etc/sudoers
  590. 88 echo 'root ALL=(ALL) ALL' >> /etc/sudoers
  591. 89
  592. 90 [ -e '/root' ] || {
  593. 91 # only create HOME here if capability CHOWN is allowed.
  594. 92 :>/tmp/chowntestfile
  595. 93 chown $Containeruser /tmp/chowntestfile && {
  596. 94 mkdir -v -p '/root'
  597. 95 chown $Containeruser '/root'
  598. 96 }
  599. 97 rm /tmp/chowntestfile
  600. 98 }
  601. 99
  602. 100 # Set up container user groups
  603. 101 Groupname=video
  604. 102 Groupid=44
  605. 103 [ "$Groupname" ] || Groupname=$(getent group video | cut -d: -f1)
  606. 104 [ "$Groupid" ] || Groupid=$(getent group video | cut -d: -f3)
  607. 105 [ "$Groupname" ] && {
  608. 106 getent group | sed "s/^$Groupname.*/$Groupname:x:$Groupid:$(getent group $Groupname | cut -d: -f4 ),$Containeruser/" | sed 's/:,/:/' > /tmp/group
  609. 107 getent group $Groupname >/dev/null || echo $Groupname:x:$Groupid:$Containeruser >> /tmp/group
  610. 108 cp /tmp/group /etc/group
  611. 109 }
  612. 110
  613. 111 Groupname=audio
  614. 112 Groupid=29
  615. 113 [ "$Groupname" ] || Groupname=$(getent group audio | cut -d: -f1)
  616. 114 [ "$Groupid" ] || Groupid=$(getent group audio | cut -d: -f3)
  617. 115 [ "$Groupname" ] && {
  618. 116 getent group | sed "s/^$Groupname.*/$Groupname:x:$Groupid:$(getent group $Groupname | cut -d: -f4 ),$Containeruser/" | sed 's/:,/:/' > /tmp/group
  619. 117 getent group $Groupname >/dev/null || echo $Groupname:x:$Groupid:$Containeruser >> /tmp/group
  620. 118 cp /tmp/group /etc/group
  621. 119 }
  622. 120
  623. 121 # disable getty in inittab
  624. 122 [ -e /etc/inittab ] && sed -i 's/.*getty/##getty disabled by x11docker## \0/' /etc/inittab
  625. 123 echo 'x11docker: Container root setup is ready'
  626. 124 :> /x11docker.setupready
  627.  
  628. x11docker note: setxkbmap not found. Need setxkbmap and xkbcomp to set keyboard layout.
  629.  
  630. x11docker[776.83]: Generated xinitrc:
  631. 1 #! /bin/sh
  632. 2 Timetosaygoodbye=/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/timetosaygoodbye
  633. 3 Timetosaygoodbyefifo=/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/timetosaygoodbye.fifo
  634. 4 Sharefolder=/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share
  635. 5 Bgpidfile=/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/backgroundpids
  636. 6 Winsubsystem=
  637. 7 storepid ()
  638. 8 {
  639. 9 echo ${1:-} ${2:-} >> $Bgpidfile;
  640. 10 verbose -d "Stored background pid ${1:-} of ${2:-}";
  641. 11 disown ${1:-} 2> /dev/null || :
  642. 12 }
  643. 13 rocknroll ()
  644. 14 {
  645. 15 [ -s "$Timetosaygoodbye" ] && return 1;
  646. 16 [ -e "$Timetosaygoodbye" ] || return 1;
  647. 17 return 0
  648. 18 }
  649. 19 waitfortheend ()
  650. 20 {
  651. 21 case $Winsubsystem in
  652. 22 "")
  653. 23 while rocknroll; do
  654. 24 bash -c "read -n1 -t1 <&8" && saygoodbye timetosaygoodbyefifo;
  655. 25 done
  656. 26 ;;
  657. 27 *)
  658. 28 while rocknroll; do
  659. 29 sleep 2;
  660. 30 done
  661. 31 ;;
  662. 32 esac
  663. 33 }
  664. 34 saygoodbye ()
  665. 35 {
  666. 36 verbose -d "time to say goodbye ($*)";
  667. 37 [ -e "$Sharefolder" ] && {
  668. 38 echo timetosaygoodbye >> $Timetosaygoodbye;
  669. 39 echo timetosaygoodbye >> $Timetosaygoodbyefifo
  670. 40 }
  671. 41 }
  672. 42 rmcr ()
  673. 43 {
  674. 44 case "${1:-}" in
  675. 45 "")
  676. 46 sed "s/$(printf "\r")//g"
  677. 47 ;;
  678. 48 *)
  679. 49 sed -i "s/$(printf "\r")//g" "${1:-}"
  680. 50 ;;
  681. 51 esac
  682. 52 }
  683. 53 disable_xhost ()
  684. 54 {
  685. 55 local Line=;
  686. 56 command -v xhost > /dev/null || {
  687. 57 warning "Command 'xhost' not found.
  688. 58 Can not check for possibly allowed network access to X.
  689. 59 Please install 'xhost'.";
  690. 60 return 1
  691. 61 };
  692. 62 xhost 2>&1 | rmcr | tail -n +2 /dev/stdin | while read -r Line; do
  693. 63 verbose -d "xhost: Removing entry $Line";
  694. 64 xhost -$Line | rmcr;
  695. 65 done;
  696. 66 xhost - | rmcr;
  697. 67 [ "$(xhost 2>&1 | rmcr | wc -l)" -gt "1" ] && {
  698. 68 warning "Remaining xhost permissions found on display ${DISPLAY:-}
  699. 69 $(xhost 2>&1 | rmcr)";
  700. 70 return 1
  701. 71 };
  702. 72 xhost 2>&1 | rmcr | grep "access control disabled" && {
  703. 73 warning "Failed to restrict xhost permissions.
  704. 74 Access to display ${DISPLAY:-} is allowed for everyone.";
  705. 75 return 1
  706. 76 };
  707. 77 return 0
  708. 78 }
  709. 79
  710. 80 warning() {
  711. 81 echo "$*:WARNING" >>$Messagefile
  712. 82 }
  713. 83 note() {
  714. 84 echo "$*:NOTE" >>$Messagefile
  715. 85 }
  716. 86 verbose() {
  717. 87 echo "$*:VERBOSE" >>$Messagefile
  718. 88 }
  719. 89 debugnote() {
  720. 90 echo "$*:DEBUGNOTE" >>$Messagefile
  721. 91 }
  722. 92 error() {
  723. 93 echo "$*:ERROR" >>$Messagefile
  724. 94 exit 1
  725. 95 }
  726. 96 stdout() {
  727. 97 echo "$*:STDOUT" >>$Messagefile
  728. 98 }
  729. 99 Messagefile=/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/message.fifo
  730. 100
  731. 101 export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/usr/games:/usr/local/bin:/usr/sbin:/sbin'
  732. 102 verbose -d 'Running xinitrc'
  733. 103 export DISPLAY=:100 XAUTHORITY=/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/Xclientcookie XSOCKET=/tmp/.X11-unix/X100 X11DOCKER_CACHE=/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0
  734. 104 # background color
  735. 105 xsetroot -solid '#7F7F7F'
  736. 106 # create new XAUTHORITY cookies
  737. 107 cd /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share
  738. 108 :> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/Xclientcookie
  739. 109 verbose 'Can not use cookies created over SSH. Will bake one myself.'
  740. 110 export XAUTHORITY=/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/Xclientcookie
  741. 111 [ -s '/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/Xclientcookie' ] || {
  742. 112 [ 'trusted' = 'untrusted' ] && note 'Could not create untrusted cookie.
  743. 113 Maybe your X server misses extension SECURITY.'
  744. 114 }
  745. 115 ls -l /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/Xclientcookie
  746. 116 [ -s '/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/Xclientcookie' ] || {
  747. 117 # still no cookie? try to create one without extension security
  748. 118 verbose -d 'Failed to retrieve trusted cookie from X server. Will bake one myself.'
  749. 119 echo 'Failed to retrieve trusted cookie from X server. Will bake one myself.'
  750. 120 xauth -v -i -f Xclientcookie add :100 . 0713f6c313fbb7b3f987acbe3e4f97fa | rmcr
  751. 121 ls -l /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/Xclientcookie
  752. 122 }
  753. 123 # create prepared cookie with localhost identification disabled by ffff, needed if X socket is shared. ffff means 'familiy wild'
  754. 124 Cookie=$(xauth -i -f Xclientcookie nlist | rmcr | sed -e 's/^..../ffff/')
  755. 125 echo "$Cookie" | xauth -v -i -f Xclientcookie nmerge - | rmcr
  756. 126 cp /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/Xclientcookie /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/Xservercookie
  757. 127 [ -s '/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/Xclientcookie' ] || warning 'Cookie creation failed!'
  758. 128 verbose -d "Created cookie: $(xauth -f Xclientcookie list 2>&1 | rmcr)"
  759. 129 chmod 644 /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/Xclientcookie
  760. 130 export XAUTHORITY=/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/Xclientcookie
  761. 131 [ 'yes' = 'no' ] || [ ! -s '/home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/share/Xclientcookie' ] && unset XAUTHORITY && warning '--xorg: X server :100 runs without cookie authentication.'
  762. 132 verbose 'Disabling any possible access to new X server possibly granted by xhost'
  763. 133 disable_xhost
  764. 134 getscreensize() {
  765. 135 CurrentXaxis=$(xrandr | grep primary | cut -d' ' -f4 | cut -dx -f1 )
  766. 136 CurrentYaxis=$(xrandr | grep primary | cut -d' ' -f4 | cut -dx -f2 | cut -d+ -f1)
  767. 137 }
  768. 138 checkscreensize() {
  769. 139 getscreensize
  770. 140 [ "$Xaxis" = "$CurrentXaxis" ] || return 1
  771. 141 [ "$Yaxis" = "$CurrentYaxis" ] || return 1
  772. 142 return 0
  773. 143 }
  774. 144 getprimary() {
  775. 145 xrandr | grep -q primary || xrandr --output $(xrandr | grep ' connected' | head -n1 | cut -d' ' -f1) --primary
  776. 146 echo $(xrandr | grep primary | cut -d' ' -f1)
  777. 147 }
  778. 148 Output=$(getprimary)
  779. 149 xrandr | grep connected | grep -v disconnected && {
  780. 150 # determine screen size
  781. 151 getscreensize
  782. 152 Xaxis=$CurrentXaxis
  783. 153 Yaxis=$CurrentYaxis
  784. 154 Xaxis=${Xaxis%.*}
  785. 155 Yaxis=${Yaxis%.*}
  786. 156 Screensize=${Xaxis}x${Yaxis}
  787. 157 } || {
  788. 158 [ -z "$Xaxis" ] && Xaxis=1024 && Yaxis=768
  789. 159 Screensize=${Xaxis}x${Yaxis}
  790. 160 note "Could not detect any connected monitor.
  791. 161 Running on a server? Will try to set a framebuffer size
  792. 162 with "xrandr --fb $Screensize" that may serve as a virtual display."
  793. 163 xrandr --fb $Screensize
  794. 164 }
  795. 165 verbose "Output of xrandr on :100
  796. 166 $(xrandr)"
  797. 167 verbose 'Starting host window manager openbox --sm-disable on new display :100'
  798. 168 openbox --sm-disable & storepid $! windowmanager
  799. 169 touch /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/Xready
  800. 170 waitfortheend
  801.  
  802. x11docker[776.85]: Stored background pid 4144 of containershell
  803.  
  804.  
  805. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/xinit.log <==
  806.  
  807. [mi] Extension "COMPOSITE" is not recognized
  808. [mi] Only the following extensions can be run-time enabled:
  809. [mi] Generic Events
  810. [mi] Composite
  811. [mi] DAMAGE
  812. [mi] DOUBLE-BUFFER
  813. [mi] DPMS
  814. [mi] GLX
  815. [mi] MIT-SCREEN-SAVER
  816. [mi] MIT-SHM
  817. [mi] RANDR
  818. [mi] RENDER
  819. [mi] SECURITY
  820. [mi] X-Resource
  821. [mi] XFree86-DGA
  822. [mi] XFree86-DRI
  823. [mi] XFree86-VidModeExtension
  824. [mi] XFIXES
  825. [mi] XINERAMA
  826. [mi] SELinux
  827. [mi] XTEST
  828. [mi] XVideo
  829.  
  830. X.Org X Server 1.19.2
  831. Release Date: 2017-03-02
  832. X Protocol Version 11, Revision 0
  833. Build Operating System: Linux 4.9.41-v7+ armv7l Raspbian
  834. Current Operating System: Linux raspberrypi 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l
  835. Kernel command line: 8250.nr_uarts=0 bcm2708_fb.fbwidth=1824 bcm2708_fb.fbheight=984 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 dwc_otg.lpm_enable=0 console=ttyS0,115200 console=tty1 root=PARTUUID=f5681ce2-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
  836. Build Date: 18 October 2017 04:55:30PM
  837. xorg-server 2:1.19.2-1+rpt1+deb9u2 (https://www.debian.org/support)
  838. Current version of pixman: 0.34.0
  839. Before reporting problems, check http://wiki.x.org
  840. to make sure that you have the latest version.
  841. Markers: (--) probed, (**) from config file, (==) default setting,
  842. (++) from command line, (!!) notice, (II) informational,
  843. (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
  844. (==) Log file: "/home/pi/.local/share/xorg/Xorg.100.log", Time: Thu Feb 14 09:32:56 2019
  845. (==) Using system config directory "/usr/share/X11/xorg.conf.d"
  846. (==) No Layout section. Using the first Screen section.
  847. (==) No screen section available. Using defaults.
  848. (**) |-->Screen "Default Screen Section" (0)
  849. (**) | |-->Monitor "<default monitor>"
  850. (==) No device specified for screen "Default Screen Section".
  851. Using the first device section listed.
  852. (**) | |-->Device "Allwinner A10/A13 FBDEV"
  853. (==) No monitor specified for screen "Default Screen Section".
  854. Using a default monitor configuration.
  855. (==) Automatically adding devices
  856. (==) Automatically enabling devices
  857. (==) Automatically adding GPU devices
  858. (==) Max clients allowed: 256, resource mask: 0x1fffff
  859. (WW) The directory "/usr/share/fonts/X11/misc" does not exist.
  860. Entry deleted from font path.
  861. (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
  862. Entry deleted from font path.
  863. (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
  864. Entry deleted from font path.
  865. (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
  866. Entry deleted from font path.
  867. (WW) The directory "/usr/share/fonts/X11/Type1" does not exist.
  868. Entry deleted from font path.
  869. (WW) The directory "/usr/share/fonts/X11/100dpi" does not exist.
  870. Entry deleted from font path.
  871. (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
  872. Entry deleted from font path.
  873. (==) FontPath set to:
  874. built-ins
  875. (==) ModulePath set to "/usr/lib/xorg/modules"
  876. (II) The server relies on udev to provide the list of input devices.
  877. If no devices become available, reconfigure udev or disable AutoAddDevices.
  878. (++) using VT number 8
  879.  
  880. (II) systemd-logind: logind integration requires -keeptty and -keeptty was not provided, disabling logind integration
  881. (II) no primary bus or device found
  882. (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
  883. (II) Module glx: vendor="X.Org Foundation"
  884. compiled for 1.19.2, module version = 1.0.0
  885. (II) Loading /usr/lib/xorg/modules/drivers/fbturbo_drv.so
  886. (II) Module fbturbo: vendor="X.Org Foundation"
  887. compiled for 1.19.2, module version = 0.5.1
  888. (II) FBTURBO: driver for framebuffer: fbturbo
  889. (EE)
  890. Fatal server error:
  891. (EE) xf86OpenConsole: Cannot open virtual console 8 (Permission denied)
  892. (EE)
  893. (EE)
  894. Please consult the The X.Org Foundation support
  895. at http://wiki.x.org
  896. for help.
  897. (EE) Please also check the log file at "/home/pi/.local/share/xorg/Xorg.100.log" for additional information.
  898. (EE)
  899. (WW) xf86CloseConsole: KDSETMODE failed: Bad file descriptor
  900. (WW) xf86CloseConsole: VT_GETMODE failed: Bad file descriptor
  901. (EE) Server terminated with error (1). Closing log file.
  902.  
  903. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/message.log <==
  904. x11docker[776.97]: Waiting since 0s for --xorg to be ready.
  905.  
  906. x11docker[777.00]: Waiting since 1s for /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.pid1pid to have content, will wait up to 32000 seconds.
  907.  
  908. x11docker ERROR: Error during startup of X server --xorg.
  909. Last lines of xinit log:
  910. (EE)
  911. (EE)
  912. Please consult the The X.Org Foundation support
  913. at http://wiki.x.org
  914. for help.
  915. (EE) Please also check the log file at "/home/pi/.local/share/xorg/Xorg.100.log" for additional information.
  916. (EE)
  917. (WW) xf86CloseConsole: KDSETMODE failed: Bad file descriptor
  918. (WW) xf86CloseConsole: VT_GETMODE failed: Bad file descriptor
  919. (EE) Server terminated with error (1). Closing log file.
  920.  
  921.  
  922.  
  923. Type 'x11docker --help' for usage information
  924. Debug options: '--verbose' (full log) or '--debug' (log excerpt).
  925. Logfile will be: /home/pi/.cache/x11docker/x11docker.log
  926. Please report issues at https://github.com/mviereck/x11docker
  927.  
  928. x11docker[777.08]: Terminating x11docker.
  929.  
  930. x11docker[777.11]: time to say goodbye (finish-subshell)
  931.  
  932. x11docker[777.26]: Terminating 4144 (containershell) x11docker: PID TTY TIME CMD
  933. 4144 pts/0 00:00:00 bash
  934.  
  935. x11docker[777.56]: Waiting since 2s for /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.pid1pid to have content, will wait up to 32000 seconds.
  936.  
  937. x11docker[777.57]: Stopped waiting for file content of /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/container.pid1pid due to terminating signal.
  938.  
  939. x11docker[777.93]: time to say goodbye (watchpidlist)
  940.  
  941.  
  942. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/xinit.log <==
  943. xinit: giving up
  944. xinit: unable to connect to X server: Connection refused
  945. xinit: server error
  946.  
  947. ==> /home/pi/.cache/x11docker/magicmirror-cba6ca3f1b9490eb3c5ec3361b7a99e0/message.log <==
  948. x11docker[791.88]: time to say goodbye (main)
  949.  
  950. x11docker[791.90]: Terminating x11docker.
  951.  
  952. x11docker[792.11]: Terminating 3919 (watchmessagefifo) x11docker: PID TTY TIME CMD
  953. 3919 pts/0 00:00:00 bash
  954.  
  955. x11docker[793.32]: time to say goodbye (finish)
  956.  
  957. x11docker[793.33]: Exitcode 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement