Compare commits
6 commits
yunohost-b
...
yunohost-s
Author | SHA1 | Date | |
---|---|---|---|
|
5fc15bbd6c | ||
|
ad19a25249 | ||
|
5ddbc1692c | ||
|
bd0f49e4f8 | ||
|
d9ed7ea44f | ||
|
14da13285f |
37 changed files with 108 additions and 196 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,6 +1,5 @@
|
||||||
deploy/*
|
deploy/*
|
||||||
work/*
|
work/*
|
||||||
config
|
|
||||||
postrun.sh
|
postrun.sh
|
||||||
SKIP
|
SKIP
|
||||||
SKIP_IMAGES
|
SKIP_IMAGES
|
||||||
|
|
|
@ -114,14 +114,6 @@ The following environment variables are supported:
|
||||||
To get the current value from a running system, look in
|
To get the current value from a running system, look in
|
||||||
`/etc/timezone`.
|
`/etc/timezone`.
|
||||||
|
|
||||||
* `FIRST_USER_NAME` (Default: "pi" )
|
|
||||||
|
|
||||||
Username for the first user
|
|
||||||
|
|
||||||
* `FIRST_USER_PASS` (Default: "raspberry")
|
|
||||||
|
|
||||||
Password for the first user
|
|
||||||
|
|
||||||
* `WPA_ESSID`, `WPA_PASSWORD` and `WPA_COUNTRY` (Default: unset)
|
* `WPA_ESSID`, `WPA_PASSWORD` and `WPA_COUNTRY` (Default: unset)
|
||||||
|
|
||||||
If these are set, they are use to configure `wpa_supplicant.conf`, so that the Raspberry Pi can automatically connect to a wifi network on first boot. If `WPA_ESSID` is set and `WPA_PASSWORD` is unset an unprotected wifi network will be configured. If set, `WPA_PASSWORD` must be between 8 and 63 characters.
|
If these are set, they are use to configure `wpa_supplicant.conf`, so that the Raspberry Pi can automatically connect to a wifi network on first boot. If `WPA_ESSID` is set and `WPA_PASSWORD` is unset an unprotected wifi network will be configured. If set, `WPA_PASSWORD` must be between 8 and 63 characters.
|
||||||
|
|
8
build.sh
8
build.sh
|
@ -164,8 +164,6 @@ export LOG_FILE="${WORK_DIR}/build.log"
|
||||||
|
|
||||||
export TARGET_HOSTNAME=${TARGET_HOSTNAME:-raspberrypi}
|
export TARGET_HOSTNAME=${TARGET_HOSTNAME:-raspberrypi}
|
||||||
|
|
||||||
export FIRST_USER_NAME=${FIRST_USER_NAME:-pi}
|
|
||||||
export FIRST_USER_PASS=${FIRST_USER_PASS:-raspberry}
|
|
||||||
export RELEASE=${RELEASE:-buster}
|
export RELEASE=${RELEASE:-buster}
|
||||||
export WPA_ESSID
|
export WPA_ESSID
|
||||||
export WPA_PASSWORD
|
export WPA_PASSWORD
|
||||||
|
@ -210,12 +208,6 @@ source "${SCRIPT_DIR}/dependencies_check"
|
||||||
|
|
||||||
dependencies_check "${BASE_DIR}/depends"
|
dependencies_check "${BASE_DIR}/depends"
|
||||||
|
|
||||||
#check username is valid
|
|
||||||
if [[ ! "$FIRST_USER_NAME" =~ ^[a-z][-a-z0-9_]*$ ]]; then
|
|
||||||
echo "Invalid FIRST_USER_NAME: $FIRST_USER_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n "${APT_PROXY}" ]] && ! curl --silent "${APT_PROXY}" >/dev/null ; then
|
if [[ -n "${APT_PROXY}" ]] && ! curl --silent "${APT_PROXY}" >/dev/null ; then
|
||||||
echo "Could not reach APT_PROXY server: ${APT_PROXY}"
|
echo "Could not reach APT_PROXY server: ${APT_PROXY}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
7
config
Normal file
7
config
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
IMG_NAME="yunohost"
|
||||||
|
RELEASE="stretch"
|
||||||
|
USE_QEMU="1"
|
||||||
|
LOCALE_DEFAULT="en_US.UTF-8"
|
||||||
|
TARGET_HOSTNAME="yunohost"
|
||||||
|
KEYBOARD_KEYMAP="us"
|
||||||
|
ENABLE_SSH="1"
|
|
@ -12,10 +12,6 @@ if hash hardlink 2>/dev/null; then
|
||||||
fi
|
fi
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [ -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config" ]; then
|
|
||||||
chmod 700 "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config"
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache"
|
rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache"
|
||||||
rm -f "${ROOTFS_DIR}/usr/bin/qemu-arm-static"
|
rm -f "${ROOTFS_DIR}/usr/bin/qemu-arm-static"
|
||||||
|
|
||||||
|
|
|
@ -5,10 +5,6 @@ install -m 644 files/noclear.conf "${ROOTFS_DIR}/etc/systemd/system/getty@tty1.s
|
||||||
install -v -m 644 files/fstab "${ROOTFS_DIR}/etc/fstab"
|
install -v -m 644 files/fstab "${ROOTFS_DIR}/etc/fstab"
|
||||||
|
|
||||||
on_chroot << EOF
|
on_chroot << EOF
|
||||||
if ! id -u ${FIRST_USER_NAME} >/dev/null 2>&1; then
|
|
||||||
adduser --disabled-password --gecos "" ${FIRST_USER_NAME}
|
|
||||||
fi
|
|
||||||
echo "${FIRST_USER_NAME}:${FIRST_USER_PASS}" | chpasswd
|
|
||||||
echo "root:root" | chpasswd
|
echo "root:root" | chpasswd
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,5 @@ policykit-1
|
||||||
ssh-import-id
|
ssh-import-id
|
||||||
rng-tools
|
rng-tools
|
||||||
ethtool
|
ethtool
|
||||||
vl805fw
|
|
||||||
ntfs-3g
|
ntfs-3g
|
||||||
pciutils
|
pciutils
|
||||||
rpi-eeprom
|
|
||||||
|
|
|
@ -40,9 +40,6 @@ on_chroot <<EOF
|
||||||
for GRP in input spi i2c gpio; do
|
for GRP in input spi i2c gpio; do
|
||||||
groupadd -f -r "\$GRP"
|
groupadd -f -r "\$GRP"
|
||||||
done
|
done
|
||||||
for GRP in adm dialout cdrom audio users sudo video games plugdev input gpio spi i2c netdev; do
|
|
||||||
adduser $FIRST_USER_NAME \$GRP
|
|
||||||
done
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
on_chroot << EOF
|
on_chroot << EOF
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
NOOBS_NAME="Raspbian Lite"
|
|
||||||
NOOBS_DESCRIPTION="A port of Debian with no desktop environment"
|
|
|
@ -1,2 +0,0 @@
|
||||||
# Adobe Flash Player. Copyright 1996-2015. Adobe Systems Incorporated. All Rights Reserved.
|
|
||||||
rpi-chromium-mods rpi-chromium-mods/adobe note
|
|
|
@ -1,15 +0,0 @@
|
||||||
gstreamer1.0-x gstreamer1.0-omx gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-libav
|
|
||||||
qpdfview gtk2-engines alsa-utils
|
|
||||||
desktop-base
|
|
||||||
git
|
|
||||||
omxplayer
|
|
||||||
raspberrypi-artwork
|
|
||||||
policykit-1
|
|
||||||
gvfs
|
|
||||||
rfkill
|
|
||||||
chromium-browser rpi-chromium-mods
|
|
||||||
gldriver-test
|
|
||||||
fonts-droid-fallback
|
|
||||||
fonts-liberation2
|
|
||||||
obconf
|
|
||||||
arandr
|
|
|
@ -1,6 +0,0 @@
|
||||||
xserver-xorg-video-fbdev xserver-xorg xinit xserver-xorg-video-fbturbo
|
|
||||||
mousepad
|
|
||||||
lxde lxtask menu-xdg
|
|
||||||
zenity xdg-utils
|
|
||||||
gvfs-backends gvfs-fuse
|
|
||||||
lightdm gnome-themes-standard-data gnome-icon-theme
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
on_chroot << EOF
|
|
||||||
update-alternatives --install /usr/bin/x-www-browser \
|
|
||||||
x-www-browser /usr/bin/chromium-browser 86
|
|
||||||
update-alternatives --install /usr/bin/gnome-www-browser \
|
|
||||||
gnome-www-browser /usr/bin/chromium-browser 86
|
|
||||||
EOF
|
|
62
stage3/00-install-yunohost/00-run.sh
Executable file
62
stage3/00-install-yunohost/00-run.sh
Executable file
|
@ -0,0 +1,62 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
# Prevent dhcp setting the "search" thing in /etc/resolv.conf, leads to many
|
||||||
|
# weird stuff (e.g. with numericable) where any domain will ping >.>
|
||||||
|
on_chroot << EOF
|
||||||
|
echo 'supersede domain-name "";' >> /etc/dhcp/dhclient.conf
|
||||||
|
echo 'supersede domain-search "";' >> /etc/dhcp/dhclient.conf
|
||||||
|
echo 'supersede search ""; ' >> /etc/dhcp/dhclient.conf
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Disable those damn supposedly "predictive" interface names
|
||||||
|
# c.f. https://unix.stackexchange.com/a/338730
|
||||||
|
on_chroot << EOF
|
||||||
|
rm -f /etc/systemd/network/99-default.link
|
||||||
|
ln -s /dev/null /etc/systemd/network/99-default.link
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Run the actual install
|
||||||
|
on_chroot << EOF
|
||||||
|
apt-get install insserv resolvconf -y
|
||||||
|
curl https://install.yunohost.org/stretch | bash -s -- -a
|
||||||
|
rm -f /etc/ssh/ssh_host_*
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "Enabling ssh login for root + setting default password"
|
||||||
|
on_chroot << EOF
|
||||||
|
sed -i '/PermitRootLogin/c\PermitRootLogin yes' /etc/ssh/sshd_config
|
||||||
|
echo "root:yunohost" | chpasswd
|
||||||
|
EOF
|
||||||
|
|
||||||
|
install -m 755 files/check_yunohost_is_installed.sh "${ROOTFS_DIR}/etc/profile.d/"
|
||||||
|
|
||||||
|
echo "Cleaning ..."
|
||||||
|
on_chroot << EOF
|
||||||
|
apt-get clean
|
||||||
|
find /var/log -type f -exec rm {} \;
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
# Gotta manually kill those stuff which are some sort of daemon running
|
||||||
|
# for slapd / nscd / nslcd ... otherwise the script is unable to unmount
|
||||||
|
# the rootfs/image after that ?
|
||||||
|
while lsof 2>/dev/null | grep -q /root/rpi-image/work/*/export-image/rootfs/dev;
|
||||||
|
do
|
||||||
|
for PID in `ps -ef --forest | grep "qemu-arm-static" | grep -v "grep" | grep "nginx\|nscd\|slapd\|nslcd" | awk '{print $2}'`
|
||||||
|
do
|
||||||
|
echo "Killing $PID"
|
||||||
|
kill -9 $PID || true
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
while ps -ef --forest | grep "qemu-arm-static" | grep -v "grep"
|
||||||
|
do
|
||||||
|
for PID in `ps -ef --forest | grep "qemu-arm-static" | grep -v "grep" | grep "nginx\|nscd\|slapd\|nslcd" | awk '{print $2}'`
|
||||||
|
do
|
||||||
|
echo "Killing $PID"
|
||||||
|
kill -9 $PID || true
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
sleep 5
|
||||||
|
done
|
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ -n "$BASH_VERSION" ] && [ "$-" != "${-#*i}" ]; then
|
||||||
|
|
||||||
|
# Trigger resize2fs_once in case it wasnt triggered so far ...
|
||||||
|
if [ -f "/etc/init.d/resize2fs_once" ];
|
||||||
|
then
|
||||||
|
echo "Resizing root partition ... (this may take up to a few minutes)"
|
||||||
|
systemctl restart resize2fs_once
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "/etc/yunohost/installed" ];
|
||||||
|
then
|
||||||
|
normal=$(printf '\033[0m')
|
||||||
|
bold=$(printf '\033[1m')
|
||||||
|
blue=$(printf '\033[34m')
|
||||||
|
|
||||||
|
IPS=$(hostname --all-ip-address | sed 's/ /\n /g')
|
||||||
|
cat << EOF
|
||||||
|
======================================================================
|
||||||
|
${bold}${blue}
|
||||||
|
Congratulations on setting up your YunoHost server !
|
||||||
|
${normal}${bold}
|
||||||
|
To finish the installation, you should run the postinstallation.
|
||||||
|
You can find documentation about it on :${normal}
|
||||||
|
https://yunohost.org/postinstall
|
||||||
|
${normal}${bold}
|
||||||
|
You can run it from the command line interface with :${normal}
|
||||||
|
$ yunohost tools postinstall
|
||||||
|
${normal}${bold}
|
||||||
|
Or from a browser by accessing one of your local IP :${normal}
|
||||||
|
$IPS${normal}
|
||||||
|
======================================================================
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
fi
|
|
@ -1,3 +0,0 @@
|
||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
rm -f "${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d/wait.conf"
|
|
2
stage3/EXPORT_NOOBS
Normal file
2
stage3/EXPORT_NOOBS
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
NOOBS_NAME="YunoHost Raspbian"
|
||||||
|
NOOBS_DESCRIPTION="A port of Debian for the Raspberry Pi with YunoHost pre-installed"
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
if [ ! -d "${ROOTFS_DIR}" ]; then
|
if [ ! -d ${ROOTFS_DIR} ]; then
|
||||||
copy_previous
|
copy_previous
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
# Enable realtime process priority?
|
|
||||||
jackd2 jackd/tweak_rt_limits boolean true
|
|
|
@ -1,25 +0,0 @@
|
||||||
python python3-pygame python-pygame python-tk
|
|
||||||
python3 python3-tk thonny
|
|
||||||
python3-pgzero
|
|
||||||
python-serial python3-serial
|
|
||||||
python-picamera python3-picamera
|
|
||||||
debian-reference-en dillo
|
|
||||||
raspberrypi-net-mods raspberrypi-ui-mods
|
|
||||||
python-pip python3-pip
|
|
||||||
python3-numpy
|
|
||||||
pypy
|
|
||||||
alacarte rc-gui sense-hat
|
|
||||||
tree
|
|
||||||
libgl1-mesa-dri libgles1 libgles2-mesa xcompmgr
|
|
||||||
geany
|
|
||||||
piclone
|
|
||||||
wiringpi pigpio python-pigpio python3-pigpio raspi-gpio python-gpiozero python3-gpiozero python3-rpi.gpio
|
|
||||||
python-spidev python3-spidev
|
|
||||||
python-twython python3-twython
|
|
||||||
python-smbus python3-smbus
|
|
||||||
python-flask python3-flask
|
|
||||||
pprompt
|
|
||||||
piwiz
|
|
||||||
rp-prefapps
|
|
||||||
ffmpeg
|
|
||||||
vlc
|
|
|
@ -1,2 +0,0 @@
|
||||||
pi-package
|
|
||||||
realvnc-vnc-server
|
|
|
@ -1,22 +0,0 @@
|
||||||
python-automationhat python3-automationhat
|
|
||||||
python-blinkt python3-blinkt
|
|
||||||
python-cap1xxx python3-cap1xxx
|
|
||||||
python-drumhat python3-drumhat
|
|
||||||
python-envirophat python3-envirophat
|
|
||||||
python-explorerhat python3-explorerhat
|
|
||||||
python-fourletterphat python3-fourletterphat
|
|
||||||
python-microdotphat python3-microdotphat
|
|
||||||
python-mote python3-mote
|
|
||||||
python-motephat python3-motephat
|
|
||||||
python-phatbeat python3-phatbeat
|
|
||||||
python-pianohat python3-pianohat
|
|
||||||
python-piglow python3-piglow
|
|
||||||
python-rainbowhat python3-rainbowhat
|
|
||||||
python-scrollphat python3-scrollphat
|
|
||||||
python-scrollphathd python3-scrollphathd
|
|
||||||
python-sn3218 python3-sn3218
|
|
||||||
python-skywriter python3-skywriter
|
|
||||||
python-touchphat python3-touchphat
|
|
||||||
python-buttonshim python3-buttonshim
|
|
||||||
python-unicornhathd python3-unicornhathd
|
|
||||||
python-pantilthat python3-pantilthat
|
|
|
@ -1,4 +0,0 @@
|
||||||
hunspell-en-gb
|
|
||||||
hyphen-en-gb
|
|
||||||
wamerican
|
|
||||||
wbritish
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
on_chroot << EOF
|
|
||||||
SUDO_USER="${FIRST_USER_NAME}" raspi-config nonint do_boot_behaviour B4
|
|
||||||
EOF
|
|
|
@ -1,7 +0,0 @@
|
||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
#Alacarte fixes
|
|
||||||
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.local"
|
|
||||||
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.local/share"
|
|
||||||
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.local/share/applications"
|
|
||||||
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.local/share/desktop-directories"
|
|
|
@ -1,15 +0,0 @@
|
||||||
#!/bin/sh -e
|
|
||||||
|
|
||||||
magpi_regex="MagPi[[:digit:]]*.pdf"
|
|
||||||
magpi_loc="$(curl -s https://magpi.raspberrypi.org/latest-pdf)"
|
|
||||||
magpi_latest="$(echo "$magpi_loc" | grep "$magpi_regex" -m 1 -o)"
|
|
||||||
|
|
||||||
if [ ! -f "files/$magpi_latest" ]; then
|
|
||||||
find files/ -regextype grep -regex "files/$magpi_regex" -delete
|
|
||||||
wget "$magpi_loc" -O "files/$magpi_latest"
|
|
||||||
fi
|
|
||||||
|
|
||||||
file "files/$magpi_latest" | grep -q "PDF document"
|
|
||||||
|
|
||||||
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/MagPi"
|
|
||||||
install -v -o 1000 -g 1000 -m 644 "files/$magpi_latest" "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/MagPi/"
|
|
1
stage4/03-magpi/files/.gitignore
vendored
1
stage4/03-magpi/files/.gitignore
vendored
|
@ -1 +0,0 @@
|
||||||
*.pdf
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
on_chroot << EOF
|
|
||||||
raspi-config nonint do_xcompmgr 0
|
|
||||||
EOF
|
|
|
@ -1,4 +0,0 @@
|
||||||
IMG_SUFFIX=""
|
|
||||||
if [ "${USE_QEMU}" = "1" ]; then
|
|
||||||
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
|
|
||||||
fi
|
|
|
@ -1,2 +0,0 @@
|
||||||
NOOBS_NAME="Raspbian"
|
|
||||||
NOOBS_DESCRIPTION="A port of Debian with the Raspberry Pi Desktop"
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
if [ ! -d "${ROOTFS_DIR}" ]; then
|
|
||||||
copy_previous
|
|
||||||
fi
|
|
|
@ -1,16 +0,0 @@
|
||||||
mu-editor
|
|
||||||
sonic-pi
|
|
||||||
scratch nuscratch scratch2 scratch3
|
|
||||||
smartsim
|
|
||||||
|
|
||||||
minecraft-pi python-minecraftpi python-picraft python3-picraft
|
|
||||||
python-sense-emu sense-emu-tools python-sense-emu-doc
|
|
||||||
|
|
||||||
wolfram-engine
|
|
||||||
claws-mail
|
|
||||||
greenfoot-unbundled bluej
|
|
||||||
nodered
|
|
||||||
realvnc-vnc-viewer
|
|
||||||
|
|
||||||
python-games
|
|
||||||
code-the-classics
|
|
|
@ -1,3 +0,0 @@
|
||||||
libreoffice-pi
|
|
||||||
libreoffice-help-en-gb
|
|
||||||
libreoffice-l10n-en-gb
|
|
|
@ -1,4 +0,0 @@
|
||||||
IMG_SUFFIX="-full"
|
|
||||||
if [ "${USE_QEMU}" = "1" ]; then
|
|
||||||
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
|
|
||||||
fi
|
|
|
@ -1,2 +0,0 @@
|
||||||
NOOBS_NAME="Raspbian Full"
|
|
||||||
NOOBS_DESCRIPTION="A port of Debian with desktop and recommended applications"
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
if [ ! -d "${ROOTFS_DIR}" ]; then
|
|
||||||
copy_previous
|
|
||||||
fi
|
|
Loading…
Reference in a new issue