diff --git a/.gitignore b/.gitignore index 496ee2c..80abc54 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.DS_Store \ No newline at end of file +.DS_Store +tags diff --git a/raspberrypi/disable_cursor.sh b/raspberrypi/disable_cursor.sh new file mode 100755 index 0000000..088fe5d --- /dev/null +++ b/raspberrypi/disable_cursor.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# note: this currently only works for key=value cmdline args +modify_cmdline() { + if echo "${1}" | grep -q '='; then + modify_cmdline_key=$(echo "${1}" | cut -d'=' -f1) + modify_cmdline_value=$(echo "${1}" | cut -d'=' -f2-) + else + modify_cmdline_key="${1}" + modify_cmdline_value="${2}" + fi + + modify_cmdline_cmdline="$(cat /boot/cmdline.txt)" + + if echo "${modify_cmdline_cmdline}" | grep -q -E "\b${modify_cmdline_key}=[^ ]*"; then + modify_cmdline_cmdline=$(echo "${modify_cmdline_cmdline}" | sed "s/\b${modify_cmdline_key}=[^ ]*/${modify_cmdline_key}=${modify_cmdline_value}/g") + else + modify_cmdline_cmdline="${modify_cmdline_cmdline} ${modify_cmdline_key}=${modify_cmdline_value}" + fi + + echo "${modify_cmdline_cmdline}" > /boot/cmdline.txt +} + +modify_cmdline "vt.global_cursor_default=0" diff --git a/raspberrypi/disable_cursor_blink.sh b/raspberrypi/disable_cursor_blink.sh new file mode 100755 index 0000000..ecab8b8 --- /dev/null +++ b/raspberrypi/disable_cursor_blink.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +cat < "/etc/systemd/system/disable-cursor-blink.service" +[Unit] +Description=Disable cursor blink on Linux console +DefaultDependencies=no +Before=sysinit.target + +[Service] +Type=oneshot +ExecStart=/bin/sh -c "echo 0 > /sys/class/graphics/fbcon/cursor_blink" + +[Install] +WantedBy=sysinit.target +EOL + +systemctl daemon-reload +systemctl enable disable-cursor-blink.service +systemctl start disable-cursor-blink.service diff --git a/raspberrypi/disable_kernel_logs.sh b/raspberrypi/disable_kernel_logs.sh new file mode 100755 index 0000000..e21df08 --- /dev/null +++ b/raspberrypi/disable_kernel_logs.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +modify_conf() { + modify_conf_conf_file="$1" + + if echo "${2}" | grep -q '='; then + modify_conf_key=$(echo "${2}" | cut -d'=' -f1) + modify_conf_value=$(echo "${2}" | cut -d'=' -f2-) + else + modify_conf_key="${2}" + modify_conf_value="${3}" + fi + + modify_conf_new_content="" + modify_conf_found=0 + + if [ -f "${modify_conf_conf_file}" ]; then + while IFS= read -r modify_conf_line; do + if echo "${modify_conf_line}" | grep -q "^${modify_conf_key}"; then + modify_conf_line="${modify_conf_key}=${modify_conf_value}" + modify_conf_found=1 + fi + modify_conf_new_content="${modify_conf_new_content}$(printf "%s\n" "${modify_conf_line}")" + done < "${modify_conf_conf_file}" + fi + + [ "${modify_conf_found}" -eq 0 ] && modify_conf_new_content="${modify_conf_new_content}$(printf '%s=%s\n' "${modify_conf_key}" "${modify_conf_value}")" + + modify_conf_new_content=$(printf "%s" "${modify_conf_new_content}" | sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba') + + printf "%s\n" "${modify_conf_new_content}" > "${modify_conf_conf_file}" +} + +modify_conf "/etc/sysctl.d/20-quiet-printk.conf" "kernel.printk" "-1 -1 -1 -1" diff --git a/raspberrypi/disable_login_prompt.sh b/raspberrypi/disable_login_prompt.sh new file mode 100755 index 0000000..751e3ee --- /dev/null +++ b/raspberrypi/disable_login_prompt.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +modify_service_conf() { + modify_service_conf_file="$1" + modify_service_conf_linePrefix="$2" + modify_service_conf_subcommand="$3" + modify_service_conf_flag="$4" + + modify_service_conf_flag_escaped="$(echo "${modify_service_conf_flag}" | sed -e 's/[\\/&]/\\&/g')" + modify_service_conf_linePrefix_escaped="$(echo "${modify_service_conf_linePrefix}" | sed -e 's/[\\/&]/\\&/g')" + + if [ ! -f "${modify_service_conf_file}" ]; then + exit 1 + fi + + modify_service_conf_new_content="" + modify_service_conf_found=0 + + while IFS= read -r modify_service_conf_line || [ -n "${modify_service_conf_line}" ]; do + if echo "${modify_service_conf_line}" | grep -q -e "^${modify_service_conf_linePrefix_escaped}"; then + modify_service_conf_found=1 + #shellcheck disable=2295 + remaining_line="${modify_service_conf_line#${modify_service_conf_linePrefix} }" + case "${modify_service_conf_subcommand}" in + add) + if ! echo "${remaining_line}" | grep -q -w -e "${modify_service_conf_flag_escaped}"; then + modify_service_conf_line="${modify_service_conf_linePrefix} ${modify_service_conf_flag} ${remaining_line}" + fi + ;; + del|delete) + remaining_line="$(echo "${remaining_line}" | sed "s/[[:space:]]*${modify_service_conf_flag_escaped}[[:space:]]*/ /g" | awk '{$1=$1};1')" + modify_service_conf_line="${modify_service_conf_linePrefix} ${remaining_line}" + ;; + *) + ;; + esac + fi + modify_service_conf_new_content="$(printf "%s\n%s" "${modify_service_conf_new_content}" "${modify_service_conf_line}")" + done < "${modify_service_conf_file}" + + if [ "${modify_service_conf_found}" -eq 0 ]; then + exit 1 + fi + + printf "%s\n" "${modify_service_conf_new_content}" > "${modify_service_conf_file}" +} + +modify_service_conf "/etc/systemd/system/getty@tty1.service.d/autologin.conf" "ExecStart=-/sbin/agetty" "add" "--skip-login" +modify_service_conf "/etc/systemd/system/getty@tty1.service.d/autologin.conf" "ExecStart=-/sbin/agetty" "add" "--nonewline" diff --git a/raspberrypi/disable_motd.sh b/raspberrypi/disable_motd.sh new file mode 100755 index 0000000..728efee --- /dev/null +++ b/raspberrypi/disable_motd.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +DATE="$(date +%s)" + +if [ -z "${DATE}" ]; then + DATE=default +fi + +getent passwd | + awk -F: '($3 >= 1000 || $3 == 0) && $7 !~ /nologin|false$/ { print $6 "/.hushlogin" }' | + xargs -I {} sh -c "echo '${DATE}' | tee -a {} > /dev/null" + +if [ -e "/etc/update-motd.d/10-uname" ]; then + chmod -x /etc/update-motd.d/10-uname* + mv -f "/etc/update-motd.d/10-uname" "/etc/update-motd.d/10-uname.backup.${DATE}" +fi + +if [ -e "/etc/motd" ]; then + mv -f "/etc/motd" "/etc/motd.backup.${DATE}" +fi + +if [ -e "/etc/issue" ]; then + mv -f "/etc/issue" "/etc/issue.backup.${DATE}" +fi diff --git a/raspberrypi/enable_cursor.sh b/raspberrypi/enable_cursor.sh new file mode 100755 index 0000000..c2e9103 --- /dev/null +++ b/raspberrypi/enable_cursor.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# note: this currently only works for key=value cmdline args +modify_cmdline() { + if echo "${1}" | grep -q '='; then + modify_cmdline_key=$(echo "${1}" | cut -d'=' -f1) + modify_cmdline_value=$(echo "${1}" | cut -d'=' -f2-) + else + modify_cmdline_key="${1}" + modify_cmdline_value="${2}" + fi + + modify_cmdline_cmdline="$(cat /boot/cmdline.txt)" + + if echo "${modify_cmdline_cmdline}" | grep -q -E "\b${modify_cmdline_key}=[^ ]*"; then + modify_cmdline_cmdline=$(echo "${modify_cmdline_cmdline}" | sed "s/\b${modify_cmdline_key}=[^ ]*/${modify_cmdline_key}=${modify_cmdline_value}/g") + else + modify_cmdline_cmdline="${modify_cmdline_cmdline} ${modify_cmdline_key}=${modify_cmdline_value}" + fi + + echo "${modify_cmdline_cmdline}" > /boot/cmdline.txt +} + +modify_cmdline "vt.global_cursor_default=1" diff --git a/raspberrypi/enable_disabled_cursor_blink.sh b/raspberrypi/enable_disabled_cursor_blink.sh new file mode 100755 index 0000000..5528016 --- /dev/null +++ b/raspberrypi/enable_disabled_cursor_blink.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +if systemctl list-units --full -all | grep -q "disable-cursor-blink.service"; then + systemctl disable disable-cursor-blink.service +fi + +rm -f /etc/systemd/system/disable-cursor-blink.service +systemctl daemon-reload diff --git a/raspberrypi/enable_login_prompt.sh b/raspberrypi/enable_login_prompt.sh new file mode 100755 index 0000000..736c7e4 --- /dev/null +++ b/raspberrypi/enable_login_prompt.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +modify_service_conf() { + modify_service_conf_file="$1" + modify_service_conf_linePrefix="$2" + modify_service_conf_subcommand="$3" + modify_service_conf_flag="$4" + + modify_service_conf_flag_escaped="$(echo "${modify_service_conf_flag}" | sed -e 's/[\\/&]/\\&/g')" + modify_service_conf_linePrefix_escaped="$(echo "${modify_service_conf_linePrefix}" | sed -e 's/[\\/&]/\\&/g')" + + if [ ! -f "${modify_service_conf_file}" ]; then + exit 1 + fi + + modify_service_conf_new_content="" + modify_service_conf_found=0 + + while IFS= read -r modify_service_conf_line || [ -n "${modify_service_conf_line}" ]; do + if echo "${modify_service_conf_line}" | grep -q -e "^${modify_service_conf_linePrefix_escaped}"; then + modify_service_conf_found=1 + #shellcheck disable=2295 + remaining_line="${modify_service_conf_line#${modify_service_conf_linePrefix} }" + case "${modify_service_conf_subcommand}" in + add) + if ! echo "${remaining_line}" | grep -q -w -e "${modify_service_conf_flag_escaped}"; then + modify_service_conf_line="${modify_service_conf_linePrefix} ${modify_service_conf_flag} ${remaining_line}" + fi + ;; + del|delete) + remaining_line="$(echo "${remaining_line}" | sed "s/[[:space:]]*${modify_service_conf_flag_escaped}[[:space:]]*/ /g" | awk '{$1=$1};1')" + modify_service_conf_line="${modify_service_conf_linePrefix} ${remaining_line}" + ;; + *) + ;; + esac + fi + modify_service_conf_new_content="$(printf "%s\n%s" "${modify_service_conf_new_content}" "${modify_service_conf_line}")" + done < "${modify_service_conf_file}" + + if [ "${modify_service_conf_found}" -eq 0 ]; then + exit 1 + fi + + printf "%s\n" "${modify_service_conf_new_content}" > "${modify_service_conf_file}" +} + +modify_service_conf "/etc/systemd/system/getty@tty1.service.d/autologin.conf" "ExecStart=-/sbin/agetty" "del" "--skip-login" +modify_service_conf "/etc/systemd/system/getty@tty1.service.d/autologin.conf" "ExecStart=-/sbin/agetty" "del" "--nonewline" diff --git a/raspberrypi/optimize.sh b/raspberrypi/optimize.sh new file mode 100755 index 0000000..7d1662f --- /dev/null +++ b/raspberrypi/optimize.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +curl -s "https://raw.githubusercontent.com/beeper/beepy/main/raspberrypi/optimize_boot.sh" | bash +curl -s "https://raw.githubusercontent.com/beeper/beepy/main/raspberrypi/disable_motd.sh" | bash +curl -s "https://raw.githubusercontent.com/beeper/beepy/main/raspberrypi/disable_login_prompt.sh" | bash +curl -s "https://raw.githubusercontent.com/beeper/beepy/main/raspberrypi/disable_cursor_blink.sh" | bash +curl -s "https://raw.githubusercontent.com/beeper/beepy/main/raspberrypi/disable_kernel_logs.sh" | bash diff --git a/raspberrypi/optimize_boot.sh b/raspberrypi/optimize_boot.sh index 2018022..880116b 100755 --- a/raspberrypi/optimize_boot.sh +++ b/raspberrypi/optimize_boot.sh @@ -1,8 +1,9 @@ #!/bin/sh #This script reduces boot times from 60s to 19s on the RPi0w +#shellcheck disable=SC2312 if [ "$(id -u)" -ne 0 ]; then - echo "This script must be run as root" + echo "This script must be run as root" exit 1 fi diff --git a/raspberrypi/set-cpu-count-to-2.sh b/raspberrypi/set-cpu-count-to-2.sh new file mode 100755 index 0000000..ab8402f --- /dev/null +++ b/raspberrypi/set-cpu-count-to-2.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# note: this currently only works for key=value cmdline args +modify_cmdline() { + if echo "${1}" | grep -q '='; then + modify_cmdline_key=$(echo "${1}" | cut -d'=' -f1) + modify_cmdline_value=$(echo "${1}" | cut -d'=' -f2-) + else + modify_cmdline_key="${1}" + modify_cmdline_value="${2}" + fi + + modify_cmdline_cmdline="$(cat /boot/cmdline.txt)" + + if echo "${modify_cmdline_cmdline}" | grep -q -E "\b${modify_cmdline_key}=[^ ]*"; then + modify_cmdline_cmdline=$(echo "${modify_cmdline_cmdline}" | sed "s/\b${modify_cmdline_key}=[^ ]*/${modify_cmdline_key}=${modify_cmdline_value}/g") + else + modify_cmdline_cmdline="${modify_cmdline_cmdline} ${modify_cmdline_key}=${modify_cmdline_value}" + fi + + echo "${modify_cmdline_cmdline}" > /boot/cmdline.txt +} + +modify_cmdline "maxcpus=2" diff --git a/raspberrypi/set-cpu-count-to-4.sh b/raspberrypi/set-cpu-count-to-4.sh new file mode 100755 index 0000000..d706785 --- /dev/null +++ b/raspberrypi/set-cpu-count-to-4.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# note: this currently only works for key=value cmdline args +modify_cmdline() { + if echo "${1}" | grep -q '='; then + modify_cmdline_key=$(echo "${1}" | cut -d'=' -f1) + modify_cmdline_value=$(echo "${1}" | cut -d'=' -f2-) + else + modify_cmdline_key="${1}" + modify_cmdline_value="${2}" + fi + + modify_cmdline_cmdline="$(cat /boot/cmdline.txt)" + + if echo "${modify_cmdline_cmdline}" | grep -q -E "\b${modify_cmdline_key}=[^ ]*"; then + modify_cmdline_cmdline=$(echo "${modify_cmdline_cmdline}" | sed "s/\b${modify_cmdline_key}=[^ ]*/${modify_cmdline_key}=${modify_cmdline_value}/g") + else + modify_cmdline_cmdline="${modify_cmdline_cmdline} ${modify_cmdline_key}=${modify_cmdline_value}" + fi + + echo "${modify_cmdline_cmdline}" > /boot/cmdline.txt +} + +modify_cmdline "maxcpus=4"