Kezem ügyébe keveredett egy hibrid GPU-val ellátott laptop. 9gen i5 ketyeg benne, és egy nvidia Titan 1050-es GPU az egyik jelölt, a másik pedig egy Intel(R) UHD Graphics 630 amit linux alatt ugye meg szeretnénk oldani, hogy működjön. Már most leszögezem, hogy nem adott még az ég olyan mostanában új és friss puppy linuxot ami akárhány biten támogatná ezt a funkciót. Így adott volt a nemes feladat, ami félsikerrel zárult. A megoldás pofon egyszerű, de csak félmegoldás! Mivel a mostanában 64 bites pupletekre lehetetlen a legújab TITAN 64 bites Run fájljának sikeres telepítése. Aki nem hiszi járjon utána, nekem nem sikerült sehogy sem.
Megoldás, lévén hogy GPT partíciótáblás NVME meghajtó van a laptopban, így szükségünk lesz itt a fórumon már említett helyről beszerezni az UEFI loadert. Amit egy fat32-es pendrive-ra másolunk grub.cfg -vel együtt!
Kivesszük belőle az insmod png sort, és elkezdjük felvinni a már jól ismert 4 indító menübejegyzést, mely nálam most a példa kedvéért így fest:
grub.cfg:
Kód: Egész kijelölése
GRUB_GFXMODE=800x600
set color_normal=red/black
set color_highlight=yellow/black
menuentry "1noshun11_x32kernel_Cruzer16" {
set root=(hd2,gpt4)
linux /data/noshun11/vmlinuz psubdir=data/noshun11 nouveau.modeset=0
initrd /data/noshun11/initrd.gz
}
menuentry "1noshun11_x32kernel_Cruzer16_NOx" {
set root=(hd2,gpt4)
linux /data/noshun11/vmlinuz psubdir=data/noshun11 pfix=nox nouveau.modeset=0
initrd /data/noshun11/initrd.gz
}
menuentry "1noshun11_x32kernel_Cruzer16_RAM" {
set root=(hd2,gpt4)
linux /data/noshun11/vmlinuz psubdir=data/noshun11 pfix=ram nouveau.modeset=0
initrd /data/noshun11/initrd.gz
}
menuentry "nouveaumodeset01noshun11_x32kernel_Cruzer16_RAM_NOx" {
set root=(hd2,gpt4)
linux /data/noshun11/vmlinuz psubdir=data/noshun11 pfix=ram,nox nouveau.modeset=0
initrd /data/noshun11/initrd.gz
}
menuentry "OFF" {
halt
}
menuentry "REBOOT" {
reboot
}
Senkit meg ne tévesszen a menuentry elnevezése ami grub2-es formátumú és az előbb említett uefi loaderhez kell, a célalany egy 64 bites puppylinux.com-ról "offisöl" (official) leszedett bionic 64 !!! Amihez táraztam a szükséges devx-et, kiütöttem alóla az eredeti kernelt, és megkapta a rockedge féle ticoo1 által is SF-re feltöltött 4.19.25-rt16 x86_64 kernelt. Annak általam módosított kernel forrását amivel lefordítottam a manőverhez szükséges bbswitch.ko kernel modult! A bbswitch kell csak és kizárólag jelen megoldáshoz, ugyanis ahogy fentebb említettem nekem nem sikerült nvidia drivert telepíteni sehogy sem de nem csak ehhez, semmilyen 64 bites puppyra, sőt, mivel ebben a laptopban dual-bandos wifi kártya is került gyárilag, nehogy már egyszerű legyen az élet, KuLuSz kolléga kitartó segítségével készítettem egy fdrv sfs-t a PoPOS legújabb githubos elérhetősége alapján. Azt betöltve tudok wifit csiholni ami szintúgy nem egyszerű kör, de legalább működik ezzel a kernellel! A legújabb 5.4-es kernel rózsaszín lufi! Ki is pukkadt. Viccet félre téve, bár nagyon nehéz félre tenni, az általam módosított kernel forrás után és a 32 bites compat sfs betöltése után, ldconfig, majd jöhetett a bbswitch fordítása annak rendje és módja szerint, elvileg más dolgunk nem lesz mint a make parancsot imádkozni, sikerrel záruljon, s ha ez meg van, a kapott bbswitch.ko fájlt elmásolni a /root/ könyvtárba! (A 32 bites kompatibilitási sfs a 32 bites programok használatához kell. A fordításba nem szól bele.)
Én készítettem egy sfs-t amit majd feltöltök az SF-re. Csak előtte megírom ezt. Az sfs neve:
disable_discreteGPU-1.0-x86_64_8.0.sfs
lesz.
Ha ezt az sfs-t betöltjük azon nyomban, illetve mentésfájlnál minden indulásnál alkalmazni fogja az eljárást amivel a rendkívül szerény és diszkrét nvidia GPU-nkat kikapcsolja! S így a nouveau.modeset=0 kernelkapcsolónak indításkor köszönhető betöltés sikerességével már a puppy Xorgja és annak konfja már az UHD intel grafikus chipet fogja látni és kezelni is. (modesetting)
És akkor tovább az sfs-ről:
Tartalmaz egy /etc/modprobe.d/bbswitch.conf és egy /etc/modules-load.d/bbswitch.conf fájlt ami mint kiderült semmit nem ér, de legalább ott van.
Tartalmuk:
Kód: Egész kijelölése
options bbswitch load_state=0 unload_state=1
Namármost, hogy ez nekünk minden betöltésnél alkalmazásra kerüljön, kell egy /root/Startup/bumble szkript, de igazából akármilyen szkriptnevű szkript is megteszi, aminek a tartalma ez kell legyen:
Kód: Egész kijelölése
#!/bin/bash
insmod /root/bbswitch.ko load_state=0 unload_state=1 &
Ennyi.
Fontos tudni, hogy aki az sfs-t használja csak ezzel a 4.19.25-rt16 x86_64 kernellel fogja tudni! Lehet működik a dolog PAE illetve NoPAE kernelek esetében is, az intel wifi kártya miatt viszont 4.14++ kernelre lesz szükség és arra fordítani a kernel modult. Legalábbis az én esetemben, ha az fdrv-t és azzal a wifit óhajtom használni.
Mindenki figyelmét felhívnám ismét, hogy TESZTELJEN, mielőtt élesben próbál! Valamint felhívom a figyelmet, hogy a screensaver a pupX beállításokban úgyszintén kinyírja az X-et! Úgyhogy a /root/Startup mappában helyezzük el az ss-off szkriptet melnyek tartalma lejebb tárgyalt!
ss-off:
Kód: Egész kijelölése
#!/bin/sh
xset s off dpms 0 0 0 -dpms
Eredetileg fordítottam bumblebee -t is, de nem működött, sőt, több sebből elvérzett, így erről külön nem írtam.