Created
April 12, 2023 01:18
-
-
Save dotysan/426ee308c6544ecefd4d92d742806f87 to your computer and use it in GitHub Desktop.
Post-install script for Jetson Nano
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /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