Initial commit
This commit is contained in:
commit
df5befa9d1
45 changed files with 2030 additions and 0 deletions
8
.gitattributes
vendored
Executable file
8
.gitattributes
vendored
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
boot/MLO filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.img filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.wav filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.jpg filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.dtb filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
hacks/sfdisk filter=lfs diff=lfs merge=lfs -text
|
4
.gitignore
vendored
Executable file
4
.gitignore
vendored
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
build
|
||||||
|
mnt
|
||||||
|
root-fs/var/0s/source
|
||||||
|
scripts/linux.sh1
|
53
Makefile
Normal file
53
Makefile
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
.PHONY: all setup build
|
||||||
|
all: build combine
|
||||||
|
|
||||||
|
setup:
|
||||||
|
./scripts/setup-host.sh
|
||||||
|
|
||||||
|
.ONESHELL:
|
||||||
|
build:
|
||||||
|
set -e
|
||||||
|
|
||||||
|
cd scripts
|
||||||
|
|
||||||
|
./setup-root-fs.sh
|
||||||
|
sudo ./make-sd-card.sh
|
||||||
|
./linux-dtbs.sh
|
||||||
|
sudo ./debian.sh
|
||||||
|
|
||||||
|
.ONESHELL:
|
||||||
|
combine:
|
||||||
|
set -e
|
||||||
|
|
||||||
|
mkdir -p mnt
|
||||||
|
mkdir -p mnt/boot
|
||||||
|
mkdir -p mnt/rootfs
|
||||||
|
|
||||||
|
echo "Mounting 0s"
|
||||||
|
sudo kpartx -a build/0s.img
|
||||||
|
|
||||||
|
cd mnt
|
||||||
|
|
||||||
|
sudo mount /dev/mapper/loop0p1 boot
|
||||||
|
sudo mount /dev/mapper/loop0p2 rootfs
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
echo "Copying bootloader"
|
||||||
|
sudo cp ../boot/* boot
|
||||||
|
echo "Copying Debian"
|
||||||
|
sudo cp -rp ../build/debian/* rootfs
|
||||||
|
echo "Copying dtbs"
|
||||||
|
sudo cp -r ../build/linux/* rootfs
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
sudo umount boot
|
||||||
|
sudo umount rootfs
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
echo "Unmounting 0s"
|
||||||
|
sudo kpartx -d build/0s.img
|
BIN
boot/MLO
(Stored with Git LFS)
Executable file
BIN
boot/MLO
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
boot/u-boot.img
(Stored with Git LFS)
Executable file
BIN
boot/u-boot.img
(Stored with Git LFS)
Executable file
Binary file not shown.
3
boot/uEnv.txt
Executable file
3
boot/uEnv.txt
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
console="tty0 console=ttyO0,115200n8"
|
||||||
|
uenvcmd=set optargs "consoleblank=0 fbcon=rotate:2"
|
||||||
|
|
7
chroot/stage-1.sh
Executable file
7
chroot/stage-1.sh
Executable file
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
cd debootstrap
|
||||||
|
./debootstrap --second-stage
|
50
chroot/stage-2.sh
Executable file
50
chroot/stage-2.sh
Executable file
|
@ -0,0 +1,50 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# Ensure temp files can be created (apt-key error)
|
||||||
|
chmod -R 777 /tmp
|
||||||
|
|
||||||
|
# Recreate /dev/null
|
||||||
|
rm -f /dev/null; mknod -m 666 /dev/null c 1 3
|
||||||
|
|
||||||
|
# Set password of user 'root' to 'wallaby'
|
||||||
|
echo "root:wallaby" | chpasswd
|
||||||
|
|
||||||
|
echo "Delete debian-fresh if the next step fails, package register is outdated."
|
||||||
|
|
||||||
|
# Fix apt-key and enable https transport for apt
|
||||||
|
apt-get install -y dirmngr apt-transport-https
|
||||||
|
|
||||||
|
# Add F-WuTS debian repo
|
||||||
|
apt-key adv --keyserver pgp.mit.edu --recv-keys 0xE9368D5F3DE2EA910F48AF0412F68D62509CD98B
|
||||||
|
echo "deb https://f-wuts.github.io/repo stretch main" >> /etc/apt/sources.list
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
|
||||||
|
# Don't setup keyboard layout interactively
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||||
|
python python3 python3-pip \
|
||||||
|
wpasupplicant wireless-tools udhcpd avahi-daemon openssh-server ntp net-tools \
|
||||||
|
alsa-utils fontconfig i2c-tools xorg \
|
||||||
|
build-essential \
|
||||||
|
busybox sudo curl wget nano screen git \
|
||||||
|
dbus \
|
||||||
|
linux-image-3.18.21-custom linux-headers-3.18.21-custom linux-libc-dev \
|
||||||
|
botui libwallaby libbotball
|
||||||
|
|
||||||
|
cd /
|
||||||
|
|
||||||
|
wget https://deb.nodesource.com/setup_6.x
|
||||||
|
chmod +x setup_6.x
|
||||||
|
|
||||||
|
./setup_6.x
|
||||||
|
rm setup_6.x
|
||||||
|
apt-get install nodejs -y
|
||||||
|
apt-get clean
|
||||||
|
|
||||||
|
npm config set unsafe-perm true
|
||||||
|
npm install -g gulp browserify
|
||||||
|
|
||||||
|
pip3 install pipenv
|
25
chroot/stage-3.sh
Executable file
25
chroot/stage-3.sh
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
cd /var/0s/source
|
||||||
|
|
||||||
|
cd harrogate
|
||||||
|
npm install
|
||||||
|
gulp compile
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
cd c0re
|
||||||
|
# Fix Click encoding error
|
||||||
|
export LC_ALL=C.UTF-8
|
||||||
|
export LANG=C.UTF-8
|
||||||
|
pipenv install --system
|
||||||
|
|
||||||
|
systemctl enable c0re
|
||||||
|
systemctl enable harrogate
|
||||||
|
systemctl enable hostname
|
||||||
|
systemctl enable reset_coproc
|
||||||
|
systemctl enable setup_sound
|
||||||
|
systemctl enable startup_sound
|
||||||
|
systemctl enable x11
|
BIN
hacks/sfdisk
(Stored with Git LFS)
Executable file
BIN
hacks/sfdisk
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
root-fs/boot/am335x-botball-hdmi.dtb
(Stored with Git LFS)
Executable file
BIN
root-fs/boot/am335x-botball-hdmi.dtb
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
root-fs/boot/am335x-botball-lcd.dtb
(Stored with Git LFS)
Executable file
BIN
root-fs/boot/am335x-botball-lcd.dtb
(Stored with Git LFS)
Executable file
Binary file not shown.
1
root-fs/etc/X11/xinit/xinitrc
Normal file
1
root-fs/etc/X11/xinit/xinitrc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
while true; do botui && break; done
|
9
root-fs/etc/default/udhcpd
Executable file
9
root-fs/etc/default/udhcpd
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
# Comment the following line to enable
|
||||||
|
DHCPD_ENABLED="yes"
|
||||||
|
|
||||||
|
# Options to pass to busybox' udhcpd.
|
||||||
|
#
|
||||||
|
# -S Log to syslog
|
||||||
|
# -f run in foreground
|
||||||
|
|
||||||
|
DHCPD_OPTS="-S"
|
45
root-fs/etc/fonts/conf.d/44-wqy-zenhei.conf
Executable file
45
root-fs/etc/fonts/conf.d/44-wqy-zenhei.conf
Executable file
|
@ -0,0 +1,45 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<!-- WenQuanYi Zen Hei Configure File -->
|
||||||
|
<fontconfig>
|
||||||
|
<!-- modified by Madsen@SMTH -->
|
||||||
|
<match target="font">
|
||||||
|
<test qual="any" name="family">
|
||||||
|
<string>WenQuanYi Zen Hei</string>
|
||||||
|
<string>文泉驿正黑</string>
|
||||||
|
<string>文泉驛正黑</string>
|
||||||
|
</test>
|
||||||
|
<edit name="globaladvance"><bool>false</bool></edit>
|
||||||
|
<edit name="spacing"><int>0</int></edit>
|
||||||
|
<edit name="antialias" mode="assign"><bool>true</bool></edit>
|
||||||
|
<edit name="hinting" mode="assign"><bool>true</bool></edit>
|
||||||
|
<edit name="hintstyle" mode="assign"><const>hintnone</const></edit>
|
||||||
|
<edit name="autohint" mode="assign"><bool>false</bool></edit>
|
||||||
|
<edit name="rh_prefer_bitmaps" mode="assign"><bool>false</bool></edit>
|
||||||
|
<edit name="rgba" mode="assign"><const>none</const></edit>
|
||||||
|
<edit name="embeddedbitmap"><bool>false</bool></edit>
|
||||||
|
</match>
|
||||||
|
<alias>
|
||||||
|
<family>serif</family>
|
||||||
|
<prefer>
|
||||||
|
<family>Bitstream Vera Serif</family>
|
||||||
|
<family>DejaVu Serif</family>
|
||||||
|
<family>WenQuanYi Zen Hei</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
<alias>
|
||||||
|
<family>sans-serif</family>
|
||||||
|
<prefer>
|
||||||
|
<family>Bitstream Vera Sans</family>
|
||||||
|
<family>DejaVu Sans</family>
|
||||||
|
<family>WenQuanYi Zen Hei</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
<alias>
|
||||||
|
<family>monospace</family>
|
||||||
|
<prefer>
|
||||||
|
<family>Bitstream Vera Sans Mono</family>
|
||||||
|
<family>DejaVu Sans Mono</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
</fontconfig>
|
17
root-fs/etc/fonts/conf.d/66-wqy-zenhei-sharp.conf
Executable file
17
root-fs/etc/fonts/conf.d/66-wqy-zenhei-sharp.conf
Executable file
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<!-- WenQuanYi Zen Hei Configure File -->
|
||||||
|
<fontconfig>
|
||||||
|
<match target="font">
|
||||||
|
<test qual="any" name="family">
|
||||||
|
<string>WenQuanYi Zen Hei</string>
|
||||||
|
<string>文泉驿正黑</string>
|
||||||
|
<string>文泉驛正黑</string>
|
||||||
|
</test>
|
||||||
|
<test compare="more_eq" name="pixelsize"><double>11</double></test>
|
||||||
|
<test compare="less" name="pixelsize"><double>16</double></test>
|
||||||
|
<edit name="antialias" mode="assign"><bool>false</bool></edit>
|
||||||
|
<edit name="embeddedbitmap" mode="assign"><bool>true</bool></edit>
|
||||||
|
<edit name="hinting" mode="assign"><bool>false</bool></edit>
|
||||||
|
</match>
|
||||||
|
</fontconfig>
|
1
root-fs/etc/modprobe.d/8192cu.conf
Normal file
1
root-fs/etc/modprobe.d/8192cu.conf
Normal file
|
@ -0,0 +1 @@
|
||||||
|
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0
|
6
root-fs/etc/modules
Executable file
6
root-fs/etc/modules
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
# /etc/modules: kernel modules to load at boot time.
|
||||||
|
#
|
||||||
|
# This file contains the names of kernel modules that should be loaded
|
||||||
|
# at boot time, one per line. Lines beginning with "#" are ignored.
|
||||||
|
|
||||||
|
g_ether
|
14
root-fs/etc/network/interfaces
Executable file
14
root-fs/etc/network/interfaces
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# interfaces(5) file used by ifup(8) and ifdown(8) Include files from
|
||||||
|
# /etc/network/interfaces.d:
|
||||||
|
source-directory /etc/network/interfaces.d
|
||||||
|
|
||||||
|
auto usb0
|
||||||
|
iface usb0 inet static
|
||||||
|
address 192.168.124.1
|
||||||
|
netmask 255.255.255.0
|
||||||
|
broadcast 192.168.124.255
|
||||||
|
|
||||||
|
auto wlan0
|
||||||
|
allow-hotplug wlan0
|
||||||
|
iface wlan0 inet dhcp
|
||||||
|
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
|
122
root-fs/etc/ssh/sshd_config
Normal file
122
root-fs/etc/ssh/sshd_config
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
# $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $
|
||||||
|
|
||||||
|
# This is the sshd server system-wide configuration file. See
|
||||||
|
# sshd_config(5) for more information.
|
||||||
|
|
||||||
|
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
|
||||||
|
|
||||||
|
# The strategy used for options in the default sshd_config shipped with
|
||||||
|
# OpenSSH is to specify options with their default value where
|
||||||
|
# possible, but leave them commented. Uncommented options override the
|
||||||
|
# default value.
|
||||||
|
|
||||||
|
#Port 22
|
||||||
|
#AddressFamily any
|
||||||
|
#ListenAddress 0.0.0.0
|
||||||
|
#ListenAddress ::
|
||||||
|
|
||||||
|
#HostKey /etc/ssh/ssh_host_rsa_key
|
||||||
|
#HostKey /etc/ssh/ssh_host_ecdsa_key
|
||||||
|
#HostKey /etc/ssh/ssh_host_ed25519_key
|
||||||
|
|
||||||
|
# Ciphers and keying
|
||||||
|
#RekeyLimit default none
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
#SyslogFacility AUTH
|
||||||
|
#LogLevel INFO
|
||||||
|
|
||||||
|
# Authentication:
|
||||||
|
|
||||||
|
#LoginGraceTime 2m
|
||||||
|
PermitRootLogin yes
|
||||||
|
#StrictModes yes
|
||||||
|
#MaxAuthTries 6
|
||||||
|
#MaxSessions 10
|
||||||
|
|
||||||
|
#PubkeyAuthentication yes
|
||||||
|
|
||||||
|
# Expect .ssh/authorized_keys2 to be disregarded by default in future.
|
||||||
|
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
|
||||||
|
|
||||||
|
#AuthorizedPrincipalsFile none
|
||||||
|
|
||||||
|
#AuthorizedKeysCommand none
|
||||||
|
#AuthorizedKeysCommandUser nobody
|
||||||
|
|
||||||
|
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
|
||||||
|
#HostbasedAuthentication no
|
||||||
|
# Change to yes if you don't trust ~/.ssh/known_hosts for
|
||||||
|
# HostbasedAuthentication
|
||||||
|
#IgnoreUserKnownHosts no
|
||||||
|
# Don't read the user's ~/.rhosts and ~/.shosts files
|
||||||
|
#IgnoreRhosts yes
|
||||||
|
|
||||||
|
# To disable tunneled clear text passwords, change to no here!
|
||||||
|
#PasswordAuthentication yes
|
||||||
|
#PermitEmptyPasswords no
|
||||||
|
|
||||||
|
# Change to yes to enable challenge-response passwords (beware issues with
|
||||||
|
# some PAM modules and threads)
|
||||||
|
ChallengeResponseAuthentication no
|
||||||
|
|
||||||
|
# Kerberos options
|
||||||
|
#KerberosAuthentication no
|
||||||
|
#KerberosOrLocalPasswd yes
|
||||||
|
#KerberosTicketCleanup yes
|
||||||
|
#KerberosGetAFSToken no
|
||||||
|
|
||||||
|
# GSSAPI options
|
||||||
|
#GSSAPIAuthentication no
|
||||||
|
#GSSAPICleanupCredentials yes
|
||||||
|
#GSSAPIStrictAcceptorCheck yes
|
||||||
|
#GSSAPIKeyExchange no
|
||||||
|
|
||||||
|
# Set this to 'yes' to enable PAM authentication, account processing,
|
||||||
|
# and session processing. If this is enabled, PAM authentication will
|
||||||
|
# be allowed through the ChallengeResponseAuthentication and
|
||||||
|
# PasswordAuthentication. Depending on your PAM configuration,
|
||||||
|
# PAM authentication via ChallengeResponseAuthentication may bypass
|
||||||
|
# the setting of "PermitRootLogin without-password".
|
||||||
|
# If you just want the PAM account and session checks to run without
|
||||||
|
# PAM authentication, then enable this but set PasswordAuthentication
|
||||||
|
# and ChallengeResponseAuthentication to 'no'.
|
||||||
|
UsePAM yes
|
||||||
|
|
||||||
|
#AllowAgentForwarding yes
|
||||||
|
#AllowTcpForwarding yes
|
||||||
|
#GatewayPorts no
|
||||||
|
X11Forwarding yes
|
||||||
|
#X11DisplayOffset 10
|
||||||
|
#X11UseLocalhost yes
|
||||||
|
#PermitTTY yes
|
||||||
|
PrintMotd no
|
||||||
|
#PrintLastLog yes
|
||||||
|
#TCPKeepAlive yes
|
||||||
|
#UseLogin no
|
||||||
|
#PermitUserEnvironment no
|
||||||
|
#Compression delayed
|
||||||
|
#ClientAliveInterval 0
|
||||||
|
#ClientAliveCountMax 3
|
||||||
|
#UseDNS no
|
||||||
|
#PidFile /var/run/sshd.pid
|
||||||
|
#MaxStartups 10:30:100
|
||||||
|
#PermitTunnel no
|
||||||
|
#ChrootDirectory none
|
||||||
|
#VersionAddendum none
|
||||||
|
|
||||||
|
# no default banner path
|
||||||
|
#Banner none
|
||||||
|
|
||||||
|
# Allow client to pass locale environment variables
|
||||||
|
AcceptEnv LANG LC_*
|
||||||
|
|
||||||
|
# override default of no subsystems
|
||||||
|
Subsystem sftp /usr/lib/openssh/sftp-server
|
||||||
|
|
||||||
|
# Example of overriding settings on a per-user basis
|
||||||
|
#Match User anoncvs
|
||||||
|
# X11Forwarding no
|
||||||
|
# AllowTcpForwarding no
|
||||||
|
# PermitTTY no
|
||||||
|
# ForceCommand cvs server
|
11
root-fs/etc/systemd/system/c0re.service
Normal file
11
root-fs/etc/systemd/system/c0re.service
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
[Unit]
|
||||||
|
After=systemd-user-sessions.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/python3 /var/0s/source/c0re/app.py
|
||||||
|
WorkingDirectory=/var/0s/source/c0re
|
||||||
|
Environment="PYTHONIOENCODING=UTF-8"
|
||||||
|
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
10
root-fs/etc/systemd/system/harrogate.service
Normal file
10
root-fs/etc/systemd/system/harrogate.service
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
After=multi-user.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/node /var/0s/source/harrogate/server.js
|
||||||
|
WorkingDirectory=/var/0s/source/harrogate
|
||||||
|
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
9
root-fs/etc/systemd/system/hostname.service
Normal file
9
root-fs/etc/systemd/system/hostname.service
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Automatically change hostname to Wallaby hardware ID
|
||||||
|
After=x11.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/wallaby_set_hostname.py
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
10
root-fs/etc/systemd/system/reset_coproc.service
Normal file
10
root-fs/etc/systemd/system/reset_coproc.service
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Reset Coprocessor
|
||||||
|
After=systemd-user-sessions.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
RemainAfterExit=yes
|
||||||
|
ExecStart=/usr/bin/wallaby_reset_coproc
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
10
root-fs/etc/systemd/system/setup_sound.service
Normal file
10
root-fs/etc/systemd/system/setup_sound.service
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Setup sound
|
||||||
|
After=systemd-user-sessions.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStartPre=/usr/sbin/alsactl --file /var/asound.state restore
|
||||||
|
ExecStart=/usr/bin/amixer set PCM 100%
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
9
root-fs/etc/systemd/system/startup_sound.service
Normal file
9
root-fs/etc/systemd/system/startup_sound.service
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Play the startup sound
|
||||||
|
After=setup_sound.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/aplay /var/startup.wav
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
9
root-fs/etc/systemd/system/x11.service
Normal file
9
root-fs/etc/systemd/system/x11.service
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
[Unit]
|
||||||
|
After=systemd-user-sessions.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/bin/su root -l -c /usr/bin/startx
|
||||||
|
Environment="DISPLAY=:0"
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
7
root-fs/etc/udev/rules.d/70-persistent-net.rules
Executable file
7
root-fs/etc/udev/rules.d/70-persistent-net.rules
Executable file
|
@ -0,0 +1,7 @@
|
||||||
|
# This file was automatically generated by the /lib/udev/write_net_rules
|
||||||
|
# program, run by the persistent-net-generator.rules rules file.
|
||||||
|
#
|
||||||
|
# You can modify it, as long as you keep each rule on a single
|
||||||
|
# line, and change only the value of the NAME= key.
|
||||||
|
|
||||||
|
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"
|
5
root-fs/etc/udhcpd.conf
Executable file
5
root-fs/etc/udhcpd.conf
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
start 192.168.124.2
|
||||||
|
end 192.168.124.254
|
||||||
|
interface usb0
|
||||||
|
remaining yes
|
||||||
|
option subnet 255.255.255.0
|
8
root-fs/etc/wpa_supplicant/wpa_supplicant.conf
Executable file
8
root-fs/etc/wpa_supplicant/wpa_supplicant.conf
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
|
||||||
|
update_config=1
|
||||||
|
|
||||||
|
network={
|
||||||
|
ssid="foo"
|
||||||
|
psk="bar-bar-bar"
|
||||||
|
}
|
||||||
|
|
16
root-fs/usr/bin/wallaby_get_id.sh
Executable file
16
root-fs/usr/bin/wallaby_get_id.sh
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
VCMD1='i2cget -y 0 0x50 0x40'
|
||||||
|
VCMD2='i2cget -y 0 0x50 0x41'
|
||||||
|
VCMD3='i2cget -y 0 0x50 0x42'
|
||||||
|
VCMD4='i2cget -y 0 0x50 0x43'
|
||||||
|
|
||||||
|
V1=$(eval $VCMD1)
|
||||||
|
V2=$(eval $VCMD2)
|
||||||
|
V3=$(eval $VCMD3)
|
||||||
|
V4=$(eval $VCMD4)
|
||||||
|
|
||||||
|
printf "\x$(printf %x ${V1})"
|
||||||
|
printf "\x$(printf %x ${V2})"
|
||||||
|
printf "\x$(printf %x ${V3})"
|
||||||
|
printf "\x$(printf %x ${V4})"
|
7
root-fs/usr/bin/wallaby_init_gpio
Executable file
7
root-fs/usr/bin/wallaby_init_gpio
Executable file
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo 33 > /sys/class/gpio/export
|
||||||
|
echo 34 > /sys/class/gpio/export
|
||||||
|
|
||||||
|
echo "out" > /sys/class/gpio/gpio33/direction
|
||||||
|
echo "out" > /sys/class/gpio/gpio34/direction
|
13
root-fs/usr/bin/wallaby_reset_coproc
Executable file
13
root-fs/usr/bin/wallaby_reset_coproc
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ ! -d "/sys/class/gpio/gpio34" ]; then
|
||||||
|
echo "gpio34 missing - initializing gpio pins"
|
||||||
|
wallaby_init_gpio
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "resetting co processor..."
|
||||||
|
echo 1 > /sys/class/gpio/gpio34/value
|
||||||
|
echo 0 > /sys/class/gpio/gpio34/value
|
||||||
|
echo 1 > /sys/class/gpio/gpio34/value
|
||||||
|
|
||||||
|
echo "Done..."
|
23
root-fs/usr/bin/wallaby_set_hostname.py
Executable file
23
root-fs/usr/bin/wallaby_set_hostname.py
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from subprocess import check_output, call
|
||||||
|
|
||||||
|
bot_id = "bot"
|
||||||
|
|
||||||
|
for i2c in range(4):
|
||||||
|
bot_id += check_output("i2cget -y 0 0x50 0x4%i" % i2c, shell=True).decode()[-2]
|
||||||
|
|
||||||
|
new_hosts_content = ""
|
||||||
|
|
||||||
|
for line in open("/etc/hosts", "r").read().split("\n"):
|
||||||
|
if line.startswith("127.0.1.1"):
|
||||||
|
new_hosts_content += "127.0.1.1\t%s\n" % bot_id
|
||||||
|
elif line != "":
|
||||||
|
new_hosts_content += "%s\n" % line
|
||||||
|
|
||||||
|
open("/etc/hosts", "w").write(new_hosts_content)
|
||||||
|
|
||||||
|
call("hostnamectl set-hostname %s" % bot_id, shell=True)
|
||||||
|
call("systemctl restart avahi-daemon", shell=True)
|
||||||
|
|
||||||
|
print("Hostname set: '%s'" % bot_id)
|
12
root-fs/usr/include/kipr/botball.h
Normal file
12
root-fs/usr/include/kipr/botball.h
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#ifndef _KIPR_BOTBALL_H_
|
||||||
|
#define _KIPR_BOTBALL_H_
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <wallaby/wallaby.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
5
root-fs/usr/share/X11/xorg.conf.d/20-display.conf
Executable file
5
root-fs/usr/share/X11/xorg.conf.d/20-display.conf
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
Section "Device"
|
||||||
|
Identifier "Builtin Default fbdev Device 0"
|
||||||
|
Driver "fbdev"
|
||||||
|
# Option "Rotate" "UD"
|
||||||
|
EndSection
|
6
root-fs/usr/share/X11/xorg.conf.d/99-calibration.conf
Executable file
6
root-fs/usr/share/X11/xorg.conf.d/99-calibration.conf
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
Section "InputClass"
|
||||||
|
Identifier "calibration"
|
||||||
|
MatchProduct "ADS7846 Touchscreen"
|
||||||
|
Option "Calibration" "359 3711 3537 501"
|
||||||
|
Option "SwapAxes" "0"
|
||||||
|
EndSection
|
BIN
root-fs/usr/share/fonts/truetype/wqy-zenhei.ttf
(Stored with Git LFS)
Executable file
BIN
root-fs/usr/share/fonts/truetype/wqy-zenhei.ttf
(Stored with Git LFS)
Executable file
Binary file not shown.
1307
root-fs/var/asound.state
Executable file
1307
root-fs/var/asound.state
Executable file
File diff suppressed because it is too large
Load diff
BIN
root-fs/var/startup.wav
(Stored with Git LFS)
Executable file
BIN
root-fs/var/startup.wav
(Stored with Git LFS)
Executable file
Binary file not shown.
42
scripts/debian.sh
Executable file
42
scripts/debian.sh
Executable file
|
@ -0,0 +1,42 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
mkdir -p ../build
|
||||||
|
cd ../build
|
||||||
|
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
echo "Please run as root"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Delete debian-fresh if you interrupted the initial download."
|
||||||
|
|
||||||
|
if [ ! -d debian-fresh ]; then
|
||||||
|
echo "Initial download, this will take a while."
|
||||||
|
debootstrap --foreign --verbose --arch=armhf stretch ./debian-fresh
|
||||||
|
mkdir -p debian-fresh/usr/bin
|
||||||
|
cp /usr/bin/qemu-arm-static debian-fresh/usr/bin
|
||||||
|
# Stage 1
|
||||||
|
cp ../chroot/stage-1.sh debian-fresh
|
||||||
|
chroot debian-fresh/ ./stage-1.sh
|
||||||
|
rm debian-fresh/stage-1.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf debian
|
||||||
|
|
||||||
|
cp -r debian-fresh debian
|
||||||
|
|
||||||
|
cp -r ../chroot debian
|
||||||
|
|
||||||
|
# Stage 2
|
||||||
|
echo "Installing dependencies."
|
||||||
|
chroot debian/ ./chroot/stage-2.sh
|
||||||
|
|
||||||
|
echo "Applying overlay fs"
|
||||||
|
cp -r ../root-fs/* debian
|
||||||
|
|
||||||
|
# Stage 3
|
||||||
|
echo "Running fs prepare"
|
||||||
|
chroot debian/ ./chroot/stage-3.sh
|
||||||
|
|
||||||
|
rm -rf debian/chroot
|
19
scripts/linux-dtbs.sh
Executable file
19
scripts/linux-dtbs.sh
Executable file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
mkdir -p ../build
|
||||||
|
cd ../build
|
||||||
|
|
||||||
|
[[ -d wallaby-linux ]] || git clone https://github.com/F-WuTS/wallaby-linux.git --depth=1
|
||||||
|
|
||||||
|
mkdir -p linux/boot
|
||||||
|
|
||||||
|
cd wallaby-linux
|
||||||
|
|
||||||
|
# Remove .git folder to prevent dirty kernel names
|
||||||
|
[[ -d build ]] || rm -rf .git
|
||||||
|
|
||||||
|
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs -j8
|
||||||
|
|
||||||
|
cp -r arch/arm/boot/dts/am335x-pepper*.dt* ../linux/boot
|
64
scripts/make-sd-card.sh
Executable file
64
scripts/make-sd-card.sh
Executable file
|
@ -0,0 +1,64 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
mkdir -p ../build
|
||||||
|
cd ../build
|
||||||
|
|
||||||
|
if [ "$EUID" -ne 0 ]
|
||||||
|
then echo "Please run as root"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if lsblk | grep -q "loop0"; then
|
||||||
|
echo "loop0 found, trying to unmount automatically"
|
||||||
|
kpartx -d /dev/loop0
|
||||||
|
losetup -d /dev/loop0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Creating empty image"
|
||||||
|
dd if=/dev/zero of=0s.img bs=1M count=7500
|
||||||
|
|
||||||
|
sync
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
echo "Mouting empty image"
|
||||||
|
losetup /dev/loop0 0s.img
|
||||||
|
|
||||||
|
# echo "Zeroing empty image (no real reason to do so, still...)"
|
||||||
|
# dd if=/dev/zero of=/dev/loop0 bs=1024 count=1024
|
||||||
|
|
||||||
|
echo "Creating partitions"
|
||||||
|
|
||||||
|
# sfdisk was "upgraded" -> tons of flags removed
|
||||||
|
|
||||||
|
SIZE=`fdisk -l /dev/loop0 | grep Disk | awk '{print $5}'`
|
||||||
|
CYLINDERS=`echo $SIZE/255/63/512 | bc`
|
||||||
|
|
||||||
|
../hacks/sfdisk --force -D -uS -H 255 -S 63 -C $CYLINDERS /dev/loop0 << EOF
|
||||||
|
128,130944,0x0C,*
|
||||||
|
131072,,,-
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# sfdisk --force -u S /dev/loop0 << EOF
|
||||||
|
# 128,130944,0x0C,*
|
||||||
|
# 131072,,,-
|
||||||
|
# EOF
|
||||||
|
|
||||||
|
losetup -d /dev/loop0
|
||||||
|
sync
|
||||||
|
|
||||||
|
kpartx -a 0s.img
|
||||||
|
|
||||||
|
# Resources don't become avaliable immediately
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
echo "Creating fs"
|
||||||
|
mkfs.vfat -F 32 -n "boot" /dev/mapper/loop0p1
|
||||||
|
mkfs.ext3 -F -L "rootfs" /dev/mapper/loop0p2
|
||||||
|
|
||||||
|
# Creating partitions is apperantly async
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
kpartx -d /dev/loop0
|
||||||
|
losetup -d /dev/loop0
|
19
scripts/setup-host.sh
Executable file
19
scripts/setup-host.sh
Executable file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "$EUID" -ne 0 ]
|
||||||
|
then echo "Please run as root"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get install curl -y
|
||||||
|
|
||||||
|
# git-lfs
|
||||||
|
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
|
||||||
|
|
||||||
|
dpkg --add-architecture armhf
|
||||||
|
apt-get update && apt-get upgrade -y
|
||||||
|
apt-get install crossbuild-essential-armhf bc git dosfstools kpartx \
|
||||||
|
debootstrap qemu-user-static git-lfs -y
|
23
scripts/setup-root-fs.sh
Executable file
23
scripts/setup-root-fs.sh
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
mkdir -p root-fs/var/0s/source
|
||||||
|
|
||||||
|
cd root-fs/var/0s/source
|
||||||
|
|
||||||
|
if [ ! -d c0re ]; then
|
||||||
|
git clone https://github.com/F-WuTS/c0re.git --recursive --depth=1
|
||||||
|
else
|
||||||
|
git -C c0re fetch --all
|
||||||
|
git -C c0re reset --hard origin/master
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d harrogate ]; then
|
||||||
|
git clone https://github.com/F-WuTS/harrogate.git --depth=1
|
||||||
|
else
|
||||||
|
git -C harrogate fetch --all
|
||||||
|
git -C harrogate reset --hard origin/master
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
Reference in a new issue