View Single Post
Old 05-28-2023, 05:22 PM   #53
elinkser
Addict
elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.
 
Posts: 231
Karma: 146236
Join Date: Oct 2022
Device: Kobo Clara HD
*** ALPINE 3.18 INSTALL ON KOBO CLARA HD (4.35.20400) ***

*** ALPINE 3.18 INSTALL ON KOBO CLARA HD (4.35.20400) ***


I. INSTALL KOREADER
https://www.mobileread.com/forums/sh...d.php?t=314220


II. DOWNLOAD PREREQUISITES

From your desktop, download alpine-minirootfs-3.18.0-armv7.tar.gz, fbink-xdamage.zip, libinput-touchscreen.zip, and xorg-kobo-touch.py.

$ wget https://dl-cdn.alpinelinux.org/alpin...0-armv7.tar.gz

$ git clone --recurse-submodules https://github.com/tux-linux/fbink-xdamage.git
$ cd fbink-xdamage/
$ sudo rm -R .git
$ tar zcvf fbink-xdamage.tgz fbink-xdamage/

$ wget https://github.com/xiamaz/libinput-t...ads/master.zip
$ mv master.zip libinput-touchscreen.zip

You can download NiMa's original instructions and xorg-kobo-touch.py from mobileread.com:
https://www.mobileread.com/forums/sh...d.php?t=336175
https://www.mobileread.com/forums/sh....php?p=4077882

Create a /mnt/onboard/shared/ folder on the Kobo and copy the above files to there.


III. CREATE/EDIT SUPPORT FILES ON KOBO

EDIT /mnt/onboard/.kobo/Kobo/Kobo eReader.conf (optional):
Code:
[ApplicationPreferences]
AIRPLANE_MODE=false
SideloadedMode=true
EDIT /mnt/onboard/.adds/nm/config.txt:
Code:
menu_item :main :USB Networking on :cmd_spawn :quiet:exec /mnt/onboard/opt/usbtoeth
    chain_success                      :dbg_toast          :Started USB networking
    chain_failure                      :dbg_toast          :Error 
menu_item :main :USB Networking off :cmd_spawn :quiet:exec /mnt/onboard/opt/usbtoethd
    chain_success                      :dbg_toast          :Stopped USB networking
    chain_failure                      :dbg_toast          :Error 

menu_item :main    :IP Address         :cmd_output         :500:/sbin/ifconfig | /usr/bin/awk '/inet addr/{print substr($2,6)}'

menu_item :main    :Dropbear (toggle)  :cmd_output         :500:quiet :/usr/bin/pkill -f "dropbear"
    chain_success:skip:5
    chain_failure                      :cmd_spawn          :quiet :/bin/mount -t devpts | /bin/grep -q /dev/pts || { /bin/mkdir -p /dev/pts && /bin/mount -t devpts devpts /dev/pts; }
    chain_success                      :cmd_spawn          :quiet :export HOME="/mnt/onboard/.adds/koreader/" && cd "$HOME" && /mnt/onboard/.adds/koreader/scripts/dropbear -E -R -p2222 >/mnt/onboard/.adds/koreader/DropbearLog.txt  2>&1 
    chain_success                      :dbg_toast          :Started Dropbear server on port 2222
    chain_failure                      :dbg_toast          :Error starting Dropbear server on port 2222
    chain_always:skip:-1
    chain_success                      :dbg_toast          :Stopped Dropbox server on port 2222
    
menu_item : main: Dropbear Log :nickel_browser : modal :file:///mnt/onboard/.adds/koreader/DropbearLog.txt            
                                                                                                                                                                                                                                                                                                                                                                  menu_item : main : Orientation - LANDSCAPE - handle above : nickel_orientation: landscape
menu_item : main : Orientation - LANDSCAPE - handle below : nickel_orientation: inverted_landscape
menu_item : main : Orientation - PORTRAIT - handle on left : nickel_orientation: inverted_portrait
menu_item : main : Orientation - PORTRAIT - handle on right : nickel_orientation: portrait

menu_item :main    :HOST USB           :cmd_spawn          :quiet :sh /mnt/onboard/opt/otgon.sh
    chain_success                      :dbg_toast          :HOST USB 
    chain_failure                      :dbg_toast          :Error 
menu_item :main    :GADGET USB         :cmd_spawn          :quiet :/bin/echo gadget > /sys/kernel/debug/ci_hdrc.0/role
    chain_success                      :dbg_toast          :GADGET USB 
    chain_failure                      :dbg_toast          :Error 
menu_item :main    :USB role           :cmd_output         :500:/bin/cat /sys/kernel/debug/ci_hdrc.0/role

menu_item :main :User Xorg :cmd_spawn :quiet:exec /mnt/onboard/opt/uxorg-boot.sh
    chain_success                      :dbg_toast          :Started Xorg as non-root user
    chain_failure                      :dbg_toast          :Error 
menu_item :main :Xorg :cmd_spawn :quiet:exec /mnt/onboard/opt/xorg-boot.sh
    chain_success                      :dbg_toast          :Started Xorg
    chain_failure                      :dbg_toast          :Error
CREATE /mnt/onboard/opt/usbtoeth:
Code:
#!/bin/sh
insmod /drivers/mx6sll-ntx/usb/gadget/configfs.ko
insmod /drivers/mx6sll-ntx/usb/gadget/libcomposite.ko
insmod /drivers/mx6sll-ntx/usb/gadget/u_ether.ko
insmod /drivers/mx6sll-ntx/usb/gadget/usb_f_ecm.ko
insmod /drivers/mx6sll-ntx/usb/gadget/usb_f_eem.ko
insmod /drivers/mx6sll-ntx/usb/gadget/usb_f_ecm_subset.ko
insmod /drivers/mx6sll-ntx/usb/gadget/usb_f_rndis.ko
insmod /drivers/mx6sll-ntx/usb/gadget/g_ether.ko
ifconfig usb0 192.168.2.2
CREATE /mnt/onboard/opt/usbtoethd:
Code:
#!/bin/sh
ifconfig usb0 down
rmmod g_ether usb_f_rndis usb_f_ecm_subset usb_f_eem usb_f_ecm u_ether libcomposite configfs
CREATE /mnt/onboard/opt/otgon.sh:
Code:
#!/bin/bash
mount -t debugfs none /sys/kernel/debug
echo host > /sys/kernel/debug/ci_hdrc.0/role
CREATE /mnt/onboard/opt/uxorg-boot.sh:
Code:
#!/bin/sh
mount /mnt/onboard/alpine.img /mnt/user
mount -v --bind /mnt/onboard/shared /mnt/user/shared
mount -v --bind /dev /mnt/user/dev
mount -v --bind /dev/pts /mnt/user/dev/pts
mount -vt proc proc /mnt/user/proc
mount -vt sysfs sysfs /mnt/user/sys
mount -vt tmpfs tmpfs /mnt/user/run
mount -vt tmpfs tmpfs /mnt/user/tmp
mkdir /mnt/user/dev/shm
mount -vt tmpfs tmpfs /mnt/user/dev/shm
cp /etc/resolv.conf /mnt/user/etc
export DBUS_SESSION_BUS_ADDRESS NICKEL_HOME WIFI_MODULE LANG WIFI_MODULE_PATH INTERFACE
sync
killall -TERM nickel hindenburg sickel fickel fmon 2>/dev/null
chroot /mnt/user /bin/sh /uxorg-chroot.sh
CREATE /mnt/onboard/opt/xorg-boot.sh:
Code:
#!/bin/sh
mount /mnt/onboard/alpine.img /mnt/user
mount -v --bind /mnt/onboard/shared /mnt/user/shared
mount -v --bind /dev /mnt/user/dev
mount -v --bind /dev/pts /mnt/user/dev/pts
mount -vt proc proc /mnt/user/proc
mount -vt sysfs sysfs /mnt/user/sys
mount -vt tmpfs tmpfs /mnt/user/run
mount -vt tmpfs tmpfs /mnt/user/tmp
mkdir /mnt/user/dev/shm
mount -vt tmpfs tmpfs /mnt/user/dev/shm
cp /etc/resolv.conf /mnt/user/etc
export DBUS_SESSION_BUS_ADDRESS NICKEL_HOME WIFI_MODULE LANG WIFI_MODULE_PATH INTERFACE
sync
killall -TERM nickel hindenburg sickel fickel fmon 2>/dev/null
chroot /mnt/user /bin/sh /xorg-chroot.sh
CREATE /korenv.sh:
Code:
#!/bin/sh
export PATH=$PATH:/mnt/onboard/.adds/koreader/scripts:/mnt/onboard/.adds/koreader/plugins/terminal.koplugin/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/onboard/.adds/koreader/libs
export TERM=xterm
export HOME=/mnt/onboard/.adds/koreader/
cd $HOME
CREATE /mnt/onboard/.adds/koreader/scripts/chalpine.sh:
Code:
#!/bin/sh
mount /mnt/onboard/alpine.img /mnt/user
mount -v --bind /mnt/onboard/shared /mnt/user/shared
mount -v --bind /dev /mnt/user/dev
mount -vt proc proc /mnt/user/proc
mount -vt sysfs sysfs /mnt/user/sys
cp /etc/resolv.conf /mnt/user/etc
chroot /mnt/user/ /bin/sh
CREATE /mnt/onboard/.adds/koreader/scripts/chalpined.sh:
Code:
#!/bin/sh
umount /mnt/user/dev
umount /mnt/user/proc
umount /mnt/user/sys
umount /mnt/user/shared
umount /mnt/user

IV. SET UP TELNET/SSH CONNECTION FROM DESKTOP TO KOBO

You can use Telnet (need devmodeon for this) or SSH, by WiFi or over USB cable.
See NiMa's original instructions if unsure.

To connect desktop to Kobo by SSH over the USB cable, first start KOReader's SSH server.
You can also start the KOReader SSH server via NickelMenu.


V. CREATE CHROOT

Connect to your Kobo from your desktop by ssh or telnet:
e.g.
$ ssh root@192.168.2.2 -p 2222
OR
$ telnet <IP>
WHERE <IP> is the Kobo's IP address as given by "IP Address" entry in NickelMenu.

From desktop SSH session to Kobo, first back up the old alpine.img (if applicable):
# cd /mnt/onboard
# mv alpine.img alpineBKUP.img

Now create/edit 2GB disk image file (takes about 1min):
# dd if=/dev/zero of=/mnt/onboard/alpine.img bs=1M count=2048

Format the disk image:
# mke2fs -F /mnt/onboard/alpine.img

Mount the disk image:
# mount /mnt/onboard/alpine.img /mnt/user

Copy the Alpine Linux 3.18 root file system archive to the mounted disk image:
# cp shared/alpine-minirootfs-3.18.0-armv7.tar.gz /mnt/user/

Extract the root file system:
# cd /mnt/user
# tar zxvf alpine-minirootfs-3.18.0-armv7.tar.gz
# mkdir shared
# rm alpine-minirootfs-3.18.0-armv7.tar.gz
# cd /mnt/onboard

Switch to KOReader HOME and PATH environment:
# . /korenv.sh

Chroot to the new root file system:
# chalpine.sh

Connect your Kobo to WiFi (if not already connected) and and leave the WiFi menu open at the top of the screen.

Update the packages list:
# apk update

Install essential files (takes about 1min, 450MB):
# apk add alpine-sdk xorg-server-dev libx11-dev libxdamage-dev libxfixes-dev xorg-server xf86-video-dummy xvfb font-noto openbox xterm onboard xdotool tint2 python3 evtest xf86-video-fbdev

Build fbink-xdamage (takes about 5min):
# mkdir /home/root && cd /home/root
# cp /shared/fbink-xdamage.tgz .
# tar zxvf fbink-xdamage.tgz
# cd fbink-xdamage/
# make

Build libinput-touchscreen:
# cd /home/root/
# apk add eudev eudev-hwids xf86-input-libinput libinput-tools xinput libinput-dev eudev-dev
# cp /shared/libinput-touchscreen.zip .
# unzip libinput-touchscreen.zip
# cd libinput-touchscreen-master/
# make

Copy xorg-kobo-touch.py:
# cd /home/root/
# cp /shared/xorg-kobo-touch.py /home


VI. CREATE USER AND INSTALL PACKAGES

# adduser myuser
# echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing/" >> /etc/apk/repositories
# apk update
# apk add sudo bash tzdata xmessage nano mc lynx elinks xvkbd svkbd qterminal qpdfview netsurf featherpad tigervnc-client x11vnc openssh-server pcmanfm drawing lxterminal w3m w3m-image
# df -h
Filesystem Size Used Available Use% Mounted on
/dev/loop2 2.0G 730.3M 1.2G 38% /


VII. CREATE/EDIT CONFIG FILES IN CHROOT

Create/edit the following files in /:

CREATE /uxorg-chroot.sh:
Code:
#!/bin/sh
export HOME=/home/root
mkdir /tmp/root
udevd -d
sleep 2
udevadm trigger
sleep 2
X -dpi 250 &
cd /home/root/fbink-xdamage
sleep 3
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/root/fbink-xdamage/FBInk/Release/; env DISPLAY=:0 ./fbink_xdamage &
sleep 3
cd /home/myuser
DISPLAY=:0  /usr/local/bin/libinput-touchscreen &
#evtest --grab /dev/input/event1 > evtest-log &
#sleep 1
#while true; do python3 /home/xorg-kobo-touch.py ; done &
#sleep 1
echo 20 > /sys/class/backlight/mxc_msp430.0/brightness
DISPLAY=:0 sudo -u myuser openbox &
DISPLAY=:0 sudo -u myuser tint2 &
DISPLAY=:0 qterminal  --geometry 1400x620+20+60  &
# ***NOTE qterminal runs as root to get around terminal bug***
DISPLAY=:0 sudo -u myuser  netsurf --window_width 1400 --window_height 620 --window_x 20 --window_y 60 --font_size 192 --scale 150 &
DISPLAY=:0 sudo -u myuser  svkbd-mobile-intl -g 1400x320+20+700 &
#DISPLAY=:0 sudo -u myuser onboard -y 750 --size 1000x300 &
#DISPLAY=:0 sudo -u myuser  featherpad  --geometry 1400x620+20+60  &
#DISPLAY=:0 sudo -u myuser  vncviewer -geometry 1400x960+20+60 192.168.43.9  &
#/usr/sbin/sshd &
CREATE /xorg-chroot.sh:
Code:
#!/bin/sh
export HOME=/home/root
mkdir /tmp/root
udevd -d
sleep 2
udevadm trigger
sleep 2
X -dpi 250 &
cd /home/root/fbink-xdamage
sleep 3
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/root/fbink-xdamage/FBInk/Release/; env DISPLAY=:0 ./fbink_xdamage &
sleep 3
cd /home/root
DISPLAY=:0  /usr/local/bin/libinput-touchscreen &
#evtest --grab /dev/input/event1 > evtest-log &
#sleep 1
#while true; do python3 /home/xorg-kobo-touch.py ; done &
#sleep 1
echo 20 > /sys/class/backlight/mxc_msp430.0/brightness
DISPLAY=:0 openbox &
DISPLAY=:0 tint2 &
DISPLAY=:0 qterminal  --geometry 1400x620+20+60  &
DISPLAY=:0 netsurf --window_width 1400 --window_height 620 --window_x 20 --window_y 60 --font_size 192 --scale 150 &
DISPLAY=:0 svkbd-mobile-intl -g 1400x320+20+700 &
#DISPLAY=:0 onboard -y 750 --size 1000x300 &
#DISPLAY=:0 featherpad  --geometry 1400x620+20+60  &
#DISPLAY=:0 vncviewer -geometry 1400x960+20+60 192.168.43.9  &
#/usr/sbin/sshd &

Create/edit in /home/root/:

CREATE .bashrc:
Code:
source /home/root/.profile
HISTCONTROL=ignoreboth
shopt -s histappend
CREATE .profile:
Code:
alias ls='ls --color=never'
alias grep='grep --color=never'
Copy to /home/myuser/:

# cp -r /home/root/.bashrc /home/myuser/

# chown -R myuser:myuser /home/myuser/.bashrc

# cp -r /home/root/.profile /home/myuser/

# chown -R myuser:myuser /home/myuser/.profile


Create/edit settings in /home/root/.config/:

# mkdir /home/root/.config/

# cd /home/root/.config/

# mkdir gtk-3.0/

CREATE gtk-3.0/gtk.css:
Code:
scrollbar slider {min-width: 50px;}
scrollbar slider {min-height: 50px;}
{ 
    font-family: "Noto Sans"; 
    font-size: 24px; 
}
CREATE gtk-3.0/settings.ini:
Code:
[Settings]
gtk-font-name=Noto Sans Regular 18

# mkdir libinput-touchscreen/

CREATE libinput-touchscreen/config:
Code:
# Format: <BORDER|GESTURE|TAP> <DIRECTION:N,S,E,W,X> <NUM_FINGER>
MOVEMENT S 2
    xdotool key Page_Up
MOVEMENT N 2
    xdotool key Page_Down
MOVEMENT E 2
    xdotool click 3
MOVEMENT W 2
    xdotool click 3
TAP X 3
    xdotool key Ctrl+Shift+g
CREATE libinput-touchscreen/dims.txt:
Code:
0.000000 1448.000000  # X dimensions
0.000000 1072.500000  # Y dimensions

# cp /home/root/libinput-touchscreen-master/libinput-touchscreen /usr/local/bin/


Edit in /etc/ (using just "visudo" command to edit /etc/sudoers):

sudoers:
Code:
##
## User privilege specification
##
root ALL=(ALL:ALL) ALL
myuser ALL=NOPASSWD: /bin/login                                                        
myuser ALL=NOPASSWD: /sbin/poweroff                                                    
myuser ALL=NOPASSWD: /usr/bin/killall
myuser ALL=NOPASSWD: /usr/local/bin/libinput-touchscreen
##
Edit in /etc/udev/hwdb.d/:

60-evdev.hwdb:
Code:
# Sort by brand, model
evdev:input:b0000v0000p0000*
 ID_INPUT=1
 ID_INPUT_TOUCHSCREEN=1
 EVDEV_ABS_00=::12
 EVDEV_ABS_01=::12

Edit taskbar icon settings:

# cd /usr/share/applications/

# cp xvkbd.desktop svkbd.desktop

# cp xvkbd.desktop xdodd.desktop

# cp xvkbd.desktop xdorc.desktop

EDIT onboard.desktop
Code:
[Desktop Entry]
Exec=onboard -x 20 -y 700 --size 1400x320 &
Icon=onboard
EDIT svkbd.desktop
Code:
[Desktop Entry]
Exec=svkbd-mobile-intl -g 1400x320+20+700
Icon=svkbd
EDIT qterminal.desktop
Code:
[Desktop Entry]
Exec=qterminal --geometry 1400x620+20+60
Icon=qterminal
EDIT featherpad.desktop
Code:
[Desktop Entry]
Exec=env QT_FONT_DPI=175 featherpad %U
Icon=featherpad
EDIT netsurf.desktop
Code:
[Desktop Entry]
Exec=netsurf --scale 150
Icon=netsurf
EDIT vncviewer.desktop
Code:
[Desktop Entry]
Exec=/usr/bin/vncviewer -geometry 1400x960+20+60 192.168.43.1:5900
Icon=tigervnc
EDIT xdodd.desktop
Code:
[Desktop Entry]
Exec=xdotool sleep 2 mousedown 1 sleep 4  mouseup 1
Icon=xfce-wm-unmaximize
EDIT xdorc.desktop
Code:
[Desktop Entry]
Exec=xdotool sleep 2 mousemove_relative -- 60 0 click 3
Icon=wmtweaks

Exit the chroot environment

# sync

# exit

# chalpined.sh



VIII. FIRST STARTUP OF XORG FROM NICKEL MENU


From NickelMenu, select "landscape" orientation (Orientation - LANDSCAPE - handle above).

Connect your Kobo to WiFi internet (if not already connected) and and leave the WiFi menu open at the top of the screen.

From NickelMenu, select "Xorg". After a few seconds, you should see the keyboard and browser.

From desktop SSH session to Kobo, chroot to the Alpine root file system:
(You don't use the chalpine.sh script since the mounts are done by the NickelMenu command.)

# chroot /mnt/user /bin/sh


Update the hwdb binary file on-disk, and trigger a reload of all properties on your device:

# udevadm hwdb --update

# udevadm trigger /sys/class/input/event1


Edit the remaining configuration files:

# cd /home/root/.config

# mkdir openbox/

# cp /etc/xdg/openbox/*.xml openbox/

EDIT openbox/rc.xml:
Code:
</dock>
<keyboard>
<keybind key="C-S-g">
<action name="ToggleShowDesktop"/>
</keybind>
(*removed Ctl-U binding as it interferes with nano editor.)

CREATE netsurf/Choices:
Code:
font_size:192
accept_language:en
block_advertisements:1
send_referer:0
animate_images:0
enable_javascript:1
url_suggestion:0
window_x:20
window_y:60
window_width:1400
window_height:620
toolbar_status_size:6673
button_type:3
disable_popups:1
toolbar_items:back/history/forward/reloadstop/url_bar/copy/paste/zoomplus/zoomminus
bar_show:menu/tool

# cp tint2/t/nt2rc tint2/tint2rc

EDIT tint2/tint2rc:
Code:
###
#-------------------------------------
# Panel
panel_items = S:L::C::T:
panel_size = 100% 60
###
panel_position = top center horizontal
###
#-------------------------------------
# Launcher
###
launcher_icon_size = 48
###
launcher_item_app = onboard.desktop           
launcher_item_app = svkbd.desktop          
launcher_item_app = lxterminal.desktop 
launcher_item_app = qterminal.desktop 
launcher_item_app = com.github.maoschanz.drawing.desktop
launcher_item_app = featherpad.desktop
launcher_item_app = netsurf.desktop
launcher_item_app = vncviewer.desktop
launcher_item_app = xdodd.desktop
launcher_item_app = xdorc.desktop 
###
#-------------------------------------
# Clock
time1_format = %H:%M  
#time2_format = %A %d %B
time1_timezone = EST
time1_font = NotoSans Bold 32
clock_font_color = #ffffff 320
###
clock_lclick_command = xmessage  -geometry 400x100+500+70  -fn -*-fixed-*-*-*-*-32-*-*-*-*-*-iso8859-*   Charge Level :   `cat /sys/class/power_supply/mc13892_bat/capacity`
###

Copy configuration files to /home/myuser/:

# cp -r /home/root/.config/ /home/myuser

# chown -R myuser:myuser /home/myuser/.config


Install some extra icons:

# cd /home/root/

# wget https://dl-cdn.alpinelinux.org/alpin...-4.12.3-r0.apk

# tar zxvf xfwm4-4.12.3-r0.apk

# cp ./usr/share/icons/hicolor/scalable/actions/* /usr/share/icons/hicolor/scalable/apps/

# cp ./usr/share/icons/hicolor/scalable/apps/* /usr/share/icons/hicolor/scalable/apps/


Set up SSH server:

# ssh-keygen -A

# /usr/sbin/sshd

# ifconfig
eth0 inet addr:192.168.43.240 Bcast:192.168.43.255 Mask:255.255.255.0

# passwd

(and test from desktop "ssh root@192.168.43.240")

* Edit: This didn't actually work, but "ssh myuser@192.168.43.240" did.


** Not running sshd from the startup scripts anymore because was getting errors.
Manually invoking sshd after startup is more reliable.

Exit the chroot environment
(You don't use the chalpined.sh script since we will poweroff from the Kobo.)

# sync

# exit

# exit
Connection to 192.168.2.2 closed.
$


On the Kobo, minimize or kill the Netsurf browser and use the terminal to poweroff:

# sync

# poweroff



IX. FIRST STARTUP OF USER XORG FROM NICKEL MENU


Power on the Kobo.

From NickelMenu, select "landscape" orientation (Orientation - LANDSCAPE - handle above).

Connect your Kobo to WiFi internet and and leave the WiFi menu open at the top of the screen.

From NickelMenu, select "User Xorg". After a few seconds, you should see the keyboard and browser.

# ***NOTE qterminal runs as root to get around terminal bug***

On the Kobo, minimize or kill the Netsurf browser and use the terminal to poweroff:

# sync

# sudo poweroff

* Edit:"sudo" not needed from root terminal



X. BACKUP YOUR KOBO ALPINE LINUX CHROOT

Connect to your Kobo from your desktop by ssh or telnet:
e.g.
$ ssh root@192.168.2.2 -p 2222
OR
$ telnet <IP>
WHERE <IP> is the Kobo's IP address as given by "IP Address" entry in NickelMenu.

From desktop SSH session to Kobo, first back up support files to /mnt/onboared/shared/ folder:

# cd /mnt/onboard/shared
# cp /mnt/onboard/.adds/nm/config.txt .
# cp /mnt/onboard/opt/usbtoeth .
# cp /mnt/onboard/opt/usbtoethd .
# cp /mnt/onboard/opt/otgon.sh .
# cp /mnt/onboard/opt/uxorg-boot.sh .
# cp /mnt/onboard/opt/xorg-boot.sh .
# cp /korenv.sh .
# cp /mnt/onboard/.adds/koreader/scripts/chalpine.sh .
# cp /mnt/onboard/.adds/koreader/scripts/chalpined.sh .
# ls
alpine-minirootfs-3.18.0-armv7.tar.gz otgon.sh
chalpine.sh usbtoeth
chalpined.sh usbtoethd
config.txt uxorg-boot.sh
fbink-xdamage.tgz xfwm4-4.12.3-r0.apk
korenv.sh xorg-boot.sh
libinput-touchscreen.zip xorg-kobo-touch.py

Now mount chroot and backup files on chroot:

# cd /mnt/onboard
# mount /mnt/onboard/alpine.img /mnt/user/
# mkdir /mnt/user/backup
# cd /mnt/user/backup/
# cp -r /mnt/user/home/root/libinput-touchscreen-master/ .
# cp -r /mnt/user/home/root/fbink-xdamage/ .
# cp /mnt/user/uxorg-chroot.sh .
# cp /mnt/user/xorg-chroot.sh .
# cp /mnt/user/home/root/.bashrc .
# cp /mnt/user/home/root/.profile .
# cp -r /mnt/user/home/root/.config/ .
# cp /mnt/user/etc/sudoers .
# cp /mnt/user/etc/udev/hwdb.d/60-evdev.hwdb .
# mkdir usrshare
# cp -r /mnt/user/usr/share/applications/ ./usrshare/
# cp /mnt/user/home/root/xfwm4-4.12.3-r0.apk .
# mkdir usrshare/iconshicolorscalableapps
# cp /mnt/user/usr/share/icons/hicolor/scalable/apps/* usrshare/iconshicolorscalableapps/
# cp -r /mnt/onboard/shared .
# ls -a
. 60-evdev.hwdb usrshare
.. fbink-xdamage uxorg-chroot.sh
.bashrc libinput-touchscreen-master xfwm4-4.12.3-r0.apk
.config shared xorg-chroot.sh
.profile sudoers


Now backup the chroot:
# df -h
Filesystem Size Used Available Use% Mounted on
/dev/loop0 2.0G 784.9M 1.1G 41% /mnt/user
# cd /mnt/user
# tar zcvf /mnt/onboard/kobo-alpine318.tgz . # took 16 minutes
# cd /mnt/onboard
# umount /mnt/user
# ls -l kobo-alpine318.tgz # to see your newly created backup file, only 298MB
# sync
# exit
Connection to 192.168.2.2 closed.
$

$ zip alpine318.zip alpine.img




***
CAUTION: You know how Nickel does all that background work when you connect USB cable to desktop, click "connect", then later unmount?

Well, there may be a risk of data corruption if you had a loop mounted file, e.g. Alpine chroot.
https://www.mobileread.com/forums/sh...38&postcount=2

So better don't try this. But if you DO connect a USB cable, either exit the chroot and unmount the loop first, OR click "cancel" and use SSH/Telnet networking instead. (I have done this for months.)
***

Last edited by elinkser; 10-19-2023 at 05:05 PM. Reason: scrollbar height, dpi 250 for titlebar height, backup section,no Ctl-U
elinkser is offline   Reply With Quote