First Release
This commit is contained in:
commit
2626620ea5
|
@ -0,0 +1,9 @@
|
|||
deploy/*
|
||||
work/*
|
||||
config
|
||||
postrun.sh
|
||||
SKIP
|
||||
SKIP_IMAGES
|
||||
.pc
|
||||
*-pc
|
||||
apt-cacher-ng/
|
|
@ -0,0 +1,3 @@
|
|||
[submodule "pi-gen"]
|
||||
path = pi-gen
|
||||
url = https://github.com/RPi-Distro/pi-gen.git
|
|
@ -0,0 +1,13 @@
|
|||
# Kiwi Bot Raspberry Pi Image
|
||||
|
||||
|
||||
## Downloading
|
||||
```
|
||||
git clone --recurse-submodules https://git.1248.nz/kiwibot/pi-image.git
|
||||
```
|
||||
|
||||
## Building
|
||||
```
|
||||
cp config.sample config
|
||||
./build
|
||||
```
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/bash
|
||||
sudo CLEAN=1 pi-gen/build.sh -c config
|
|
@ -0,0 +1,12 @@
|
|||
IMG_NAME='bot'
|
||||
FIRST_USER_PASS='a'
|
||||
ENABLE_SSH=1
|
||||
#IMG_DATE=1
|
||||
#APT_PROXY=http://172.17.0.1:3142
|
||||
DEPLOY_ZIP=1
|
||||
#WPA_ESSID=""
|
||||
#WPA_PASSWORD=""
|
||||
#WPA_COUNTRY=""
|
||||
STAGE_LIST="pi-gen/stage0 pi-gen/stage1 pi-gen/stage2 avr deploy"
|
||||
WORK_DIR="$PWD/work"
|
||||
DEPLOY_DIR="$PWD/deploy"
|
|
@ -0,0 +1,4 @@
|
|||
IMG_SUFFIX="-lite"
|
||||
if [ "${USE_QEMU}" = "1" ]; then
|
||||
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
|
||||
fi
|
|
@ -0,0 +1 @@
|
|||
avrdude gcc-avr binutils-avr avr-libc
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
install files/avrdude.conf ${ROOTFS_DIR}/etc/avrdude.conf
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1 @@
|
|||
#dnsmasq dhcpcd hostapd
|
|
@ -0,0 +1,6 @@
|
|||
--- a/rootfs/boot/cmdline.txt 2019-07-25 08:58:33.178998588 +1200
|
||||
+++ b/rootfs/boot/cmdline.txt 2019-07-27 21:48:44.709707517 +1200
|
||||
@@ -1 +1 @@
|
||||
-console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh
|
||||
+console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether quiet init=/usr/lib/raspi-config/init_resize.sh
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
--- /rootfs/boot/config.txt
|
||||
+++ /rootfs/boot/config.txt
|
||||
|
||||
@@ -56,6 +56,14 @@
|
||||
# Enable audio (loads snd_bcm2835)
|
||||
dtparam=audio=on
|
||||
|
||||
+#usb ethernet
|
||||
+[pi0]
|
||||
+dtoverlay=dwc2
|
||||
+
|
||||
+#usb ethernet
|
||||
+[pi3]
|
||||
+dtoverlay=dwc2,dr_mode=peripheral
|
||||
+
|
||||
[pi4]
|
||||
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
|
||||
dtoverlay=vc4-fkms-v3d
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
# For more options and information see
|
||||
# http://rpf.io/configtxt
|
||||
# Some settings may impact device functionality. See link above for details
|
||||
|
||||
# uncomment if you get no picture on HDMI for a default "safe" mode
|
||||
#hdmi_safe=1
|
||||
|
||||
# uncomment this if your display has a black border of unused pixels visible
|
||||
# and your display can output without overscan
|
||||
#disable_overscan=1
|
||||
|
||||
# uncomment the following to adjust overscan. Use positive numbers if console
|
||||
# goes off screen, and negative if there is too much border
|
||||
#overscan_left=16
|
||||
#overscan_right=16
|
||||
#overscan_top=16
|
||||
#overscan_bottom=16
|
||||
|
||||
# uncomment to force a console size. By default it will be display's size minus
|
||||
# overscan.
|
||||
#framebuffer_width=1280
|
||||
#framebuffer_height=720
|
||||
|
||||
# uncomment if hdmi display is not detected and composite is being output
|
||||
#hdmi_force_hotplug=1
|
||||
|
||||
# uncomment to force a specific HDMI mode (this will force VGA)
|
||||
#hdmi_group=1
|
||||
#hdmi_mode=1
|
||||
|
||||
# uncomment to force a HDMI mode rather than DVI. This can make audio work in
|
||||
# DMT (computer monitor) modes
|
||||
#hdmi_drive=2
|
||||
|
||||
# uncomment to increase signal to HDMI, if you have interference, blanking, or
|
||||
# no display
|
||||
#config_hdmi_boost=4
|
||||
|
||||
# uncomment for composite PAL
|
||||
#sdtv_mode=2
|
||||
|
||||
#uncomment to overclock the arm. 700 MHz is the default.
|
||||
#arm_freq=800
|
||||
|
||||
# Uncomment some or all of these to enable the optional hardware interfaces
|
||||
#dtparam=i2c_arm=on
|
||||
#dtparam=i2s=on
|
||||
#dtparam=spi=on
|
||||
|
||||
# Uncomment this to enable infrared communication.
|
||||
#dtoverlay=gpio-ir,gpio_pin=17
|
||||
#dtoverlay=gpio-ir-tx,gpio_pin=18
|
||||
|
||||
# Additional overlays and parameters are documented /boot/overlays/README
|
||||
|
||||
# Enable audio (loads snd_bcm2835)
|
||||
dtparam=audio=on
|
||||
|
||||
#usb ethernet
|
||||
[pi0]
|
||||
dtoverlay=dwc2
|
||||
|
||||
#usb ethernet
|
||||
[pi3]
|
||||
dtoverlay=dwc2,dr_mode=peripheral
|
||||
|
||||
[pi4]
|
||||
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
|
||||
dtoverlay=vc4-fkms-v3d
|
||||
max_framebuffers=2
|
||||
|
||||
[all]
|
||||
#dtoverlay=vc4-fkms-v3d
|
|
@ -0,0 +1,2 @@
|
|||
00-cmdline.txt.diff
|
||||
01-config.txt.diff
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
#install files/wpa_supplicant.conf ${ROOTFS_DIR}/boot/wpa_supplicant.conf
|
||||
install files/wifi ${ROOTFS_DIR}/usr/local/bin/wifi
|
||||
chmod +x ${ROOTFS_DIR}/usr/local/bin/wifi
|
||||
echo 'bot' > ${ROOTFS_DIR}/etc/hostname
|
|
@ -0,0 +1,109 @@
|
|||
#!/bin/sh
|
||||
# The script configures simultaneous AP and Managed Mode Wifi on Raspberry Pi Zero W (should also work on Raspberry Pi 3)
|
||||
# Usage: curl https://gist.githubusercontent.com/lukicdarkoo/6b92d182d37d0a10400060d8344f86e4/raw | sh -s WifiSSID WifiPass APSSID APPass
|
||||
# Licence: GPLv3
|
||||
# Author: Darko Lukic <lukicdarkoo@gmail.com>
|
||||
# Special thanks to: https://albeec13.github.io/2017/09/26/raspberry-pi-zero-w-simultaneous-ap-and-managed-mode-wifi/
|
||||
|
||||
MAC_ADDRESS="$(cat /sys/class/net/wlan0/address)"
|
||||
CLIENT_SSID="${1}"
|
||||
CLIENT_PASSPHRASE="${2}"
|
||||
AP_SSID="${3}"
|
||||
AP_PASSPHRASE="${4}"
|
||||
|
||||
# Install dependencies
|
||||
sudo apt -y update
|
||||
sudo apt -y upgrade
|
||||
sudo apt -y install dnsmasq dhcpcd hostapd
|
||||
|
||||
# Populate `/etc/udev/rules.d/70-persistent-net.rules`
|
||||
sudo bash -c 'cat > /etc/udev/rules.d/70-persistent-net.rules' << EOF
|
||||
SUBSYSTEM=="ieee80211", ACTION=="add|change", ATTR{macaddress}=="${MAC_ADDRESS}", KERNEL=="phy0", \
|
||||
RUN+="/sbin/iw phy phy0 interface add ap0 type __ap", \
|
||||
RUN+="/bin/ip link set ap0 address ${MAC_ADDRESS}
|
||||
EOF
|
||||
|
||||
# Populate `/etc/dnsmasq.conf`
|
||||
sudo bash -c 'cat > /etc/dnsmasq.conf' << EOF
|
||||
interface=lo,ap0
|
||||
no-dhcp-interface=lo,wlan0
|
||||
bind-interfaces
|
||||
server=8.8.8.8
|
||||
domain-needed
|
||||
bogus-priv
|
||||
dhcp-range=192.168.10.50,192.168.10.150,12h
|
||||
EOF
|
||||
|
||||
# Populate `/etc/hostapd/hostapd.conf`
|
||||
sudo bash -c 'cat > /etc/hostapd/hostapd.conf' << EOF
|
||||
ctrl_interface=/var/run/hostapd
|
||||
ctrl_interface_group=0
|
||||
interface=ap0
|
||||
driver=nl80211
|
||||
ssid=${AP_SSID}
|
||||
hw_mode=g
|
||||
channel=11
|
||||
wmm_enabled=0
|
||||
macaddr_acl=0
|
||||
auth_algs=1
|
||||
wpa=2PASSPHRASE
|
||||
wpa_passphrase=${AP_PASSPHRASE}
|
||||
wpa_key_mgmt=WPA-PSK
|
||||
wpa_pairwise=TKIP CCMP
|
||||
rsn_pairwise=CCMP
|
||||
EOF
|
||||
|
||||
# Populate `/etc/default/hostapd`
|
||||
sudo bash -c 'cat > /etc/default/hostapd' << EOF
|
||||
DAEMON_CONF="/etc/hostapd/hostapd.conf"
|
||||
EOF
|
||||
|
||||
# Populate `/etc/wpa_supplicant/wpa_supplicant.conf`
|
||||
sudo bash -c 'cat > /etc/wpa_supplicant/wpa_supplicant.conf' << EOF
|
||||
country=US
|
||||
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
|
||||
update_config=1
|
||||
|
||||
network={
|
||||
ssid="${CLIENT_SSID}"
|
||||
psk="${CLIENT_PASSPHRASE}"
|
||||
id_str="AP1"
|
||||
}
|
||||
EOF
|
||||
|
||||
# Populate `/etc/network/interfaces`
|
||||
sudo bash -c 'cat > /etc/network/interfaces' << EOF
|
||||
source-directory /etc/network/interfaces.d
|
||||
|
||||
auto lo
|
||||
auto ap0
|
||||
auto wlan0
|
||||
iface lo inet loopback
|
||||
|
||||
allow-hotplug ap0
|
||||
iface ap0 inet static
|
||||
address 192.168.10.1
|
||||
netmask 255.255.255.0
|
||||
hostapd /etc/hostapd/hostapd.conf
|
||||
|
||||
allow-hotplug wlan0
|
||||
iface wlan0 inet manual
|
||||
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
|
||||
iface AP1 inet dhcp
|
||||
EOF
|
||||
|
||||
# Populate `/bin/start_wifi.sh`
|
||||
sudo bash -c 'cat > /bin/start_wifi.sh' << EOF
|
||||
echo 'Starting Wifi AP and client...'
|
||||
sleep 30
|
||||
sudo ifdown --force wlan0
|
||||
sudo ifdown --force ap0
|
||||
sudo ifup ap0
|
||||
sudo ifup wlan0
|
||||
sudo sysctl -w net.ipv4.ip_forward=1
|
||||
sudo iptables -t nat -A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -j MASQUERADE
|
||||
sudo systemctl restart dnsmasq
|
||||
EOF
|
||||
sudo chmod +x /bin/start_wifi.sh
|
||||
crontab -l | { cat; echo "@reboot /bin/start_wifi.sh"; } | crontab -
|
||||
echo "Wifi configuration is finished! Please reboot your Raspberry Pi to apply changes..."
|
|
@ -0,0 +1,8 @@
|
|||
country=NZ
|
||||
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
|
||||
update_config=1
|
||||
network={
|
||||
ssid="Infected"
|
||||
psk="(m0unt@1n5)"
|
||||
key_mgmt=WPA-PSK
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
if [ ! -d "${ROOTFS_DIR}" ]; then
|
||||
copy_previous
|
||||
fi
|
|
@ -0,0 +1,3 @@
|
|||
python3-picamera python3-pip python-pip python3-smbus
|
||||
i2c-tools pigpio libjpeg-dev zlib1g-dev libfreetype6-dev
|
||||
liblcms1-dev libopenjp2-7 libtiff5
|
|
@ -0,0 +1,13 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
on_chroot << EOF
|
||||
/usr/bin/python3 -m pip install pip --upgrade
|
||||
/usr/bin/python3 -m pip install \
|
||||
aiohttp \
|
||||
pigpio \
|
||||
gpiozero \
|
||||
jupyter \
|
||||
opencv-contrib-python-headless
|
||||
systemctl enable pigpiod
|
||||
systemctl daemon-reload
|
||||
EOF
|
|
@ -0,0 +1,2 @@
|
|||
git fish
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
#/bin/bash -e
|
||||
|
||||
on_chroot << EOF
|
||||
chsh -s /usr/bin/fish pi
|
||||
|
||||
|
||||
EOF
|
|
@ -0,0 +1 @@
|
|||
git
|
|
@ -0,0 +1,20 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
install -d ${ROOTFS_DIR}/opt/theia
|
||||
install files/package.json ${ROOTFS_DIR}/opt/theia
|
||||
install -d -o 1000 -g 1000 ${ROOTFS_DIR}/home/pi/projects
|
||||
install -D -m 644 files/theia.service ${ROOTFS_DIR}/etc/systemd/system/theia.service
|
||||
|
||||
curl -SL https://nodejs.org/dist/latest-v8.x/node-v8.16.2-linux-armv6l.tar.gz | \
|
||||
tar xzC ${ROOTFS_DIR}/usr/local/ --strip-components=1
|
||||
curl -SL https://yarnpkg.com/latest.tar.gz | \
|
||||
tar xzC ${ROOTFS_DIR}/usr/local/ --strip-components=1
|
||||
|
||||
on_chroot << EOF
|
||||
cd /opt/theia
|
||||
/usr/local/bin/yarn
|
||||
/usr/local/bin/yarn theia build
|
||||
systemctl enable theia.service
|
||||
systemctl daemon-reload
|
||||
EOF
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"typescript": "latest",
|
||||
"@theia/typescript": "next",
|
||||
"@theia/navigator": "next",
|
||||
"@theia/terminal": "next",
|
||||
"@theia/outline-view": "next",
|
||||
"@theia/preferences": "next",
|
||||
"@theia/messages": "next",
|
||||
"@theia/git": "next",
|
||||
"@theia/file-search": "next",
|
||||
"@theia/markers": "next",
|
||||
"@theia/preview": "next",
|
||||
"@theia/callhierarchy": "next",
|
||||
"@theia/merge-conflicts": "next",
|
||||
"@theia/search-in-workspace": "next",
|
||||
"@theia/json": "next",
|
||||
"@theia/textmate-grammars": "next",
|
||||
"@theia/mini-browser": "next",
|
||||
"@theia/python": "next",
|
||||
"@theia/cpp": "next"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@theia/cli": "next"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
[Unit]
|
||||
Description=Theia Ide
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
PIDFile=/run/theia.pid
|
||||
ExecStart=/usr/local/bin/yarn theia start --hostname 0.0.0.0 /home/pi/projects
|
||||
User=pi
|
||||
Group=pi
|
||||
WorkingDirectory=/opt/theia
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
#KillMode=mixed
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -0,0 +1 @@
|
|||
Subproject commit a449c75facc8b373eab7cf4f884f5a3d45028478
|
Loading…
Reference in New Issue