Last active
September 18, 2022 05:07
-
-
Save lainiwa/0428b7b702d42739971e870c7010c909 to your computer and use it in GitHub Desktop.
CRUX linux installation commands
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
# 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