Debian na Macbooku Pro Late 2013 cz.4
Posted on Tue 08 December 2020 in Shitz • 8 min read
Niniejszy artykuł powstał ponad rok temu i przeleżał wszystkie te mesiące w postaci szkicu, uzupełnianego o nowe pozycje. Nowości pojawiały się w nim w miarę jak dostrajałem Macbooka do swoich skromnych potrzeb, a były to:
- pozbycie się macOS, systemu który przestał być wygodny,
- działające X-y z możliwością przełączenia na konsolę (to się nie udało i raczej już nie uda),
- Xmonad jako Window Manager, xmobar jako centrum informacyjne,
- działające specjalne funkcje (regulacja podświelenia klawiatury, monitora, regulacja dźwięku, itd.),
- trackpad działający równie gładko jak w macOS (udało się połowicznie),
- działające WiFi,
- działająca hibenacja
- drobne usprawnienia software'owe.
Instalację wykonałem podobnie jak w opisie z (https://blog.jessfraz.com/post/linux-on-mac/), tzn. że również mam refinda jako bootmanagera, trochę tylko podkoloryzowanego, żeby robić wrażenie.
Pierwotnie zainstalowałem kernel 3.18.36. Włączyłem obsługę Thunderbolta. Kartę Ethernet mam na USB i działa z difoltu więc bez kłopotów mogłem od razu uaktualniać i instalować software.
Terminal
Zmieniłem fonty w konsoli na czytelne. Można jednorazowo:
setfont /usr/share/consolefonts/Lat7-Terminus28x14.psf
lub na stałe:
dpkg-reconfigure -plow console-setup
Sprawdź jak ustawiać kolory w konsoli: http://user.it.uu.se/~embe8573/cols/www/index.html:
Linux VTs big Linux VT tutorial: COLORS with zsh tools ~/cols/ run - script to invoke (see the # comments) ~/cols/ set_cols.sed - sed program to set the colors color sets ls(1) colors (VTs and X) with dircolors(1) xterm ~/.Xresources - invoke in ~/.xinitrc with xrdb Emacs emacs-test-faces.el - looks like this captain-mr-king.el - looks like this
Xorg
Nvidia
do /etc/apt/sources.list dodałem:
deb http://httpredir.debian.org/debian jessie-backports main contrib non-free
apt-get update
apt-get install -t jessie-backports nvidia-driver
setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0
Aktualizacja: niestety, to nie działa.
WiFi
apt-get install -t jessie-backports broadcom-sta-dkms
Ale nie kompiluje się sterownik do karty WiFi.
:(pactl set-sink-mute 1 toggle
Powrót do kernela 3.17.4.
I od razu skasowanie nieudanego 3.18.36:
ap-get purge --auto-remove linux-image-3.18.*
Jeśli robiło się już:
apt-get install firmware-linux-nonfree broadcom-sta-dkms
to ponowna kompilacja modułów do kernela 3.17.4:
dkms build broadcom-sta -v 6.30.223.248 -k 3.17.4
Teraz przełączenie klawiszy funkcyjnych w działanie takie jak w PC czyli tylko z wciśniętym Fn funkcyjny daje dodatkową funkcję.
Doinstalowuję pakiet do systemu sysfs: apt-get install sysfsutils a do /etc/sysfs.conf dopisuję linię: module/hid_apple/parameters/fnmode = 2 (można to zrobić na kilka sposobów, tu jest dokładny opis: https://help.ubuntu.com/community/AppleKeyboard) Reboot i... wszystko na razie działa!
Sysfs przyda się jeszcze do podpięcia klawiszy obsługujących funkcje spacjalne, takich jak: jasność ekranu, podświetlanie klawiatury, głośność, hibernacja/wyłączenie.
KLAWIATURA Najpierw kody klawiszy wyłapane za pomocą: xev | sed -n 's/^.*keycode *\([0-9]\+\).*$/keycode \1 = /p' Fn+F1 = 232 Fn+F2 = 233 Fn+F3 = 128 Fn+F4 = 212 Fn+F5 = daje nic Fn+F6 = daje nic Fn+Shift+F5 = 237 Fn+Shift+F6 = 238 Fn+F7 = 173 Fn+F8 = 172 Fn+F9 = 171 Fn+F10 = 121 Fn+F11 = 122 Fn+F12 = 123 Nie używam Capslocka więc go wyłączam w ~/.Xmodmap: keycode 66 = Podświetlanie Wpisy w ~/.Xmodmap: keycode 232 = XF86MonBrightnessDown keycode 233 = XF86MonBrightnessUp keycode 237 = XF86KbdBrightnessDown keycode 238 = XF86KbdBrightnessUp Wpisy w ~/.i3/config bindsym XF86MonBrightnessUp exec sudo screen-backlight up bindsym XF86MonBrightnessDown exec sudo screen-backlight down bindsym XF86KbdBrightnessDown exec sudo keyboard-backlight down bindsym XF86KbdBrightnessUp exec sudo keyboard-backlight up Do /usr/local/bin skopiowałem dwa skrypty, których zadaniem jest wpisywanie odpowiednich wartości w sysfs. Jeden kontroluje jasność monitora, drugi jasność podświetlenia klawiatury. Ich nazwy to odpowiednio: screen-backlight i keyboard-backlight. Za pomocą visudo dodaję odpowiednie wpisy by uruchamiać je na prawach roota bez podawania hasła: paczor ALL= NOPASSWD: /usr/local/bin/keyboard-backlight paczor ALL= NOPASSWD: /usr/local/bin/screen-backlight Klawiatura + dźwięk
W ~/.Xmodmap
keycode 121 = XF86AudioMute keycode 122 = XF86AudioLowerVolume keycode 123 = XF86AudioRaiseVolume
W ~/.i3/config:
# dla PulseAudio: bindsym XF86AudioMute exec pactl set-sink-mute 1 toggle # dla Alsa bindsym XF86AudioMute exec amixer -c 0 -- set Master toggle bindsym XF86AudioLowerVolume exec amixer -c 0 -- set Master 2- bindsym XF86AudioRaiseVolume exec amixer -c 0 -- set Master 2+ Mam problem z mute, zrobiłem to raz i karta już milczy. Musiałem zrobić reset SMC (wyłączony komputer i trzymając Shift+Alt+Command naciskam Power) i PRAM (wyłączony komputer, włączam i jak usłyszę dźwięk staru trzymam Alt+Command+P+R aż usłyszę drugi dźwięk startu i wtedy puszczam). Nie wiem czy to potrzebne ale wolałem zaczynać z czystym kontem. Musiałem też ponownie użyć Refinda. Zainstalowałem pulseaudio: apt-get install pulseaudio i zainstalowałem: apt-get install alsa-firmware-loaders Reboot i pomogło!
TOUCHPAD
Section "InputClass" Identifier "touchpad catchall" Driver "synaptics" MatchIsTouchpad "on" # Option "VertScrollDelta" "-111" # Option "HorizScrollDelta" "-111" # Option "MinSpeed" "0.5" # Option "MaxSpeed" "1.0" # Option "AccelFactor" "0.075" # Option "LBCornerButton" "8" # browser "back" btn # Option "RBCornerButton" "9" # browser "forward" btn EndSection
a w 60-synaptics.conf:
Section "InputClass" Identifier "touchpad" Driver "synaptics" MatchIsTouchpad "on" MatchDevicePath "/dev/input/event*" Option "FingerHigh" "50" Option "TapButton1" "1" Option "TapButton2" "2" Option "TapButton3" "3" Option "RTCornerButton" "0" Option "RBCornerButton" "0" Option "LTCornerButton" "0" Option "LBCornerButton" "0" Option "MinSpeed" "0.7" Option "MaxSpeed" "1.7" Option "SHMConfig" "on" Option "TapAndDragGesture" "off" Option "PalmDetect" "on" Option "PalmMinWidth" "8" Option "PalmMinz" "200" EndSection
apt-get install evtest evetet /dev/input/event8
(/dev/input8 to u mnie Touchpad)
MUTT (wolę Alpine)
Do mutta dołożyłem książkę adresową zasysaną z Ownclouda wg. tego przepisu: https://got-tty.org/mutt-kontakte-aus-owncloud-nutzen (po niemiecku ale wszystko zrozumiałe).
Oglądanie urli za pomocą linksa albo lynxa:
apt-get install urlview
Do ~/.muttrc:
macro pager \cu |urlview\n
Skopiowałem /etc/urlview/system.urlview i /etc/urlview/url_handler.sh lokalnie bo chciałem zmienić kolejność szukanych browserów, a nie chcę ustawiać zmiennej BROWSER.
FIREFOX + VIMPERATOR (Tridactyl lepszy)
Vimperator ma buga: w trybie pełnoekranowym F11 znika statusbar i przestają działać hinty. Rozwiązaniem jest zablokowanie automatycznego
chowania się statusbaru. W vimperatorze wydajemy komendę:
:set statuslinevisibility=visible
i zachowujemy do pliku konfiguracyjnego:
:mkvimperatorrc
XSCREENSAVER
mkdir ~/.config/systemd/user
a w nim plik: xscreensaver.service z następującą zawartością:
[Unit] Description=XScreenSaver Daemon [Service] ExecStart=/usr/bin/xscreensaver --no-splash [Install] WantedBy=default.target
Następnie włączam serwis:
systemctl --user enable xscreensaver.service
i uruchamiam:
systemctl --user start xscreensaver.service
Przejście na Display Managera: sddm
dpkg-reconfigure sddm
[Theme] Current=debian-paczor FacesDir=/home/paczor/Pictures/faces
Pomocne linki:
Hibernacja:
Najlepiej zacząć od zminy domyślnej konfiguracji. Uwaga, gdy używałem zamkniętych sterowników Nvidii hibernacja zakończyła się ostatecznie całkowitą rozwałką sytemu. Po przejściu na Intela na razie nie miałem tak tragicznych konsekwencji ale system po zamknięciu klapy laptopa nie przechodził z trybu Suspend w Hibernate. Podejrzewa, że miałem źle skonfigurwane dwa główne pliki. Ale do rzeczy...
Konfigurujemy dwa pliki:
sudo vim /etc/systemd/sleep.conf sudo vim /etc/systemd/logind.conf
W sleep.conf zezwalamy zarówno na Suspend, jak i na Hibernate oraz ustalamy po jakim czasie system będący w Suspend przejdzie w Hibernate jeśli nie nastąpi jakieś przerywające uśpienie zdarzenie (u mnie jest to 10 minut):
[Sleep] AllowSuspend=yes AllowHibernation=yes AllowSuspendThenHibernate=yes #AllowHybridSleep=yes #SuspendMode= #SuspendState=mem standby freeze #HibernateMode=platform shutdown #HibernateState=disk #HybridSleepMode=suspend platform shutdown #HybridSleepState=disk HibernateDelaySec=10m
Natomiast w pliku logind.conf ustawiamy wybrane tryby i zdarzenia, które wyzwalają te tryby. Zdarzeniami są najczęściej: wciśniecie klawisza/przycisku albo zamknięcie pokrywy laptopa.
[Login] #NAutoVTs=6 #ReserveVT=6 #KillUserProcesses=no #KillOnlyUsers= #KillExcludeUsers=root #InhibitDelayMaxSec=5 HandlePowerKey=suspend-then-hibernate HandleSuspendKey=suspend-then-hibernate HandleHibernateKey=suspend-then-hibernate HandleLidSwitch=suspend-then-hibernate HandleLidSwitchDocked=ignore #PowerKeyIgnoreInhibited=no #SuspendKeyIgnoreInhibited=no #HibernateKeyIgnoreInhibited=no #LidSwitchIgnoreInhibited=yes #HoldoffTimeoutSec=30s IdleAction=suspend-then-hibernate IdleActionSec=10min #RuntimeDirectorySize=10% #RemoveIPC=yes #InhibitorsMax=8192 #SessionsMax=8192 #UserTasksMax=33%
Przydatne informacje są w manualach:
man systemd-sleep.conf man logind.conf
Polecenie uaktualniające po zmianie konfiguracji, może nastąpić uśpienie albo hibernacja - zależnie od wprowadzonych zmian:
sudo systemctl restart systemd-logind.service
Wyświetlenie statusu obsługi:
sudo systemctl status systemd-logind.service
U mnie zwraca to:
â systemd-logind.service - Login Service Loaded: loaded (/lib/systemd/system/systemd-logind.service; static; vendor preset: enabled) Active: active (running) since Fri 2020-06-12 00:27:31 CEST; 11h ago Docs: man:systemd-logind.service(8) man:logind.conf(5) https://www.freedesktop.org/wiki/Software/systemd/logind https://www.freedesktop.org/wiki/Software/systemd/multiseat Main PID: 963 (systemd-logind) Status: "Processing requests..." Tasks: 1 (limit: 4915) Memory: 3.2M CGroup: /system.slice/systemd-logind.service ââ963 /lib/systemd/systemd-logind Jun 12 00:27:31 eclipse systemd-logind[963]: Watching system buttons on /dev/input/event0 (Lid Switch) Jun 12 00:27:31 eclipse systemd-logind[963]: Watching system buttons on /dev/input/event2 (Sleep Button) Jun 12 00:27:31 eclipse systemd-logind[963]: Watching system buttons on /dev/input/event7 (Apple Inc. Apple Internal Keyboard / Trackpad) Jun 12 00:27:31 eclipse systemd[1]: Started Login Service.
Jak widać obserwowane są:
- Lid Switch - czyli klapa lapa
- Sleep Button - czyli główny wyłącznik
- Apple Internal Keyboard/Trackpad - klawiatura i trackpad, po to żeby wybudzić z uśpienia czyli przerwać odliczanie do hibernacji (to ustawione wcześniej 10 minut)
Polecenie wyłączające suspend i hibernację:
sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
To raczej ostateczność: https://itsfoss.com/ubuntu-close-lid-suspend/
problemy z X?
problemy z dźwiękiem przez DisplayPort?
https://unix.stackexchange.com/questions/88118/alsa-how-to-temporarily-change-the-output-device
Problem z xscreensaver
https://bbs.archlinux.org/viewtopic.php?pid=1218771#p1218771
Systemd
Różne porady
rofi i skrypty
Opis khal, vdirsyncera oraz keyring.
MariaDB
po "sudo reboot" bardzo długo się zamyka, wyświetlając komunikat: “A stop job is running to ...â€?. Pomaga to:
sudo dpkg-reconfigure tzdata
Nextcloud client:
cat /etc/apt/sources.list.d/nextcloud-devs-ubuntu-client-groovy.list deb http://ppa.launchpad.net/nextcloud-devs/client/ubuntu groovy main #deb-src http://ppa.launchpad.net/nextcloud-devs/client/ubuntu groovy main sudo gpg --keyserver keyserver.ubuntu.com --recv 60EE47FBAD3DD469 sudo gpg --export --armor 60EE47FBAD3DD469 | sudo apt-key add -
VirtualBox:
cat /etc/apt/sources.list.d/virtualbox.list deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian buster contrib wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add - wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add - sudo apt-get update sudo apt-get install virtualbox-6.1 wget https://download.virtualbox.org/virtualbox/6.1.6/Oracle_VM_VirtualBox_Extension_Pack-6.1.6.vbox-extpack sudo virtualbox Downloads/Oracle_VM_VirtualBox_Extension_Pack-6.1.6.vbox-extpack sudo usermod -a -G vboxusers $USER
Partycje APFS:
https://linuxnewbieguide.org/how-to-mount-macos-apfs-disk-volumes-in-linux
APFS z dysku: https://github.com/sgan81/apfs-fuse
sudo apt install fuse libfuse3-dev bzip2 libbz2-dev cmake git libattr1-dev zlib1g-dev git clone https://github.com/sgan81/apfs-fuse.git cd apfs-fuse git submodule init git submodule update mkdir build cd build cmake .. # jeśli chcesz zmienić ustawienia to: # sudo apt install cmake-curses-gui # ccmake . make sudo make install sudo cp apfsutil /usr/local/bin # wylistowanie dostępnych partycji i nazw woluminów sudo apfsutil /dev/sdc2 Volume 4 FD331FC1-1327-45D7-8538-F6B19B5139E6 --------------------------------------------- Role: No specific role Name: MEDIA-torba (Case-insensitive) Capacity Consumed: 18652901376 Bytes FileVault: No Volume 5 AA7F7F57-D871-4870-A6C9-CAC003F57157 --------------------------------------------- Role: No specific role Name: VIRT-torba (Case-insensitive) Capacity Consumed: 174489903104 Bytes FileVault: No i montując należy podać nazwę voluminu, np. żeby zamontować volume 5: sudo apfs-fuse -o uid=1000,gid=1000,allow_other -v 5 /dev/sdc2 /mnt/torba # opcje po -o, pozwalają na dostęp userom
Przełączenie na zintegrowaną kartę Intel:
Dlaczego w ogóle warto zawracać sobie tym głowę? Po pierwsze, gdy używam opesource'owego sterownika do kart Nvidii - Nouveau - nie działa hibernacja. A właściwie działa ale po wyjściu z zamrożenia użycie procesora skacze go ponad 90%, kernel zaś pluje taką ilością ostrzeżeń, że po kilku minutach syslog może spuchnąć do wielu gigabajtów.
Po drugie, po przejściu na komercyjne sterowniki Nvidii traci się możliwość przejścia z X-ów do konsoli.
Po trzecie, Nvidia na komercyjnych sterownikach żre mnóstwo prądu, skracając czas działania na baterii
w pliku /boot/efi/EFI/refind/refind.conf dodaj linię:
spoof_osx_version 10.9
która sprawia, że Macbook "myśli", że bootuje w macOS-ie.
Pobierz gpu-switch ze strony: https://github.com/0xbb/gpu-switch. Użyj go z przełącznikiem "-i":
gpu-switch -i
Spowoduje to przełączenie na kartę Intela. Teraz reboot.
Zainstaluj pakiet: xserver-xorg-video-intel i gotowe.
A teraz jazda bez trzymanki czyi próba wyłączenia Nvidii, mnie się nie udaje, mam błędy kernela i kończy się kompletnym zwisem. Lecz jeśli jej nie wyłączę to wszystko ładnie hasa.
TLPd (energia)
Bzdurki
Fortunki: https://github.com/maxieds/math-fortune-mod
Cool Rerto Term: https://github.com/Swordfish90/cool-retro-term
an2linux