Skip to content

Instantly share code, notes, and snippets.

@dotysan
Created April 12, 2023 01:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dotysan/426ee308c6544ecefd4d92d742806f87 to your computer and use it in GitHub Desktop.
Save dotysan/426ee308c6544ecefd4d92d742806f87 to your computer and use it in GitHub Desktop.
Post-install script for Jetson Nano
#! /usr/bin/env bash
#
# This is a custom post-install script for a Jetson Nano.
#
set -ex
me=$(whoami)
if [ "$me" != "root" ]
then
echo 'Must run as root!'
exit 1
fi >&2
main() {
trim
update
apt install mc atop htop lsof strace arj links lynx tmux screen mosh mtr nmap ndiff dstat sysstat python3.8-venv
mkdata /dev/mmcblk0
sudonopass
user=$(firstuser)
usermod --append --groups docker $user
shutdown -r now
}
trim() {
apt remove gconf2 whoopsie
systemctl stop gdm3
systemctl set-default multi-user
if [ -e /etc/update-motd.d/60-unminimize ]
then unminimize #TODO: carefully handle prompts
fi
}
update() {
apt update
apt dist-upgrade
}
sudonopass() {
if ! egrep '^%sudo.+NOPASSWD:' /etc/sudoers
then perl -i -pe 's/^(%sudo\s.+)/#$1\n# Same thing without a password\n%sudo ALL=(ALL:ALL) NOPASSWD: ALL/' /etc/sudoers
fi
}
firstuser() {
awk -F: '$3==1000&&$4==1000{print $1}' /etc/passwd
}
mkdata() {
local dev="$1"
local free=$(getfree $dev)
local start="${free%B *}"
local diskend="${free#*B}"
diskend="${diskend::-1}"
test "$diskend" ||return 0
# create a 4GB swap
if ! grep "$dev" /proc/swaps
then
local end=$[start +4*1024*1024*1024 -1]
parted "$dev" mkpart primary linux-swap "${start}B" "${end}B"
local num=$(getlast $dev)
parted "$dev" name "$num" swap
mkswap "${dev}p$num" ||:
echo "${dev}p$num swap swap defaults" >>/etc/fstab
fi
# and remaining space as /data
if [ ! -e /data ]
then
parted "$dev" mkpart primary ext4 "$[end+1]B" "${diskend}B"
num=$(getlast $dev)
parted "$dev" name "$num" DATA
mkfs.ext4 -e remount-ro -LDATA -m1 -i32768 "${dev}p$num"
mkdir -p /data
echo "${dev}p$num /data ext4 defaults 0 2" >>/etc/fstab
fi
}
getfree() {
parted "$1" unit B print free |awk '
NF >3 {
start= ""
end= ""
}
/Free Space/ {
start= $1
end= $2
}
END {
print start, end
}'
}
getlast() {
parted "$1" print |awk '
NF >3 {
num= $1
}
END {
print num
}'
}
main "$@"
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment