wtorek, 17 września 2019

[Szkic] Zmiana rozdzielczości gdy podłączony jest monitor

Posiadam dwa monitory zewnętrzne podłączone do stacji dokującej i jeden w laptopie. Chciałem, by komputer automagicznie przełączał się pomiędzy trybami, jeśli podłączony jest któryś z zewnętrznych.

Skrypt ustawiony jest, by uruchamiał się przed sesją KDE. Uruchamia się tylko raz, więc jeśli zrestartuję komputer przed podłączeniem stacji, to nie zadziała.


#!/bin/bash

#https://ubuntuforums.org/showthread.php?t=1458631
#https://askubuntu.com/questions/625761/how-to-change-displays-position-from-command-line
#https://www.tecmint.com/run-repeat-linux-command-every-x-seconds/

#exit 0

#sleep 10

EXTERN="DP-1-3"
xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
xrandr --addmode DP-1-3 "1680x1050_60.00"


#while true; do

if $(xrandr --prop |grep -q "$EXTERN connected");then
 echo -e "$(echo $EXTERN | tr -d [0-9]) is \e[1;32mconnected\e[0m"  xrandr --output DP-1-3 --mode "1680x1050_60.00" --pos 0x420
 xrandr --output DP-1-1 --mode "1440x900" --rate 60 --pos 1680x0
 xrandr --output eDP-1 --off
else
 xrandr --auto
 echo -e "$(echo $EXTERN | tr -d [0-9]) is \e[1;31mdisconnected\e[0m"
fi

#sleep 5
#done

#exit 0

sobota, 7 września 2019

BasicLinux czyli system na procesor 486 i 4MB ramu

Chciałem przetestować kilka starych płyt głównych z procesorami 486 (może i 386). Long-story-short, potrzebowałem małego linuksa (żeby zmieścił się na dysku 16MB - IDE flash), który uruchomi się na 8MB (ten daje radę i na 4MB), pozwoli przetestować SoundBlastera i pozwoli przy okazji uruchomić memtest86.

Uwaga na wstępie: memtest86 w wersji dostępnej na stronie 4.3.cośtam NIE działa na 486 (potwierdzają to moje 'badania' oraz internet). Stąd na moim obrazie znajdują się wersja 4.0b3 oraz 3.5b [pobrane stąd].

Linki do źródeł, na podstawie których napisana została poniższa instrukcja.
Naprawa LILO (po zmianie rozmiaru dysku LILO padło)
Zmiana rozmiaru obrazu dysku
Konfiguracja LILO 1 2
Konwertowanie RAW do VDI (VirtualBox) 1 2
Montowanie partycji z obrazu RAW
BasicLinux (obraz Qemu, paczki i instrukcje)
BG-Rescue (system awaryjny na FDD)

Instrukcja stworzenia obrazu (kolejność :
Na początek zmiana rozmiaru dysku (co, jeśli nie ma takiej potrzeby można pominąć):

sudo losetup /dev/loop0 BL3-5qemu.img 
sudo partprobe /dev/loop0

W Gparted, należy zmienić rozmiar partycji na np. 14MB

sudo gparted /dev/loop0
sudo losetup -d /dev/loop0

Truncate przycina plik do zadanego rozmiaru (moje 16384000 to rozmiar dysku IDE)

truncate --size=16384000 BL3-5qemu.img
sudo losetup /dev/loop0 BL3-5qemu.img  
sudo partprobe /dev/loop0

W Gparted zwiększamy rozmiar partycji tak, by wypełniła dysk

sudo gparted /dev/loop0
sudo losetup -d /dev/loop0

Teraz należy przerobić obraz na czytelny dla VirtualBox'a (można też od razu wgrać pliki wymienione niżej, a VB'a zostawić sobie na koniec, ale ja chciałem mieć pewność, że naprawiłem LILO zanim się wezmę za 'resztę').

VBoxManage clonehd --format VDI BL3-5qemu.raw bl3-vbox-mod.vdi

Podpinamy obraz pod maszynę wirtualną (więcej pamięci niż 8MB! 128MB powinno być ok ;)) oraz dyskietkę bgrescue i uruchamiamy BG-Rescue, a w nim:

mount /dev/hda1 /mnt 
mount -o bind /dev /mnt/dev 
chroot /mnt 
lilo -b /dev/hda1 
exit 
reboot

Wyłączamy maszynę, odpinamy dyskietkę i sprawdzamy czy lilo już działa. Jeśli tak, przerabiamy dysk spowrotem na RAW, montujemy partycję z obrazu i wgrywamy pliki

VBoxManage clonehd --format RAW bl3-vbox-mod.vdi bl3-lilo.raw 
sudo losetup /dev/loop0 bl3-lilo.raw  
sudo losetup /dev/loop0 mkdir img 
sudo mount /dev/loop0p1 img/

sudo mc: moduły kernela (patrz instrukcja na BL), paczki, lilo.conf, boot_message.txt, rc oraz memtest86v4 i memtest86v3 wypakowane z obrazów ISO (ISOLINUX/MEMTEST). Przerabiamy obraz spowrotem na obrazy VDI. Update! Również memtest86v4b3 NIE działa na 486. 3.5 jest ok. Warto też w tym momencie wgrać kernel optymalizowany dla 486, ale nie jest to niezbędne.

VBoxManage clonehd --format VDI bl3-lilo.raw bl3-prefinal.vdi

...podpinamy pod VB, sprawdzamy czy wszystko jest jak należy i uruchamiamy "nowe" lilo i instalujemy paczki

chmod +x /etc/rc (jeśli rc jest niewykonalne)
lsmod (powinny być moduły sb)
lilo (naprawić jeśli coś mu się nie podoba)
cd /tmppkg mc.tgzpkg mpg123.tgz

Restartujemy system i sprawdzamy czy lilo włącza oba memtesty i bl'a. Przerabiamy obraz spowrotem na RAW i powinno być git

VBoxManage clonehd --format RAW bl3-prefinal.vdi bl3-final.raw

Obecnie moje lilo.conf i message wyglądają tak:

cat img/etc/lilo.conf && cat img/boot/boot_message.txt  ###  this line puts lilo in MBR of primary harddrive
###  otherwise lilo goes in root partition

boot=/dev/hda     prompt
message = /boot/boot_message.txt
linear

image=/boot/zimage
   label=bl
   root=CURRENT
   read-write

image=/boot/zimage.4dx
   label=bl4dx
   root=CURRENT
   read-write

image=/boot/memtest86v4.img
   label=mt
   read-only  
image=/boot/memtest86v3.img
   label=mt3
   read-only  



   This is ultralite linux testing disk adopted to work on old 486 PCs      with only 4MB of memory. Also it fits on 16MB HDD.
        

Hit [Enter] to run default or:

bl *    boots BasicLinux v3.50 converted Qemu disk image with SB audio support          and Midnight Commander [https://distro.ibiblio.org/baslinux/]
bl4dx   boots BasicLinux v3.50 with 486DX optimized kenrel                 mt      runs MemTest86 v4.0b3
mt3     runs MemTest86 v3.5b
       
Ważne jest to linear w lilo.conf. Większa szansa, że uda się lilo przenieść bez niespodzianek na dysk. 

wtorek, 3 września 2019

Komputer nie budzi się po uśpieniu [Dell e7440]

Mój laptop czasem nie chciał się obudzić. Rozwiązanie [źródło] [źródło]:
sudo sh -c "echo LID0 disabled > /proc/acpi/wakeup"
Oraz dodać do /etc/modprobe.d/blacklist.conf:
blacklist mei_me 

czwartek, 29 sierpnia 2019

Niewykryte rozdzielczości monitora

Aby dodać (wymusić) rozdzielczość w ustawieniach [źródło], należy dowiedzieć się które wyjście nas interesuje:
xrandr
U mnie to wygląda tak:
san@lati:~$ xrandrScreen 0: minimum 8 x 8, current 3120 x 1050, maximum 32767 x 32767eDP1 connected (normal left inverted right x axis y axis)   1920x1080     60.02 +  59.93     1680x1050     59.88     1600x1024     60.17     1400x1050     59.98     1600x900      60.00    59.95    59.82     1280x1024     60.02     1440x900      59.89     1400x900      59.96    59.88     1280x960      60.00     1368x768      60.00    59.88    59.85     1360x768      59.80    59.96     1280x800      59.81    59.91     1152x864      60.00     1280x720      59.86    60.00    59.74     1024x768      60.00     1024x576      60.00    59.90    59.82     960x540       60.00    59.63    59.82     800x600       60.32    56.25     864x486       60.00    59.92    59.57     640x480       59.94     720x405       59.51    60.00    58.99     640x360       59.84    59.32    60.00  DP1 disconnected (normal left inverted right x axis y axis)DP1-1 connected 1440x900+1680+0 (normal left inverted right x axis y axis) 410mm x 260mm   1440x900      59.89*+  74.98     1280x1024     75.02    60.02     1152x864      75.00     1024x768      75.03    70.07    66.01    60.00     832x624       74.55     800x600       72.19    75.00    60.32    56.25     640x480       75.00    72.81    66.67    67.06    59.94     720x400       70.08  DP1-2 disconnected (normal left inverted right x axis y axis)DP1-3 connected primary 1680x1050+0+0 (normal left inverted right x axis y axis) 0mm x 0mm   640x480       63.07 +  59.94     1024x768      60.00     800x600       60.32     1680x1050_60.00  59.95* HDMI1 disconnected (normal left inverted right x axis y axis)HDMI2 disconnected (normal left inverted right x axis y axis)VIRTUAL1 disconnected (normal left inverted right x axis y axis)
Więc wiem, że chodzi o wyjście DP1-3 (ostatnia rozdzielczość to ta dodana). Teraz trzeba wygenerować wpis:
cvt 1680 1050 
Oczywiście liczby to rozdzielczość jaka nas interesuje. I to co po modeline dodać jako tryb do xrandr:
sudo xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

I ustawić tryb jako dostępny dla naszego wyjścia:
sudo xrandr --addmode DP1-3 "1680x1050_60.00"

Sklejanie dokumentów PDF i ich zmniejszanie

Potrzebowałem stworzyć nowy dokument PDF składający się ze skonwertowanego dokumentu z LibreOffice oraz kilku artykułów w pdf, komenda jest rażąco prosta [źródło]:
pdftk title.pdf content.pdf cat output book.pdf
Okazało się, że plik wyszedł bardzo duży (choć zawierał niewiele zdjęć, to były one w jakiejś gigantycznej rozdzielczości) i nie chciał wejść jako załącznik. Rozwiązaniem było zmniejszenie w nim rozdzielczości grafik [źródło]:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true \
-dColorImageResolution=150 -dNOPAUSE  -dBATCH -sOutputFile=output.pdf input.pdf

wtorek, 21 maja 2019

[Szkic] Kubuntu na A1260 (MacBook Pro)

1. Instalacja

Kubuntu w wersji 18.10 nie chce się zainstalować tak po prostu (z USB).
Na początek, warto przypomnieć, że trzeba przytrzymać ALT (⌥) [źródło], podczas uruchamiania systemu, aby móc wybrać pendrive. Po uruchomieniu Kubuntu, niestety system się wiesza gdzieś tam podczas ładowania. Aby temu zapobiec, należy ustawić dodatkowy parametr kernela nomodeset [źródło]. Aby to zrobić, podczas menu wyboru systemu (czarne ekran, białe napisy w ramce), należy wybrać pierwszą opcję i wcisnąć 'e'. Tam, w zastąpić quiet splash na nomodeset i wcisnąć F10 [źródło].

2. Sterowniki.
Laptop ten posiada kartę WiFi Broadcom'a oraz grafikę nVidia. Pierwsza, żeby w ogóle działała, musi mieć doinstalowane (zamknięte) sterowniki. Aby je zainstalować, trzba mieć, niestety, połączenie z siecią (albo ściągnąć i przenieść odpowiednie paczki i zainstalować ręcznie). Można się oczywiście połączyć kablem sieciowym, ale wygodniejszym rozwiązaniem jest podłączenie się telefonem z androidem do laptopa i udostępnienie internetu po USB.

3. Po instalacji
W laptopie tym znanym problemem jest k. graficzna (błąd produkcyjny nVidia), polega on na rozklejaniu się układu graficznego. Aby ten problem opóźnić, warto zainstalować program mbpfan, i odpowiednio skonfigurować aby chłodził „na zapas”.

środa, 8 maja 2019