diff --git a/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh
index 95358c9652c3d41ee3be7bb7db74cb6cf1ece40c..9f2e8438770202f9af2e70bcf34be29a2379885b 100755
--- a/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh
+++ b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh
@@ -8,14 +8,14 @@ __dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
 __file="${__dir}/$(basename "${BASH_SOURCE[0]}")"
 __base="$(basename ${__file} .sh)"
 
-# Since we are emulating, the real /boot is not mounted, 
-# leading to mismatch between kernel image and modules.
-mount /dev/sda1 /boot
-
 # Recommends: antiword, graphviz, ghostscript, python-gevent, poppler-utils
 export DEBIAN_FRONTEND=noninteractive
 echo "nameserver 8.8.8.8" >> /etc/resolv.conf
 
+echo "export LANGUAGE=en_US.UTF-8" >> ~/.bashrc
+echo "export LANG=en_US.UTF-8" >> ~/.bashrc
+echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
+source ~/.bashrc
 
 apt-get update && apt-get -y upgrade
 # Do not be too fast to upgrade to more recent firmware and kernel than 4.38
@@ -142,30 +142,15 @@ update-rc.d -f nginx remove
 update-rc.d -f dnsmasq remove
 update-rc.d timesyncd defaults
 
-systemctl daemon-reload
 systemctl enable ramdisks.service
 systemctl disable dphys-swapfile.service
 systemctl enable ssh
-
-# USER PI AUTO LOGIN (from nano raspi-config)
-# We take the whole algorithm from raspi-config in order to stay compatible with raspbian infrastructure
-if command -v systemctl > /dev/null && systemctl | grep -q '\-\.mount'; then
-        SYSTEMD=1
-elif [ -f /etc/init.d/cron ] && [ ! -h /etc/init.d/cron ]; then
-        SYSTEMD=0
-else
-        echo "Unrecognised init system"
-        return 1
-fi
-if [ $SYSTEMD -eq 1 ]; then
-    systemctl set-default graphical.target
-    systemctl disable getty@tty1.service
-    systemctl enable autologin@.service
-    systemctl disable systemd-timesyncd.service
-    systemctl disable hostapd.service
-else
-    update-rc.d lightdm enable 2
-fi
+systemctl set-default graphical.target
+systemctl disable getty@tty1.service
+systemctl enable autologin@.service
+systemctl disable systemd-timesyncd.service
+systemctl unmask hostapd.service
+systemctl disable hostapd.service
 
 # disable overscan in /boot/config.txt, we can't use
 # overwrite_after_init because it's on a different device
@@ -174,10 +159,6 @@ fi
 # cf: https://www.raspberrypi.org/documentation/configuration/raspi-config.md
 echo "disable_overscan=1" >> /boot/config.txt
 
-# https://www.raspberrypi.org/forums/viewtopic.php?p=79249
-# to not have "setting up console font and keymap" during boot take ages
-setupcon
-
 # exclude /drivers folder from git info to be able to load specific drivers
 echo "addons/hw_drivers/drivers/" > /home/pi/odoo/.git/info/exclude
 
@@ -190,6 +171,3 @@ create_ramdisk_dir "/var"
 create_ramdisk_dir "/etc"
 create_ramdisk_dir "/tmp"
 mkdir /root_bypass_ramdisks
-umount /dev/sda1
-
-reboot
diff --git a/addons/point_of_sale/tools/posbox/posbox_create_image.sh b/addons/point_of_sale/tools/posbox/posbox_create_image.sh
index 1a5b6e322d3af22dbf25de69e26fd505b1b1170e..d71393c061e74d13f24a6d6e3f3f6182f5292240 100755
--- a/addons/point_of_sale/tools/posbox/posbox_create_image.sh
+++ b/addons/point_of_sale/tools/posbox/posbox_create_image.sh
@@ -18,22 +18,22 @@ require_command () {
 }
 
 require_command kpartx
-require_command qemu-system-arm
+require_command qemu-arm-static
 require_command zerofree
 
 __dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
 __file="${__dir}/$(basename "${BASH_SOURCE[0]}")"
 __base="$(basename ${__file} .sh)"
 
-
 MOUNT_POINT="${__dir}/root_mount"
 OVERWRITE_FILES_BEFORE_INIT_DIR="${__dir}/overwrite_before_init"
 OVERWRITE_FILES_AFTER_INIT_DIR="${__dir}/overwrite_after_init"
 VERSION=13.0
 REPO=https://github.com/odoo/odoo.git
 
-if [ ! -f kernel-qemu ] || ! file_exists *raspbian*.img ; then
-    ./posbox_download_images.sh
+if ! file_exists *raspbian*.img ; then
+    wget 'http://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-09-30/2019-09-26-raspbian-buster-lite.zip' -O raspbian.img.zip
+    unzip raspbian.img.zip
 fi
 
 cp -a *raspbian*.img posbox.img
@@ -84,8 +84,12 @@ START_OF_ROOT_PARTITION=$(fdisk -l posbox.img | tail -n 1 | awk '{print $2}')
  echo 'p';                          # print
  echo 'w') | fdisk posbox.img       # write and quit
 
-LOOP_MAPPER_PATH=$(kpartx -avs posbox.img | tail -n 1 | cut -d ' ' -f 3)
+LOOP=$(kpartx -avs posbox.img)
+LOOP_MAPPER_PATH=$(echo "${LOOP}" | tail -n 1 | awk '{print $3}')
 LOOP_MAPPER_PATH="/dev/mapper/${LOOP_MAPPER_PATH}"
+LOOP_MAPPER_BOOT=$(echo "${LOOP}" | tail -n 2 | awk 'NR==1 {print $3}')
+LOOP_MAPPER_BOOT="/dev/mapper/${LOOP_MAPPER_BOOT}"
+
 sleep 5
 
 # resize filesystem
@@ -94,30 +98,19 @@ resize2fs "${LOOP_MAPPER_PATH}"
 
 mkdir -p "${MOUNT_POINT}" #-p: no error if existing
 mount "${LOOP_MAPPER_PATH}" "${MOUNT_POINT}"
+mount "${LOOP_MAPPER_BOOT}" "${MOUNT_POINT}/boot/"
+
+QEMU_ARM_STATIC="/usr/bin/qemu-arm-static"
+cp "${QEMU_ARM_STATIC}" "${MOUNT_POINT}/usr/bin/"
 
 # 'overlay' the overwrite directory onto the mounted image filesystem
 cp -a "${OVERWRITE_FILES_BEFORE_INIT_DIR}"/* "${MOUNT_POINT}"
+chroot "${MOUNT_POINT}" /bin/bash -c "sudo /etc/init_posbox_image.sh"
 
 # get rid of the git clone
 rm -rf "${CLONE_DIR}"
 # and the ngrok usr/bin
 rm -rf "${OVERWRITE_FILES_BEFORE_INIT_DIR}/usr"
-
-# get rid of the mount, we have to remount it anyway because we have
-# to "refresh" the filesystem after qemu modified it
-sleep 2
-umount "${MOUNT_POINT}"
-
-# from http://paulscott.co.za/blog/full-raspberry-pi-raspbian-emulation-with-qemu/
-# ssh pi@localhost -p10022
-# as of stretch with newer kernels, the versatile-pb.dtb file is necessary
-QEMU_OPTS=(-kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -dtb versatile-pb.dtb -no-reboot -serial stdio -append 'root=/dev/sda2 rootfstype=ext4 rw' -hda posbox.img -net user,hostfwd=tcp::10022-:22,hostfwd=tcp::18069-:8069 -net nic)
-if [ -z ${DISPLAY:-} ] ; then
-    QEMU_OPTS+=(-nographic)
-fi
-qemu-system-arm "${QEMU_OPTS[@]}"
-
-mount "${LOOP_MAPPER_PATH}" "${MOUNT_POINT}"
 cp -av "${OVERWRITE_FILES_AFTER_INIT_DIR}"/* "${MOUNT_POINT}"
 
 find "${MOUNT_POINT}"/ -type f -name "*.iotpatch"|while read iotpatch; do
@@ -129,11 +122,11 @@ find "${MOUNT_POINT}"/ -type f -name "*.iotpatch"|while read iotpatch; do
 done
 
 # cleanup
-sleep 2
-umount "${MOUNT_POINT}"
-rm -r "${MOUNT_POINT}"
+umount -f "${MOUNT_POINT}"/boot
+umount -f "${MOUNT_POINT}"
 
 echo "Running zerofree..."
 zerofree -v "${LOOP_MAPPER_PATH}" || true
 
 kpartx -d posbox.img
+rm -rf "${MOUNT_POINT}"
diff --git a/addons/point_of_sale/tools/posbox/posbox_download_images.sh b/addons/point_of_sale/tools/posbox/posbox_download_images.sh
deleted file mode 100755
index e810d0f913318390a0025129064f541a70f4b43e..0000000000000000000000000000000000000000
--- a/addons/point_of_sale/tools/posbox/posbox_download_images.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-wget 'http://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-09-30/2019-09-26-raspbian-buster-lite.zip' -O raspbian.img.zip
-unzip raspbian.img.zip
-wget 'https://github.com/dhruvvyas90/qemu-rpi-kernel/raw/master/kernel-qemu-4.14.79-stretch' -O kernel-qemu
-wget 'https://github.com/dhruvvyas90/qemu-rpi-kernel/raw/master/versatile-pb.dtb'
-