Fog: Difference between revisions
Line 261: | Line 261: | ||
== Heat/Power Optimization == | == Heat/Power Optimization == | ||
<blockquote> | <blockquote> | ||
=== Configuration === | |||
<blockquote> | |||
Install and Enable | |||
* [[ | * [[mbpfan]] | ||
* [[cpupower]] | |||
* [[tlp]] | * [[tlp]] | ||
* [[thermald]] | * [[thermald]] | ||
<syntaxhighlight lang="bash"> | |||
# /boot/efi/loader/entries/archlinux.conf | |||
# disable intel_pstate so userspace power management available. | |||
options intel_pstate=disable # ... | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
# /etc/default/cpupower | |||
# enable conservative governor, the most resistant to ramp up cpu cycles | |||
# some others: ondemand, userspace | |||
governor='conservative' | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# find warnings with tlp (ex: warning: systemd-rfkill.service is not masked, to correct this...) | # find warnings with tlp (ex: warning: systemd-rfkill.service is not masked, to correct this...) | ||
Line 301: | Line 293: | ||
sudo systemctl mask systemd-rfkill.socket | sudo systemctl mask systemd-rfkill.socket | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</blockquote><!-- Configuration --> | |||
=== Monitoring === | |||
<blockquote> | |||
* [[powertop]] | |||
* [[i7z]] | |||
monitoring some usage stats | |||
<syntaxhighlight lang="bash"> | |||
sudo i7z # cpu freq per core | |||
sudo tlp-stats -p # power optimizations | |||
sudo tlp-stats -t # temp/fan-speeds | |||
watch eval 'sensors | head -n 10' # cpu temps | |||
watch eval 'cpupower frequency-info | grep "current CPU"' | |||
</syntaxhighlight> | |||
</blockquote><!-- Monitoring --> | |||
</blockquote><!-- Heat/Power Optimization --> | </blockquote><!-- Heat/Power Optimization --> | ||
Revision as of 03:21, 9 March 2022
Archlinux on a macbook. Named after Dean Fog.
TODO:
these install instructions don't belong here.
I need a section for archlinux variant installs like archlinux-arm, and this alt-kernel
t2linux install docs | https://wiki.t2linux.org/distributions/arch/installation/ |
t2linux wifi docs | https://wiki.t2linux.org/guides/wifi/ |
t2linux pacman repo | https://github.com/Redecorating/archlinux-t2-packages |
arch install | https://wiki.archlinux.org/title/Installation_guide#Set_the_console_keyboard_layout |
systemd boot | https://wiki.archlinux.org/title/Systemd-boot |
Install Media
Download install media
raw (out of date) https://dl.t2linux.org/archlinux/iso/index.html w/ wifi drivers https://github.com/t2linux/archiso-t2/releases diskutil list diskutil unmountDisk /dev/disk2 dd if=path/to/archlinux-version-x86_64.iso of=/dev/rdisk2 bs=1m
Partition Setup
You can't change the partition scheme from outside of macos unfortunately.
- macbook, start bootcamp (preinstalled) - drag slider for size (deletes apfs snapshots?) - disk utility - create a partition (any format) for your linux install - restart, holding cmd+r - Utilities > Startup Security Utility: - [x] No Security - [x] Allow booting from external media - restart, holding opt - you don't need to connect to wifi in bootloader - boot from EFI
Base Install
NOTE:
Use the wifi-enabled ISO, spoke with devs and wired kernel is outdated
(archiso) wlan setup
iwctl device list station wlan0 scan station wlan0 get-networks station wlan0 connect ${SSID} ping archlinux.org(archiso) format && baseinstall
timedatectl set-ntp true pacman -Sy # pacman-key --refresh-keys fdisk -l # find disk/partition mkfs.ext4 /dev/nvme0n1p3 # format partition as ext4 mount /dev/nvme0n1p3 /mnt # your install mkdir -p /mnt/boot/efi mount /dev/nvme0n1p1 /mnt/boot/efi # reuse macbook's EFI paritition # if necesary, copy/modify /etc/pacman.conf to /mnt/pacman.conf # and use: `pacstrap -C /mnt/pacman.conf` pacstrap /mnt \ base base-devel `# base packages/build-tools` \ linux-t2 linux-t2-headers linux-t2-docs `# t2-kernel` \ efivar efibootmgr dosfstools `# tools to manage efi` \ linux-firmware dkms \ apple-bcm-wifi-firmware \ iwd networkmanager netstat-nat net-tools \ neovim git openssh man-db genfstab -U /mnt >> /mnt/etc/fstab arch-chroot /mnt(chroot) Add t2linux repo
cat << EOF >> /etc/pacman.conf [mbp] Server = https://dl.t2linux.org/archlinux/$repo/$arch EOF pacman -Syy(chroot) Base Settings
ln -sf /usr/share/zoneinfo/America/Toronto /etc/localtime hwclock --systohc echo "en_US.UTF-8 UTF-8" > /etc/locale.gen locale-gen echo "LANG=en_US.UTF-8" > /etc/locale.conf echo "fog" > /etc/hostname mkinitcpio -P # confirm kernel/initramfs in /boot/efi passwd(chroot) Bootloader
cat << EOF > /boot/efi/loader/loader.conf default archlinux timeout 1 EOF # find PARTUUID of 'archlinux' install partition # (not EFI partition, not UUID) blkid cat << EOF > /boot/efi/loader/entries/archlinux.conf title Arch Linux linux vmlinuz-linux-t2 initrd initramfs-linux-t2.img # no quotes around PARTUUID options intel_iommu=on iommu=pt pcie_ports=compat root=PARTUUID=${PARTUUID} rw EOF # if you cannot write /boot/efi, use --no-variables bootctl --path=/boot/efi install systemctl mask systemd-boot-system-token # remount efivars as read-only (or kernel panic) # USE EITHER: (1 works for me) # echo efivarfs /sys/firmware/efi/efivars efivarfs ro,remount,nofail 0 0 >> /etc/fstab # OR # add 'efi=noruntime' to options in '/boot/efi/loader/entries/archlinux.conf'Reboot
- exit && reboot - hold 'option' while booting to choose boot - after selection, wait for timeout (choosing with enter seems to fail)Debugging Boot Issues
# from archiso, specify the journal of your chroot journalctl --directory=/var/log/journalunable to mount /boot/efi unknown filesystem vfat
do you have an old kernel in
/boot/efi
?
try copying initramfs/kernel from /boot to /boot/efi.this may only work with old kernel though ...
Post Install
Wifi Drivers
Boot into macos
curl -#O https://wiki.t2linux.org/tools/wifi.sh chmod +x wifi.sh ./wifi.shBoot into linux
sudo umount /dev/nvme0n1p1 sudo mkdir /tmp/apple-wifi-efi sudo mount /dev/nvme0n1p1 /tmp/apple-wifi-efi bash /tmp/apple-wifi-efi/wifi.sh sudo rebootNow verify output of wifi driver is error-free.
sudo journalctl -k --grep=brcmfmac # check for errors ip link # check for wlan0Now you can test a connection
systemctl start iwd iwctl > station wlan0 scan > station wlan0 get-networks > station wlan0 connect ${SSID}Finally, use NetworkManager (for wireguard, routing) with iwd as backend
cat << EOF > /etc/NetworkManager/NetworkManager.conf [device] wifi.backend=iwd EOF sudo systemctl enable --now iwd sudo systemctl restart NetworkManager route # confirm routing table present ping archlinux.org # testCPU fan
Install and configure mbpfan,
monitor effectiveness with lm_sensors.GPU
lscpi -nn | grep VGA # find gpu pacman -S xf86-video-ati # oss # or pacman -S xf86-video-amdgpu # proprietaryHeat/Power Optimization
Configuration
Install and Enable
# /boot/efi/loader/entries/archlinux.conf # disable intel_pstate so userspace power management available. options intel_pstate=disable # ...# /etc/default/cpupower # enable conservative governor, the most resistant to ramp up cpu cycles # some others: ondemand, userspace governor='conservative'# find warnings with tlp (ex: warning: systemd-rfkill.service is not masked, to correct this...) sudo tlp-stat -s # correct warnings sudo systemctl mask systemd-rfkill.service sudo systemctl mask systemd-rfkill.socketMonitoring
monitoring some usage stats
sudo i7z # cpu freq per core sudo tlp-stats -p # power optimizations sudo tlp-stats -t # temp/fan-speeds watch eval 'sensors | head -n 10' # cpu temps watch eval 'cpupower frequency-info | grep "current CPU"'Trackpad
pacman -S xf86-input-synaptics reboot # for driver to be used # test it out if you like synclient AccelFactor=0.05 # smaller movements travel furthermake permanent
# /etc/X11/xorg.conf.d/70-synaptics.conf Section "InputClass" Identifier "touchpad" Driver "synaptics" MatchIsTouchpad "on" # moving mouse-pointer Option "AccelFactor" "0.01" Option "MinSpeed" "1.2" Option "MaxSpeed" "2.5" # scroll momentum speed Option "VertScrollDelta" "250" EndSectionFunction Keys
TODO:
- default to function keys
- multimedia keys don't work
- following suspend/resume, touchbar doesn't work at all
mkinitcpio hooks
On updates, kernel/initramfs must be copied to
/boot/efi
for system to boot.TODO:
mkinitcpio hook?
Disable Boot Sound
# MacOs System Preferences: Sound: - [ ] Play Sound on StartupDefault Boot
Choosing default Disk
- boot macos - apple-menu > system preferences: - startup diskChoosing default EFI bootloader
# show installed bootloaders # # BootOrder: 0080,0000 # boot priority # Boot0080: Mac OS X # macos boot entry # Boot0000: Foo # foo boot entry efibootmgr efibootmgr -o 0000,0080 # change boot priorityAudio
TODO