Fog: Difference between revisions

From wikinotes
(Replaced content with "Named after Dean Fog. = Notes = <blockquote> {| class="wikitable" |- | t2linux archlinux install |- | t2linux archlinux mbp-16.1 |} </blockquote><!-- Notes -->")
Tag: Replaced
 
(44 intermediate revisions by the same user not shown)
Line 1: Line 1:
Archlinux on a macbook. Named after Dean Fog.
Named after Dean Fog.
 
{{ TODO |
these install instructions don't belong here.<br>
I need a section for archlinux variant installs like archlinux-arm, and this alt-kernel }}


= Notes =
<blockquote>
{| class="wikitable"
{| class="wikitable"
|-
|-
| t2linux install docs || https://wiki.t2linux.org/distributions/arch/installation/
| [[t2linux archlinux install]]
|-
| 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 =
<blockquote>
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
|-
|-
| [[t2linux archlinux mbp-16.1]]
|}
|}
 
</blockquote><!-- Notes -->
<syntaxhighlight lang="yaml">
diskutil list
diskutil unmountDisk /dev/disk2
dd if=path/to/archlinux-version-x86_64.iso of=/dev/rdisk2 bs=1m
</syntaxhighlight>
</blockquote><!-- install media -->
 
= Partition Setup =
<blockquote>
You can't change the partition scheme from outside of macos unfortunately.
 
<syntaxhighlight lang="yaml">
- 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
</syntaxhighlight>
</blockquote><!-- Partition Setup -->
 
= Base Install =
<blockquote>
{{ NOTE |
Use the wifi-enabled ISO, spoke with devs and wired kernel is outdated
}}
 
== (archiso) wlan setup ==
<blockquote>
<syntaxhighlight lang="bash">
iwctl
device list
station wlan0 scan
station wlan0 get-networks
station wlan0 connect ${SSID}
 
ping archlinux.org
</syntaxhighlight>
</blockquote><!-- (archiso) wlan setup -->
 
== (archiso) format && baseinstall ==
<blockquote>
<syntaxhighlight lang="bash">
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
</syntaxhighlight>
</blockquote><!-- (archiso) format && baseinstall -->
 
== (chroot) Add t2linux repo ==
<blockquote>
<syntaxhighlight lang="bash">
cat << EOF >> /etc/pacman.conf
[mbp]
Server = https://dl.t2linux.org/archlinux/$repo/$arch
EOF
 
pacman -Syy
</syntaxhighlight>
</blockquote><!-- (chroot) Add t2linux repo -->
 
== (chroot) Base Settings ==
<blockquote>
<syntaxhighlight lang="bash">
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
</syntaxhighlight>
</blockquote><!-- (chroot) Base Settings -->
 
== (chroot) Bootloader ==
<blockquote>
<syntaxhighlight lang="bash">
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'
</syntaxhighlight>
</blockquote><!-- (chroot) Bootloader -->
 
== Reboot ==
<blockquote>
<syntaxhighlight lang="yaml">
- exit && reboot
- hold 'option' while booting to choose boot
- after selection, wait for timeout (choosing with enter seems to fail)
</syntaxhighlight>
</blockquote><!-- Reboot -->
 
== Debugging Boot Issues ==
<blockquote>
<syntaxhighlight lang="bash">
# from archiso, specify the journal of your chroot
journalctl --directory=/var/log/journal
</syntaxhighlight>
 
=== unable to mount /boot/efi unknown filesystem vfat ===
do you have an old kernel in <code>/boot/efi</code>?<br>
try copying initramfs/kernel from /boot to /boot/efi.
 
this may only work with old kernel though ...
</blockquote><!-- Debugging Boot Issues -->
</blockquote><!-- Base Install -->
 
= Post Install =
<blockquote>
== Wifi Drivers ==
<blockquote>
Boot into macos
<syntaxhighlight lang="bash">
curl -#O https://wiki.t2linux.org/tools/wifi.sh
chmod +x wifi.sh
./wifi.sh
</syntaxhighlight>
 
Boot into linux
<syntaxhighlight lang="bash">
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 reboot
</syntaxhighlight>
 
Now verify output of wifi driver is error-free.
<syntaxhighlight lang="bash">
sudo journalctl -k --grep=brcmfmac  # check for errors
ip link                            # check for wlan0
</syntaxhighlight>
 
Now you can test a connection
<syntaxhighlight lang="bash">
systemctl start iwd
iwctl
> station wlan0 scan
> station wlan0 get-networks
> station wlan0 connect ${SSID}
</syntaxhighlight>
 
Finally, use NetworkManager (for wireguard, routing) with iwd as backend
<syntaxhighlight lang="bash">
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  # test
</syntaxhighlight>
</blockquote><!-- Wifi -->
 
== CPU fan ==
<blockquote>
Install and configure [[mbpfan]],<br>
monitor effectiveness with [[lm_sensors]].
</blockquote><!-- CPU fan -->
 
== GPU ==
<blockquote>
<syntaxhighlight lang="bash">
lscpi -nn | grep VGA  # find gpu
 
pacman -S xf86-video-ati    # oss
# or
pacman -S xf86-video-amdgpu # proprietary
</syntaxhighlight>
</blockquote><!-- GPU -->
 
== Heat/Power Optimization ==
<blockquote>
Without optimizations, this laptop idles at 60-80*C in linux (where I would normally expect ~30*C)<br>
These are some power optimizations that may help.
 
* [[auto-cpufreq]]
* [[tlp]]
* [[powertop]]
* [[thermald]]
* [[i7z]]
 
{{ NOTE |
within this hardware, I found disabling <code>intel_pstate</code> to give full control to <code>cpupower.service</code> much more effective at reducing heat.
 
current configuration
* tlp.service + tlp-rdw (defaults)
* thermald.service (defaults)
* cpupower.service (defaults)
* mpbfan.service (lower threshold for fan)
}}
 
{{ TODO |
apparently some people have had better results with <code>auto-cpufreq</code>. I'll have to try it.
}}
 
monitoring some usage stats
<syntaxhighlight lang="bash">
sudo i7z
watch eval 'sensors | head -n 10'
watch eval 'cpupower frequency-info | grep "current CPU"'
</syntaxhighlight>
 
{{ TODO |
determine good settings }}
<syntaxhighlight lang="bash">
# 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.socket
</syntaxhighlight>
</blockquote><!-- Heat/Power Optimization -->
 
== Trackpad ==
<blockquote>
<syntaxhighlight lang="bash">
pacman -S xf86-input-synaptics
reboot # for driver to be used
 
# test it out if you like
synclient AccelFactor=0.05  # smaller movements travel further
</syntaxhighlight>
 
make permanent
<syntaxhighlight lang="conf">
# /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"
EndSection
</syntaxhighlight>
</blockquote><!-- Trackpad -->
 
== Function Keys ==
<blockquote>
{{ TODO |
* default to function keys
* multimedia keys don't work
* following suspend/resume, touchbar doesn't work at all
}}
</blockquote><!-- Function Keys -->
 
== mkinitcpio hooks ==
<blockquote>
On updates, kernel/initramfs must be copied to <code>/boot/efi</code> for system to boot.
 
{{ TODO |
mkinitcpio hook?
}}
</blockquote><!-- mkinitcpio hooks -->
 
== Disable Boot Sound ==
<blockquote>
<syntaxhighlight lang="yaml">
# MacOs
System Preferences:
  Sound:
    - [ ] Play Sound on Startup
</syntaxhighlight>
</blockquote><!-- Disable Boot Sound -->
 
== Default Boot ==
<blockquote>
Choosing default Disk
<syntaxhighlight lang="yaml">
- boot macos
- apple-menu > system preferences:
  - startup disk
</syntaxhighlight>
 
Choosing default EFI bootloader
<syntaxhighlight lang="bash">
# 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 priority
</syntaxhighlight>
</blockquote><!-- Default Boot -->
 
== Audio ==
<blockquote>
TODO
</blockquote><!-- Audio -->
</blockquote><!-- Post Install -->

Latest revision as of 01:51, 13 March 2022