03-31-2020, 04:59 PM
Alright, here we go... I was finally able to clear up some spare time in my crazy schedule to put together a slimmed down Xfce image. I also ran through a typical setup process (including Pinebook specifics) and was able to jot down some notes this time.
For starters, here is an SD card image that has X and Xfce, but I left out KDE and the Development package series, plus a few other things not needed on arm boards (such as Grub and LiLo).
https://3space.xyz/pineslarm/slarm64-cur...81b.img.xz
https://3space.xyz/pineslarm/slarm64-cur...img.xz.md5
After writing this out to an SD card, here are my notes:
boot....
wait....
the boot scripts resize the partition and do a few other first-boot things such as create fresh ssh keys.
watch messages for errors, eventually you wind up at a login prompt.
login, follow the script to create a new user.
Then, issue these commands:
change the root password
it is recommended to use NetworkManager, but feel free to experiment here.
the easiest way to get changes to take, can also restart services
login as new user, then:
choose xfce if you are feeling conservative, anything else if more daring
set up Xfce however you like it.
Here is a quick screen brightness trick:
add to the panel the Power Manager plugin. Through this you can conrtol screen brightness. Script comes later.
connect to WiFi using the networkmanager-applet plugin in the taskbar.
open terminal
now you can add/remove packages/package sets as you see fit.
For example, I left out the Development package set "d" from the Xfce image.
install the entire Development package set using:
(you can deselect specific packages too)
Best way to explore the packages is to look through PACKAGES.TXT
For other Slackware-specific issues, best to search on LQ or read the docs/man pages.
One of the nicest things about Slackware is the vanilla approach. Most packages are as the author intended, so you can just read the help pages for that specific command or package from any upstream resource and it usually applies well.
~~~~~~~
Pinebook Specifics.....
WiFi power settings (from https://github.com/anarsoul/linux-build)
Brightness script (from this forum somehwere, can't quite recall)
Those just set the stage. I put that in my rc.local (more on that later). Then you can run this script:
as such, to increase or decrease brightness (and bind these to key combinations eventually):
To increase:
To decrease:
The internal speakers are muted by default. You can unmute them using alsmixer, or just run:
That is another good one for the rc.local script.
I think that is about it for Pinebook fixes. If I think of anything I left out, I will make another post.
If you want to write your SD image to the eMMC:
-----
installation on a eMMC (for pinebook)
Flash the image to micro SD, then copy the .img file to micro SD filesystem.
Power up the board with micro SD and login.
Run below command for flashing to eMMC module
>>dd if=slarm64-current-*-base-rootfs-*-build-*.img of=/dev/mmcblk2 bs=1M
example : dd if=slarm64-current-*-xfce-rootfs-*-build-*.img of=/dev/mmcblk2 bs=1M
then edit 2 files in eMMC module:
>> mount /dev/mmcblk2p1 /media
>> echo "rootdev=/dev/mmcblk2p1" >> /media/boot/uEnv.txt
>> sed -i 's:mmcblk1p1:mmcblk2p1:' /media/etc/fstab
After done, power off board and remove micro SD. Then bootup with only eMMC module.
~~~~~~~~~~~
Building packages:
I suggest using sbopkg, but other tools are available.
Then you can build most of what is available at SlackBuilds.org
You need to use Ponce's repo for -current:
https://github.com/Ponce/slackbuilds/wik...ith-sbopkg
most work as-is, only a few need tweaking, we can talk about specific scripts in other threads or posts.
Here is a directory of my builds, most of which work (some are experimental)
https://3space.xyz/pineslarm/packages/
Packages of note:
LibreOffice
JWM
SMPlayer
mpv
etc....
~~~
By this point you are deep into the rabbit hole.
Here is my rc.local, just to show you what gets run at every boot:
Custom personal tweaks: I turn off some of the daemons that I do not use (experimental, some of these might be needed):
rc.cgmanager
rc.cgproxy
rc.consolekit
rc.cpufreq
rc.inet1
rc.mcelog
rc.nfsd
rc.rpc
rc.samba
rc.wireless
these are all located at /etc/rc.d/, and to turn them off you just make them non-executable.
Now I can boot to a graphical desktop (in my case, JWM) and connect to the Internet while using less than 150MB of RAM. Nice.
Have fun....
For starters, here is an SD card image that has X and Xfce, but I left out KDE and the Development package series, plus a few other things not needed on arm boards (such as Grub and LiLo).
https://3space.xyz/pineslarm/slarm64-cur...81b.img.xz
https://3space.xyz/pineslarm/slarm64-cur...img.xz.md5
After writing this out to an SD card, here are my notes:
boot....
wait....
the boot scripts resize the partition and do a few other first-boot things such as create fresh ssh keys.
watch messages for errors, eventually you wind up at a login prompt.
login, follow the script to create a new user.
Then, issue these commands:
Code:
passwd
Code:
netconfig
Code:
reboot
login as new user, then:
Code:
xwmconfig
Code:
startx
Here is a quick screen brightness trick:
add to the panel the Power Manager plugin. Through this you can conrtol screen brightness. Script comes later.
connect to WiFi using the networkmanager-applet plugin in the taskbar.
open terminal
Code:
su
slackpkg update
slackpkg upgrade-all
slackpkg install-new
now you can add/remove packages/package sets as you see fit.
For example, I left out the Development package set "d" from the Xfce image.
install the entire Development package set using:
Code:
slackpkg install d
Best way to explore the packages is to look through PACKAGES.TXT
For other Slackware-specific issues, best to search on LQ or read the docs/man pages.
One of the nicest things about Slackware is the vanilla approach. Most packages are as the author intended, so you can just read the help pages for that specific command or package from any upstream resource and it usually applies well.
~~~~~~~
Pinebook Specifics.....
WiFi power settings (from https://github.com/anarsoul/linux-build)
Code:
echo 'options 8723cs rtw_power_mgnt=0' >/etc/modprobe.d/8723cs.conf
Brightness script (from this forum somehwere, can't quite recall)
Code:
#permission fixes for lcd brighness script
/usr/local/bin/pinebook_lcd-brightness.sh -b &&
chown root:gpio /sys/class/backlight/backlight/actual_brightness /sys/class/backlight/backlight/max_brightness /sys/class/backlight/backlight/brightness &&
chmod 664 /sys/class/backlight/backlight/actual_brightness /sys/class/backlight/backlight/max_brightness /sys/class/backlight/backlight/brightness &&
Those just set the stage. I put that in my rc.local (more on that later). Then you can run this script:
Code:
#!/bin/bash
# Helper script for Pinebook mean to be used in conjunction with xbindkeys
# Written 2017 Peter Feerick, GPLv3 licensed.
#
# Documentation for this script on GitHub
# https://github.com/pfeerick/pine64-scripts/wiki/Pinebook-LCD-Brightness-script
# Switch paths to twiddle depending on whether sunxidrm active or not
if [ -d /sys/module/sunxidrm ]; then
ACTUAL_BRIGHTNESS_PATH="/sys/devices/platform/sunxi-drm/backlight/lcd0/actual_brightness"
MAX_BRIGHTNESS_PATH="/sys/devices/platform/sunxi-drm/backlight/lcd0/max_brightness"
BRIGHTNESS_PATH="/sys/class/backlight/lcd0/brightness"
else
ACTUAL_BRIGHTNESS_PATH="/sys/class/backlight/backlight/actual_brightness"
MAX_BRIGHTNESS_PATH="/sys/class/backlight/backlight/max_brightness"
BRIGHTNESS_PATH="/sys/class/backlight/backlight/brightness"
fi
# Check if required access permissions are available...
if [ ! -r ${ACTUAL_BRIGHTNESS_PATH} ] || [ ! -r ${MAX_BRIGHTNESS_PATH} ] || [ ! -w ${BRIGHTNESS_PATH} ]; then
echo "This script doesn't have the necessary permissions to read or change the LCD brightness!"
echo "Changes to permisisons or running as a root user is required."
exit 1
fi
MINIMUM_BRIGHTNESS=1
MAXIMUM_BRIGHTNESS=$(<${MAX_BRIGHTNESS_PATH})
ACTUAL_BRIGHTNESS=$(<${ACTUAL_BRIGHTNESS_PATH})
while getopts ":i:d:s:vb" opt; do
case $opt in
i)
NEW_BRIGHTNESS=$((ACTUAL_BRIGHTNESS + $OPTARG))
echo "Increase the LCD backlight brightness by $OPTARG to $NEW_BRIGHTNESS"
;;
d)
NEW_BRIGHTNESS=$((ACTUAL_BRIGHTNESS - $OPTARG))
echo "Decrease the LCD backlight brightness by $OPTARG to $NEW_BRIGHTNESS"
;;
s)
NEW_BRIGHTNESS=$OPTARG
echo "Set the lcd backlight brightness to $OPTARG" >&2
;;
v)
echo "Minimum brightness: $MINIMUM_BRIGHTNESS, Maximum: $MAXIMUM_BRIGHTNESS"
;;
b)
chown root:gpio ${ACTUAL_BRIGHTNESS_PATH} ${MAX_BRIGHTNESS_PATH} ${BRIGHTNESS_PATH}
chmod 664 ${ACTUAL_BRIGHTNESS_PATH} ${MAX_BRIGHTNESS_PATH} ${BRIGHTNESS_PATH}
exit 0
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
#no arguments, display current value only
if [ $# -eq 0 ]; then
echo "Current backlight brightness: $ACTUAL_BRIGHTNESS"
exit 0
fi
#if we've gotten this far, sanity check setting and apply
if [ ! -z ${NEW_BRIGHTNESS} ]; then
if [[ ${NEW_BRIGHTNESS} != ?(-)+([0-9]) ]]; then
echo "Integer input expected. '$NEW_BRIGHTNESS' is NOT an integer!"
exit 1
fi
if [ ${NEW_BRIGHTNESS} -lt ${MINIMUM_BRIGHTNESS} ]; then
echo "Below mimimum brightness threshold"
exit 1
fi
if [ ${NEW_BRIGHTNESS} -gt ${MAXIMUM_BRIGHTNESS} ]; then
echo "Above maximum brightness threshold"
exit 1
fi
echo ${NEW_BRIGHTNESS} > ${BRIGHTNESS_PATH}
fi
as such, to increase or decrease brightness (and bind these to key combinations eventually):
To increase:
Code:
./pinebook_lcd-brightness.sh -i 1
To decrease:
Code:
./pinebook_lcd-brightness.sh -d 1
The internal speakers are muted by default. You can unmute them using alsmixer, or just run:
Code:
/usr/bin/amixer -c 0 set 'DAC Mixer AIF1 DA0' unmute
That is another good one for the rc.local script.
I think that is about it for Pinebook fixes. If I think of anything I left out, I will make another post.
If you want to write your SD image to the eMMC:
-----
installation on a eMMC (for pinebook)
Flash the image to micro SD, then copy the .img file to micro SD filesystem.
Power up the board with micro SD and login.
Run below command for flashing to eMMC module
>>dd if=slarm64-current-*-base-rootfs-*-build-*.img of=/dev/mmcblk2 bs=1M
example : dd if=slarm64-current-*-xfce-rootfs-*-build-*.img of=/dev/mmcblk2 bs=1M
then edit 2 files in eMMC module:
>> mount /dev/mmcblk2p1 /media
>> echo "rootdev=/dev/mmcblk2p1" >> /media/boot/uEnv.txt
>> sed -i 's:mmcblk1p1:mmcblk2p1:' /media/etc/fstab
After done, power off board and remove micro SD. Then bootup with only eMMC module.
~~~~~~~~~~~
Building packages:
I suggest using sbopkg, but other tools are available.
Then you can build most of what is available at SlackBuilds.org
You need to use Ponce's repo for -current:
https://github.com/Ponce/slackbuilds/wik...ith-sbopkg
most work as-is, only a few need tweaking, we can talk about specific scripts in other threads or posts.
Here is a directory of my builds, most of which work (some are experimental)
https://3space.xyz/pineslarm/packages/
Packages of note:
LibreOffice
JWM
SMPlayer
mpv
etc....
~~~
By this point you are deep into the rabbit hole.
Here is my rc.local, just to show you what gets run at every boot:
Code:
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local startup commands in here. Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
#permission fixes for lcd brighness script
/usr/local/bin/pinebook_lcd-brightness.sh -b &&
chown root:gpio /sys/class/backlight/backlight/actual_brightness /sys/class/backlight/backlight/max_brightness /sys/class/backlight/backlight/brightness &&
chmod 664 /sys/class/backlight/backlight/actual_brightness /sys/class/backlight/backlight/max_brightness /sys/class/backlight/backlight/brightness &&
## Turn up the lights
echo 8 >/sys/class/backlight/backlight/brightness &&
## NTP works better after a restart
/etc/rc.d/rc.ntpd restart &&
# Unmute internal speakers
/usr/bin/amixer -c 0 set 'DAC Mixer AIF1 DA0' unmute &
# enable kernel polling for proper autodetection of removable devices
echo 5000 > /sys/module/block/parameters/events_dfl_poll_msecs
exit 0
Custom personal tweaks: I turn off some of the daemons that I do not use (experimental, some of these might be needed):
rc.cgmanager
rc.cgproxy
rc.consolekit
rc.cpufreq
rc.inet1
rc.mcelog
rc.nfsd
rc.rpc
rc.samba
rc.wireless
these are all located at /etc/rc.d/, and to turn them off you just make them non-executable.
Now I can boot to a graphical desktop (in my case, JWM) and connect to the Internet while using less than 150MB of RAM. Nice.
Have fun....