Undead USB Install
A linux nomadbsd alternative
GPT for everybody, see Talk:Undead_USB_Install for a uEFI forward compatible install
This is an install strategy to target a USB flash stick as / instead of a traditional hard drive or internal solid state drive. this isn't a live cd, this is a persistent root funtoo install that changes will keep living on.
In this run i will use a 64gb 100 mb/s sandisk, 32gb minimum for gnome, 16gb are ok for xfce lxde lxqt type builds. get a fast usb3 drive even if you dont have usb3 ports as the flash memory on them is much faster than the flash memory on usb2 keys which will improve usability.
this section is for mbr partitioning with gparted, use uefi with bios boot partition for legacy support
I'm using gparted on xubuntu (any running linux system with gparted should be able to follow this guide) to delete the flash key fat32 partition and create a single jfs / partition labeled as FUNTOO, and mount it to /mnt/funtoo. USE JFS, IT'S FAST!!! ext is a turtle, and it's fsck is slow, XFS is fast but doesn't have mature fscking, JFS has a mature fsck, and it's fast.
we want our USB to be targeting generic hardware so we can have our root funtoo compatible with most modern hardware. prefer nouveau drivers over nvidia because KMS loads intel and possibly other video card systems.
you can also pull your Subarches gnome tarball if you're installing to specific hardware.
root # cd /mnt/funtoo root # wget https://build.funtoo.org/1.4-release-std/x86-64bit/generic_64/gnome-latest.tar.xz root # tar --numeric-owner -xpf *gnome* && rm -f *gnome*
root # mount -t tmpfs tmpfs /run
root # cd /mnt/funtoo && mount -t proc none proc mount --rbind /sys sys mount --rbind /dev dev mount --rbind /run run
were using googles name server simply because its universal, and anyone can access it anywhere.
root # cd /mnt/funtoo && env -i HOME=/root TERM=$TERM chroot . bash -l root # echo "nameserver 184.108.40.206" > /etc/resolv.conf && passwd root # mv /etc/fstab /etc/fstab.backup
If you're using gpt partitioning run this block:
root # echo "LABEL=BOOT /boot vfat noauto,noatime 1 2" >> /etc/fstab
were disabling swap because we didn't partition for it, and switching the compile directory to ram instead of on disk. im compiling on 16gb of ram but 8 should be sufficient, possibly even 4gb or less if you avoid large packages. Were setting the host name, and merging a handful of packages.
root # echo 'PORTAGE_TMPDIR="/run"' > /etc/portage/make.conf && rc-update del swap boot
root # echo "LABEL=FUNTOO / jfs noatime 0 1" >> /etc/fstab root # echo "tmpfs /run tmpfs rw,nodev,nosuid 0 0" >> /etc/fstab root # echo 'hostname="undead"' > /etc/conf.d/hostname root # ego sync && emerge jfsutils grub haveged linux-firmware discord-bin firefox-bin media-fonts/noto eix
you can also install Package:Brave
funtoo's official chat: https://discord.gg/BNUSpUU
Install grub in legacy mode.
root # grub-install --target=i386-pc --no-floppy /dev/sdc root # ego boot update && rc-update add haveged && rc-update add gpm && rc-update del sshd
If you're installing with GPT you can insert grub EFI entries now.
root # mkdir /boot/efi root # mount /dev/sdc2 /boot/efi root # grub-install --target=x86_64-efi /boot/efi
this produces a hybrid GPT install, it will boot on legacy computers, and uefi computers when secure boot is disabled in bios.
final install size is around 14,500MB gnome can fit in a 16gb usb stick, but it's a tight squeeze and unix file systems degrade in performance at around 80%-90% full. 32gb keys are good, 64gb are excellent, 128gb keys can emerge the world.
rebuild the kernel video drivers modules.
root # emerge -1 x11-drivers/nvidia-kernel-modules
When you boot into your new system use nmtui to setup networking:
root # nmtui
to not run nvidia:
root # ego profile mix-in gfxcard-nouveau root # ego profile mix-in -gfxcard-nvidia
remove the nouveau blacklist so it grabs the screen.
root # rm /etc/modprobe.d/nouveau* root # rm /etc/modprobe.d/nvidia*
If you're having problems with nouveau not playing sound over HDMI restart pulse audio:
root # pkill pulseaudio
to fix the clock to eastern standard time:
root # rm /etc/localtime root # ln -s /usr/share/zoneinfo/America/Detroit /etc/localtime
The magic words to update:
root # emerge -avuND @world root # emerge -av --depclean root # ego boot update
every so often you will want to purge sources to keep the stick as low memory usage as possible
root # rm /var/cache/portage/distfiles/*.tar.bz2 root # rm /var/cache/portage/distfiles/*.tar.xz root # rm /var/cache/portage/distfiles/*.tar.gz
i use Package:Sudo, and disable root login.
i use Package:Dnsmasq to block advertising, and cache DNS traffic to accelerate web browsing.
i use Package:Dnscrypt to encrypt all dns requests so the vast majority of the web traffic from my undead usb is encrypted.
use Package:Eix to browse portage to see packages you can emerge.
use Package:Eselect to set various system options.
root # echo "www.funtoo.org" > /etc/motd
add fortunes piped through cowsay to the shells
root # emerge fortune-mod cowsay root # cd && echo "fortune | cowsay" >> .bashrc
dpms disrespects screen blanking settings, so you can't watch movies in VLC without the screen turning off.
root # xset s off -dpms
root # cat > /etc/X11/xorg.conf.d/10-monitor.conf << "EOF" Section "Extensions" Option "DPMS" "Disable" EndSection EOF
/etc/X11/xorg.conf.d/10-monitor.conf- Disable DPMS blanking
Section "Extensions" Option "DPMS" "Disable" EndSection
avoid adding fstab entries for drives that will not be present on other computers. JFS will mount read only if fsck fails!
I have a jfs home drive labeled HOME. This is the fstab entry to have funtoo use my rotating hard drive as /home
root # echo "LABEL=HOME /home jfs noatime 0 2" >> /etc/fstab
Swapping by file
For a swap file on $HOME:
root # dd if=/dev/zero of=/home/swapfile bs=1M count=4096 status=progress chmod 600 /home/swapfile mkswap /home/swapfile swapon /home/swapfile echo "/home/swapfile none swap defaults 0 0" >> /etc/fstab rc-update add swap boot echo 'rc_need="localmount"' >> /etc/conf.d/swap
For a swap file on $VAR:
root # dd if=/dev/zero of=/var/swapfile bs=1M count=4096 status=progress chmod 600 /var/swapfile mkswap /var/swapfile swapon /var/swapfile echo "/var/swapfile none swap defaults 0 0" >> /etc/fstab rc-update add swap boot echo 'rc_need="localmount"' >> /etc/conf.d/swap
windows 10 utc
if you're running ntp on undead usb you will want to set any dual booting windows clocks to be universal. in an administrator run command prompt run this:
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_QWORD /f