Skip to content

Instantly share code, notes, and snippets.

@lainiwa
Last active September 18, 2022 05:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save lainiwa/0428b7b702d42739971e870c7010c909 to your computer and use it in GitHub Desktop.
Save lainiwa/0428b7b702d42739971e870c7010c909 to your computer and use it in GitHub Desktop.
CRUX linux installation commands
# wget 'https://mirrors.slackware.com/slackware/slackware64-current/kernels/huge.s/bzImage'
# # find / -name 'snd-hwdep.ko' 2>/dev/null
# /usr/src/linux-4.14.40/sound/core/snd-hwdep.ko
# /lib/modules/4.14.40/kernel/sound/core/snd-hwdep.ko
### CRUX
ip link set enp0s3 up
dhcpcd enp0s3
passwd
/etc/rc.d/sshd start
export TERM='linux'
#######################################################################
# CREATE PERTITIONS
#######################################################################
PARTITION_COMMANDS=$(
cat << FINISH | cat
mklabel gpt
unit mb
============================================================
| mkpart primary 0g 128 | name 1 boot | toggle 1 boot | # mkfs.vfat /dev/sda1
| mkpart primary 128 4227 | name 2 swap | | # mkswap /dev/sda2 && swapon /dev/sda2
| mkpart primary 4227 -1 | name 3 rootfs | | # mkfs.ext4 /dev/sda3
============================================================
print free
quit
FINISH
)
PARTED_COMMANDS=$(echo "${PARTITION_COMMANDS}" | tr -d '=|' | grep -o '^[^#]*' | tr '\n' ' ' | tr -s ' ')
FILESYSTEM_COMMANDS=$(echo 'set -eux'; echo "${PARTITION_COMMANDS}" | grep -o '#.*' | cut -c 2-)
parted -a optimal /dev/sda -s -- ${PARTED_COMMANDS}
sh -c "$FILESYSTEM_COMMANDS"
#######################################################################
# MOUNT PERTITIONS
#######################################################################
mkdir -p /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi
mount /dev/sda3 /mnt
mkdir -p /mnt/{dev,sys,proc,tmp,usr/src,var}
#######################################################################
# SETUP
#######################################################################
setup
setup-chroot
passwd root
# vim /etc/rc.d/net # nothing
echo 'nameserver 185.121.177.177' > /etc/resolv.conf.head
#######################################################################
# FSTAB
#######################################################################
sed -i 's/^#tmp/tmp/g' /etc/fstab
FSTAB=$( cat << FINISH
/dev/sda1 /boot/efi vfat defaults 0 2
/dev/sda2 swap swap defaults 0 0
/dev/sda3 / ext4 noatime 0 1
FINISH
)
if ! grep --quiet '/dev/sda1' /etc/fstab; then
awk -i inplace -v "n=5" -v "s=${FSTAB}" '(NR==n) { print s } 1' /etc/fstab
fi
#######################################################################
# BASIC CONFIGURATION
#######################################################################
sed -i 's/TIMEZONE=.*/TIMEZONE=Israel/' /etc/rc.conf
sed -i 's/HOSTNAME=.*/HOSTNAME=crux-navi/' /etc/rc.conf
#######################################################################
# BOOTLOADER
#######################################################################
cat << FINISH > /etc/lilo.conf
#
#
# /etc/lilo.conf: lilo(8) configuration, see lilo.conf(5)
#
lba32
install=text
boot=/dev/sda
image=/boot/vmlinuz
label=CRUX
read-only
append="root=/dev/sda3"
# End of file
FINISH
#######################################################################
# BUILD AND INSTALL KERNEL
#######################################################################
cd /usr/src/linux-4.14.40/
# may customize here with `make menuconfig`
make -j $(nproc) all modules_install install
#######################################################################
# DAEMONS
#######################################################################
sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -i 's/^SERVICES=.*/SERVICES=(lo net crond sshd)/' /etc/rc.conf
#######################################################################
# FIX `kernel: <27>udevd[58]: specified group 'kvm' unknown`
#######################################################################
groupadd kvm
#######################################################################
# SET LANGUAGE
# source: https://www.alv.me/crux-inicializaciya-i-nastrojka/
#######################################################################
sed -i 's/^FONT=.*/FONT=LatArCyrHeb-16/' /etc/rc.conf
sed -i 's/^KEYMAP=.*/KEYMAP=ru-utf/' /etc/rc.conf
localedef -i en_US -f UTF-8 en_US.utf8
localedef -i ru_RU -f UTF-8 ru_RU.utf8
#######################################################################
# SET ENVIRONMENT VARIABLES
#######################################################################
add_text_to_file() {
text="$1"
file="$2"
if ! grep -Fxq "$text" "$file"; then
printf "%s\n" "$text" >> "$file"
fi
}
# localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
# localedef -i ru_RU -f ISO-8859-1 ru_RU
# localedef -i ru_RU -f ISO-8859-1 ru_RU.ISO-8859-1
# localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
# locale
# locale -a
# less /usr/share/i18n/...
add_text_to_file "export LANG='en_US.utf8'" /etc/profile
# export TERM='vt100'
# export TERM='xterm'
# export TERM='xterm-256color'
# add_text_to_file "export TERM='rxvt-256color'" /etc/profile # only this does let me use htop
shutdown -h now
#######################################################################
# SET PRT-GET SETTINGS
#######################################################################
mv /etc/ports/contrib.rsync{.inactive,}
sed -i 's|#prtdir /usr/ports/contrib|prtdir /usr/ports/contrib|' /etc/prt-get.conf
sed -i 's/# runscripts no.*/runscripts yes/' /etc/prt-get.conf
sed -i 's/# PKGMK_IGNORE_NEW="no"/PKGMK_IGNORE_NEW="yes"/' /etc/pkgmk.conf
ports -u
#######################################################################
# INSTALL TMUX AND RUN SYS UPDATE IN IT
#######################################################################
prt-get depinst htop tmux git
prt-get depinst meson ninja # otherwize double sysup fails
(cd /usr/ports/core/gettext/; pkgmk -uf)
tmux new-session -d &&
tmux send-keys -t 0 'prt-get sysup --prefer-higher' Enter &&
tmux attach-session
#######################################################################
# INSTALL XORG STUFF AND DBUS
#######################################################################
# prt-get depinst xorg xorg-font-terminus xkeyboard-config xorg-xinit dbus
prt-get depinst xorg-xf86-input-mouse xorg-xf86-input-keyboard xorg-xf86-input-evdev \
xorg-font-terminus xkeyboard-config xorg-xinit dbus
if ! grep -Fxq 'dbus' /etc/rc.conf; then
sed -i 's/^SERVICES=\(.*\))/SERVICES=\1 dbus)/' /etc/rc.conf
/etc/rc.d/dbus start
fi
#######################################################################
# ACPI DEAMON
#######################################################################
prt-get depinst acpid
if ! grep -Fxq 'acpid' /etc/rc.conf; then
sed -i 's/^SERVICES=\(.*\))/SERVICES=\1 acpid)/' /etc/rc.conf
/etc/rc.d/acpid start
fi
#######################################################################
# INSTALL GUEST ADDITIONS
#######################################################################
prt-get depinst dmidecode
vbox_ver=$(dmidecode | grep -i vboxver | grep -E -o '[[:digit:]\.]+' | tail -n 1)
wget "https://download.virtualbox.org/virtualbox/${vbox_ver}/VBoxGuestAdditions_${vbox_ver}.iso"
modprobe loop
mkdir /mnt/cdrom
mount -t iso9660 -o ro,loop VBoxGuestAdditions_*.iso /mnt/cdrom
yes | /mnt/cdrom/VBoxLinuxAdditions.run
umount /mnt/cdrom
rm VBoxGuestAdditions_*.iso
#######################################################################
# INSTALL MODULES FOR GUEST ADDITIONS
#######################################################################
prt-get depinst xorg-xf86-video-vboxvideo xorg-xf86-video-fbdev
prt-get depinst xorg-xrandr
#######################################################################
# INSTALL XORG DEBUG TOOLS
#######################################################################
# prt-get depinst xorg-xdpyinfo xorg-xwininfo dmidecode
# resolutions:
# xdpyinfo | grep dimensions:
# xwininfo -root |egrep 'Width:|Height:'
# version:
# dmidecode | grep -i vboxver | grep -E -o '[[:digit:]\.]+' | tail -n 1
# supported resolutions:
# xrandr
#######################################################################
# ADD A REPO
#######################################################################
if [ ! -f '/etc/ports/jaeger.pub' ]; then
wget --continue --directory-prefix='/etc/ports/' 'https://crux.nu/keys/jaeger.pub'
sed -i '' "s|\(### log options:\)|$(
echo '# Some additional repo
prtdir /usr/ports/jaeger
' | awk '{$1=$1;print}' | perl -pe 's/\n/\\n/'
)\1|" /etc/prt-get.conf
fi
wget --content-disposition \
--directory-prefix='/etc/ports/' \
'https://crux.nu/portdb/index.php?a=getup&q=jaeger'
#######################################################################
# ADD PERSONAL REPO
#######################################################################
if ! grep 'lainiwa' /etc/prt-get.conf; then
# < no key >
# why not -i'' ? --> bc not a freebsd sed
sed -i "s|\(prtdir /usr/ports/core\)|$(
echo '# My personal repo
prtdir /usr/ports/lainiwa
' | awk '{$1=$1;print}' | perl -pe 's/\n/\\n/'
)\1|" /etc/prt-get.conf
fi
wget --content-disposition \
--directory-prefix='/etc/ports/' \
'https://raw.githubusercontent.com/lainiwa/crux-ports/master/lainiwa.git'
ports -u
#######################################################################
# INSTALL WM AND STUFF
#######################################################################
prt-get depinst dwm dmenu st xorg-xsetroot
#######################################################################
# MAKE XORG.CONF
#######################################################################
# Modes "2560x1600" "2560x1440" "2048x1536" "1920x1600" "1920x1080" "1680x1050" "1600x1200" ...
echo '
Section "Device"
Identifier "VirtualBox Video Card"
Driver "vboxvideo"
EndSection
' > /etc/X11/xorg.conf
#######################################################################
# START VBOXSERVICE AS A DAEMON
#######################################################################
echo '#!/bin/sh
LOGFILE="/var/log/vboxservice.log"
PIDFILE="/var/run/vboxservice.pid"
case "$1" in
start)
if [ ! -f "$PIDFILE" ]; then
/usr/sbin/VBoxService --logfile "$LOGFILE" --pidfile "$PIDFILE"
fi
;;
stop)
if [ -f "$PIDFILE" ]; then
kill -HUP "$(cat "$PIDFILE")"
fi
;;
status)
if [ -f "$PIDFILE" ]; then
if kill -0 "$(cat "$PIDFILE")"; then
echo "Running"
else
echo "Process dead but pidfile exists"
fi
else
echo "Service not running"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 5
esac
exit $?
' > /etc/rc.d/vboxservice
chmod +x /etc/rc.d/vboxservice
if ! grep -Fxq 'vboxservice' /etc/rc.conf; then
sed -i 's/^SERVICES=\(.*\))/SERVICES=\1 vboxservice)/' /etc/rc.conf
/etc/rc.d/vboxservice start
fi
#######################################################################
# ADD USER
#######################################################################
prt-get depinst sudo
useradd -m lain
passwd lain # MAKE PASSWORD
# Add user to sudoers
groupadd sudo
usermod -aG sudo lain
sed -i 's/# %sudo.*/%sudo ALL=(ALL) ALL/g' /etc/sudoers
#######################################################################
# SETUP ZSH AND DOTFILES FOR USER
#######################################################################
prt-get depinst zsh
su - lain -c bash << eof
if [ ! -d ~/.dotfiles ]; then
git clone https://github.com/lainiwa/dotfiles.git ~/.dotfiles
fi
~/.dotfiles/install
zsh -i -c -- '-zplg-scheduler burst || true'
eof
chsh -s "$(which zsh)" lain
#######################################################################
# ADD AUDIO
#######################################################################
prt-get depinst alsa-lib alsa-utils apulse
usermod -aG audio lain
#######################################################################
# AUTOLOGIN/AUTO USER CHOOSER
#######################################################################
sed -i 's|agetty --noclear 38400 tty1|agetty --noclear --autologin lain 38400 tty1|' /etc/inittab
# sed -i 's|agetty --noclear 38400 tty1|agetty --noclear --skip-login --login-options=root 38400 tty1|' /etc/inittab
# sed -i 's|agetty 38400 tty2|agetty --autologin lain 38400 tty2|' /etc/inittab
#######################################################################
# INSTALL SUBLIME TEXT 3
#######################################################################
prt-get depinst gtk3
wget --quiet --output-document=- "$(
wget --quiet --output-document=- 'https://www.sublimetext.com/3' |
grep --only-matching 'https://download.*x64\.tar\.bz2'
)" |
tar --extract --bzip2 --file=- --directory=/opt
echo '#!/bin/sh
exec /opt/sublime_text_3/sublime_text "$@" --fwdargv0 "$0"
' > /usr/bin/subl
chmod 755 /usr/bin/subl
#/////////////////////////////////////////////////////////////////////////////////
# RUN AS LAIN FROM NOW ON
#/////////////////////////////////////////////////////////////////////////////////
#######################################################################
# INSTALL TOR BROWSER
#######################################################################
sudo prt-get depinst gtk3
tor_version='8.0.8'
wget "https://www.torproject.org/dist/torbrowser/${tor_version}/tor-browser-linux64-${tor_version}_en-US.tar.xz"
mkdir -p "${HOME}/opt" "${HOME}/bin"
tar -xJf "tor-browser-linux64-${tor_version}_en-US.tar.xz" --directory="${HOME}/opt"
rm "tor-browser-linux64-${tor_version}_en-US.tar.xz"
ln -s "${HOME}/opt/tor-browser_en-US/Browser/start-tor-browser" "${HOME}/bin/tor-browser"
# XORG Depends on:
# xorg-xf86-input-mouse
# xorg-xf86-input-keyboard
# xorg-xf86-input-evdev
# xorg-xf86-video-vesa -> xorg-xf86-video-fbdev
# xorg-xinit -> has
# xorg-xauth ->
# xorg-rgb -> ?
# xkeyboard-config -> has
# find /opt/tor-browser_en-US -type d -exec chmod 755 {} \;
# chmod 755 /opt/tor-browser_en-US/Browser/start-tor-browser
# tree slock xclip jq unrar ncdu tig lynx scrot feh sshfs-fuse mpv
# docker pulseaudio polkit mtr socat alsa-oss
# grc z.sh entr
#
# cloc
# browser? icecat vs firefox?? vs chromium
# atool? lnav?
# EDITOR
# password-store vs tpm
# xdotool? mosh? syncthing?
# prt-get depinst xorg-xf86-video-intel libva-intel intel-ucode
# less /var/log/Xorg.0.log
# prt-get depinst xorg-xf86-video-vboxvideo xorg-xf86-video-fbdev xorg-xf86-video-intel acpid
# if ! grep -Fxq 'acpid' /etc/rc.conf; then
# sed -i 's/^SERVICES=\(.*\))/SERVICES=\1 acpid)/' /etc/rc.conf
# /etc/rc.d/acpid start
# fi
# https://superuser.com/questions/1177090/why-cant-x-find-my-vboxvideo-driver
# wget 'https://cgit.freedesktop.org/xorg/driver/xf86-video-vbox/snapshot/xf86-video-vbox-ab07f97612d045d8c0a376174b39a294d028fef2.tar.xz'
# tar xf xf86-video-vbox-*.tar.xz
# cd xf86-video-vbox-*/
# sh autogen.sh --prefix=/usr --with-xorg-module-dir=/usr/lib64/xorg/modules/drivers
# make && sudo make install
# kernel panic
# intel_pstate=disable (helped?)
# kernel: tsc: Fast TSC calibration failed (occured once)
# clocksource=acpi_pm
# kernel: random: 1 urandom warning(s) missed due to ratelimiting (occured once)
# kernel: <27>udevd[58]: specified group 'kvm' unknown
# chipset (didn't help)
# HELPED: # groupadd kvm
# prt-get depinst dwm dmenu
# были какие-то проблемы
# но с какого-то захода норм подключилось с варнингом про монтирование в ридонли режиме
# затем VBoxService в логе жалуется на отсутствие dbus:
# prt-get depinst dbus
# /etc/rc.d/dbus start
# https://superuser.com/questions/1177090/why-cant-x-find-my-vboxvideo-driver
# /usr/sbin/VBoxService -l /root/vboxservice.log -v
# lsmod | grep box
# less /var/log/Xorg.0.log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment