Gentoo: l'amore perduto (e ritrovato?)

Parla qui di altre distribuzioni GNU/Linux
Avatar utente
Niko
Amministratore
Messaggi: 105
Iscritto il: domenica 10 maggio 2015, 20:03

Gentoo: l'amore perduto (e ritrovato?)

Messaggioda Niko » martedì 27 ottobre 2015, 9:49

Con il passare del tempo avverto sempre di più la sensazione di perdere progressivamente il controllo delle mie linux box e di non sapere più cosa gira sotto "il cofano".
Dopo parecchi anni trascorsi con le debian derived è ora di sporcarsi nuovamente le mani e tornare (almeno per un pò) a gentoo.

Per chi non conosce questa fantastica metadistro ne riassumo brevemente i vantaggi:

  • Source based: il package manager ("emerge") scarica i sorgenti e li compila on the fly, è un operazione a volte molto lenta, ma consente un controllo totale di ciò che si installa sulla propria macchina, per i paranoici della sicurezza e per i fanatici del FLOSS è una bella sensazione (volendo si possono anche scaricare dei pacchetti binari, ma è una pratica usata praticamente solo nelle distro gentoo derived), per chi vuole approfondire la differenza tra codice sorgente e binari potete leggere questo post: http://forum.lilis.it/viewtopic.php?f=13&t=35
  • Veloce: è possibile configuare il package manager in modo da attivare caratteristiche avanzate del compilatore che sfruttano al massimo la potenza della nostra CPU (le distro binarie, invece, dovendo supportare hardware generico, in fase di compilazione attivano solo un insieme minimale di ottimizzazioni)
  • Snella: tramite il sistema delle "use flags" è possibile abilitare/disabilitare durante la compilazione il supporto a determinate funzioni e/o librerie, prendiamo ad esempio (semplificando neh...) un programma di editing audio, all'interno del codice ci sarà di sicuro il supporto "base" alle schede audio in Linux (ALSA), ma probabilmente avrà anche il supporto per uno o più audio server (PULSEAUDIO, JACK). In una distro binaria è probabile (again... semplificando) che il nostro programma audio sia stato compilato con tutti i supporti abiltati. In gentoo lo scegliamo noi: viene installato meno software ed i file eseguibili hanno dimensioni ridotte, con conseguente utilizzo minimo delle risorse, maggiore velocità di caricamento da disco e quindi sistema generalmente più reattivo. Il concetto delle use flags si estende anche nella scelta dei drivers video da supportare (perchè installare i moduli del server grafico per pilotare una scheda che non è installata sul sistema?) o alle traduzioni linguistiche e così via...
  • Metadistro: gentoo consente facilmente di decidere cosa installare in modo modulare, i pacchetti diventano un pò come dei mattoncini che si possono incastrare a proprio piacimento, partendo dal kernel per arrivare al DE preferito, il team di sviluppatori, infatti, tiene "in linea" (e quindi supporta) diverse "branch" dei pacchetti ed addirittura diverse versioni, posso scegliere se utilizzare il kernel "vanilla" o quello patchato dagli svluppatori di gentoo ( o ancora un kernel realtime, un kernel ottimizzato per macchine virtuali, etc.) , posso scegliere se installarne uno della famiglia 4.* o 3.*, allo stesso modo posso scegliere quale sistema di avvio utilizzare (openrc, systemd, etc.), posso decidere se usare php5 o php7, o ancora il DE preferito (e la sua versione) con possibilità praticamente infinite. Alcune delle configurazioni suggerite sono implementate nei cosiddetti "profili". E' molto facile scrivere un proprio profilo e creare un cosiddetto "overlay" del package manager: se vuoi creare una tua distro personalizzata hai a disposizione strumenti potentissimi!
  • Multislot: è possibile installare più versioni dello stesso pacchetto, con il sistema di profili è possibile scegliere quale usare sia a livello "wide" che su base utente
  • Rolling: in gentoo il concetto di versione della distro praticamente non esiste, si installa una sola volta e si aggiorna, STOP. E quando dico "si aggiorna" intendo dire che puoi passare da KDE 4 a KDE5 non da 4.3.2-ubuntu-1 a 4.3.2-ubuntu2. Il package manager consente, in ogni caso, di essere più o meno "conservativi", abilitando la branch di testing o quella stabile.
  • Universale: gira praticamente su tutto l'hardware esistente (anche più di debian!), dimenticate roba tipo "ubuntu non supporta le versioni vecchie di arm", le toolchain te le configuri a proprio piacimento!
  • Low-level: usare gentoo significa "sporcarsi le mani", questo fa si che in un modo o nell'altro sei costretto a capire cosa gira nel tuo PC
  • Ebuilds: scrivere un ebuild (ossia il file che descrive da dove il package manager deve prelevare i sorgenti e come deve compilarli) è relativamente semplice, ciò fa si che il numero di pacchetti supportati (ivi compresi quelli minori) è elevatissimo

ed ora i contro:
  • Source based: la compilazione è un'operazione spesso lunga, in una distro basata su pacchetti binari bastano pochi secondi per installare ciò che serve, in gentoo potremmo dover aspettare ore!
  • Veloce: se non siamo in grado di istruire per bene il compilatore probabilmente non saremo capaci di sfruttare a pieno la nostra CPU
  • Snella: con le use flags al minimo può capitare che un giorno avremo urgente bisogno di una feature specifica e saremo costretti a ricompilare (ed attendere) proprio nel momento meno opportuno
  • Rolling: questo non è un vero e proprio difetto, però di fatto capita che i "gentooisti", nella foga di voler testare software "fresco" abilitano praticamente sempre la branch di testing e tutti i giorni passano ore ad aggiornare pacchetti (che in testing a volte danno problemi proprio in fase di compilazione). E comunque bisogna ammetterlo: la stabilità di un sistema non rolling (soprattutto nelle versioni LTS) ce la possiamo dimenticare (anche se con la branch stable si sta abbastanza tranquilli, del resto io l'ho utilizzata, con terrore dei colleghi, su sistemi server di produzione!).
  • Low-level: a volte il software va semplicemente installato ed usato, non tutti hanno la voglia, l'entusiasmo e la pazienza di capire come funzinona una distro linux
  • Aggiornate periodicamente: quel vecchio pc con gentoo che non accendiamo da quasi un'anno... non è detto che la distro sia andata talmente avanti che si sia perso qualche "pezzo" per strada e non si riesca ad aggiornare!
  • Sicurezza: si gestisce (semi) manualmente... dovete "syncare"e ricompilare!

Purtroppo il tempo a disposizione è pochissimo e procederò per step, chi è curioso potrà seguire la mie peripezie (ce ne saranno di sicuro!) seguendo gli aggiornamenti di questo thread, chissà magari qualcuno sarà trascinato in questa follia ;)
Firma
Avatar utente
Niko
Amministratore
Messaggi: 105
Iscritto il: domenica 10 maggio 2015, 20:03

Re: Gentoo: l'amore perduto (e ritrovato?)

Messaggioda Niko » martedì 27 ottobre 2015, 16:30

E veniamo subito al primo deep impact con gentoo: l'Installazione! talmente low-level/ostica che ci scrivono su le barzellette! Devo ammettere che se so cosa sia lilo, elilo, grub, isolinux, EFI, MBR, GPT, e tutte le diavolerie di casa Microzozz per limitare la libertà degli utenti è grazie alla procedura di installazione di gentoo! Si può eseguire seguendo la guida alla lettera a mo' di pecora o lasciarsi incuriosire dai comandi che si digitano ed approfondire (e qui vien fuori l'animo didattico di gentoo!).
Poichè come premesso, non ho molto tempo a disposizione, ho preferito fare tutto da una macchina virtuale VirtualBox, ma con un accorgimento, ho *mappato* un disco virtuale direttamente su di una device fisica (nel mio caso /dev/sdb una SSD da 256GB) in modo da poter continuare ad utilizzare il sistema precedente (mint) durante le lunghe sessioni di "emerge" per poi "switchare" quando tutto l'ambiente sarà finalmente pronto.
Una volta fatto il boot della macchina virtuale con la ISO di installazione minimal, ho scritto:

Codice: Seleziona tutto

loadkeys it
passwd
/etc/init.d/sshd start

in modo da collegarmi sulla live da ssh (e poter fare il copia e incolla!).
A questo punto ho scritto una semplicissima serie di comandi per installare gentoo (n.b. è una trascrizione non precisa di quello che ho fatto):

Codice: Seleziona tutto

gdisk /dev/sda
n
invio
invio
+128M
EF00
n
invio
invio
+1M
EF02
n
invio
invio
invio
w
y
mkfs.ext4 /dev/sda3
mount /dev/sda3 /mnt/gentoo
cd /mnt/gentoo
links http://distfiles.gentoo.org/releases/amd64/autobuilds/current-stage3-amd64/
tar xfvj stage3*
cp /etc/resolv.conf /mnt/gentoo/etc/
mount -o bind /dev /mnt/gentoo/dev
chroot /mnt/gentoo
env-update
source /etc/profile
emerge-webrsync
mount -t proc none /proc
mount -t sysfs none /sys
mount  -t devpts none /dev/pts
emerge --sync
blkid
emerge dosfstools
mkfs.vfat /dev/sda1
nano -w /etc/fstab (modificare BOOT in UUID=uuid di /dev/sda1 con vfat al posto di ext2 e ROOT in UUID=uuid di /dev/sda3 con ext4 al posto di ext3, commentare swap, oppure se lo si è creato durante la fase di partizionamento ripetere la stessa operazione ricordando di dare il comando mkswap /dev/sdaX)
eselect profile set 3
echo "ACCEPT_KEYWORDS=~amd64" >> /etc/portage/make.conf (opzionale, abilita la testing branch!)
emerge gentoo-sources genkernel
echo 'GRUB_PLATFORMS="efi-32 efi-64 pc"' >> /etc/portage/make.conf (togliete quelle che non vi servono)
emerge grub
mount /boot
grub2-install --efi-directory=/boot (senza efi grub2-install /dev/sda)
grub2-mkconfig >/boot/grub/grub.conf
grub2-mkconfig >/boot/grub/grub.cfg
emerge efibootmgr
nano /etc/genkernel.conf
INSTALL="yes"
MENUCONFIG="yes"
CLEAN="no"
MRPROPER="no"
SYMLINK="no" (perchè montiamo boot su fat32 che non permette i link)
BOOTLOADER="grub"
LUKS="yes"
ZFS="no"
BTRFS="no"
emerge cryptsetup
genkernel all
exit
save
yes
passwd
emerge openssh
rc-update add sshd default
cd /etc/init.d
ln -s net.lo net.enp0s3
rc-update add net.enp0s3 default
cd /etc/conf.d
nano -w hostname keymaps
nano -w /etc/hosts
ln -fs /usr/share/zoneinfo/Europe/Rome /etc/localtime


facile no? :mrgreen: al reboot la macchina virtuale è risalita senza problemi, a quel punto ho fatto il reboot al PC per vedere se lo strataggemma del mapping virtual del disco fisico avesse funzionato ed è filato tutto liscio con una velocità di boot di 2/3 secondi (e vorrei vedere senza ambiente grafico ;).
Ora mi ritrovo con un sistema solo testo, praticamente senza software..., che entusiasmo! già so che per tirare su tutto con il tempo a disposizione ci vorranno giorni!, riavvio dunque Mint e continuo dalla macchina virtuale ;)
Firma
Avatar utente
Niko
Amministratore
Messaggi: 105
Iscritto il: domenica 10 maggio 2015, 20:03

Re: Gentoo: l'amore perduto (e ritrovato?)

Messaggioda Niko » martedì 27 ottobre 2015, 16:36

e continuiamo... altra operazione fatta... aggiunto in make.conf la flag:

ACCEPT_KEYWORDS=~amd64

in tal modo ho abilitato la branch di testing... a questo punto ho lanciato il comando

Codice: Seleziona tutto

emerge -DuN world

e me ne sono andato a dormire, la mattina dopo amara sorpresa, durante la compilazione della boost library (cosa sono? cosa fanno? ehehe) il compilatore crashava... leggo con dmesg, out of memory! ma dai! devo abilitare un'area di swap (che molti usano senza sapere).

Codice: Seleziona tutto

dd if=/dev/zero of=/swap bs=1024k count=8000
mkswap /swap
swapon /swap
emerge -DuN world

me ne sono andato a lavoro e la sera ho ritrovato la mia gentoo con tutti i pacchetti aggiornati e ricompilati, il sistema però mi avvertiva che c'erano dei file di configurazione da aggiornare. Ho lanciato dunque

Codice: Seleziona tutto

dispatch-conf

scegliendo di volta in volta cosa fare (installare il nuovo file di configurazione, tenere il vecchio, etc.). I file "vecchi" vengono in ogni caso conservati in una cartella (non potete immaginare quanto sia utile questa cosa ;))

Non abbiamo ancora finito, il kernel infatti non viene aggiornato come tutti gli altri pacchetti... in realtà quando è disponibile una nuova versione del kernel emerge ne scarica i sorgenti e li estrae in /usr/src/, se vogliamo usare il nuovo kernel dobbiamo compilarlo:

Codice: Seleziona tutto

genkernel all
grub2-mkconfig -o /boot/grub/grub.cfg

l'abilitazone alla testing branch ha comportato un notevole balzo in avanti del kernel dalla versione 4.0.9 alla 4.2.4 ed infatti al primo reboot nisba... kernel completamente bloccato... non parte... con il boot nativo invece funziona tutto... meno male!... deve essere un problema di configurazione con virtualbox (o del virtualizzatore stesso)... poco male, quando sarò in virtuale utilizzerò il kernel vecchio, tanto a breve (3/4 giorni al max! ahahha diventerà la mia main distro).
Firma
Avatar utente
Niko
Amministratore
Messaggi: 105
Iscritto il: domenica 10 maggio 2015, 20:03

Re: Gentoo: l'amore perduto (e ritrovato?)

Messaggioda Niko » martedì 27 ottobre 2015, 17:26

Poi è venuto il momento di installare il server grafico... non ricordo il nome del driver nvidia, vediamo un pò:

emerge -pv xorg-server

Codice: Seleziona tutto

[ebuild  N     ] sys-libs/mtdev-1.1.5::gentoo  USE="-static-libs" 268 KiB
[ebuild  N     ] x11-proto/fontsproto-2.1.3::gentoo  USE="-doc" 151 KiB
[ebuild  N     ] x11-proto/xineramaproto-1.2.1-r1::gentoo  ABI_X86="(64) -32 (-x32)" 94 KiB
[ebuild   R    ] x11-libs/libdrm-2.4.65::gentoo  USE="libkms* -static-libs -valgrind" ABI_X86="(64) -32 (-x32)" VIDEO_CARDS="intel nouveau radeon vmware -amdgpu (-exynos) (-freedreno) (-omap) (-tegra)" 0 KiB
[ebuild  N     ] x11-proto/xf86dgaproto-2.1-r2::gentoo  ABI_X86="(64) -32 (-x32)" 84 KiB
[ebuild  N     ] x11-libs/libxkbfile-1.0.9::gentoo  USE="-static-libs" 340 KiB
[ebuild  N     ] x11-proto/resourceproto-1.2.0::gentoo  101 KiB
[ebuild  N     ] x11-proto/trapproto-3.4.3::gentoo  48 KiB
[ebuild  N     ] x11-proto/bigreqsproto-1.1.2::gentoo  USE="-doc" 111 KiB
[ebuild  N     ] x11-proto/scrnsaverproto-1.2.2-r1::gentoo  USE="-doc" ABI_X86="(64) -32 (-x32)" 117 KiB
[ebuild  N     ] x11-apps/rgb-1.0.6::gentoo  136 KiB
[ebuild  N     ] x11-proto/xf86rushproto-1.1.2-r1::gentoo  37 KiB
[ebuild  N     ] x11-misc/xbitmaps-1.1.1::gentoo  111 KiB
[ebuild  N     ] x11-proto/xcmiscproto-1.2.2::gentoo  USE="-doc" 110 KiB
[ebuild  N     ] x11-apps/iceauth-1.0.7::gentoo  133 KiB
[ebuild  N     ] x11-apps/xkbcomp-1.3.0::gentoo  241 KiB
[ebuild  N     ] x11-libs/libXfont-1.5.1::gentoo  USE="bzip2 ipv6 truetype -doc -static-libs" 492 KiB
[ebuild  N     ] x11-base/xorg-drivers-1.17::gentoo  INPUT_DEVICES="evdev keyboard mouse -acecad -aiptek -elographics -fpit -hyperpen -joystick (-libinput) -mutouch -penmount -synaptics -tslib -vmmouse -void -wacom" VIDEO_CARDS="dummy fbdev glint intel mach64 mga nouveau nv r128 radeon savage tdfx trident vesa via vmware (-amdgpu) -apm -ast -chips -cirrus -epson -fglrx (-freedreno) (-geode) -i128 (-i740) -neomagic -nvidia (-omap) (-omapfb) -qxl -radeonsi -rendition -s3 -s3virge -siliconmotion -sisusb (-sunbw2) (-suncg14) (-suncg3) (-suncg6) (-sunffb) (-sunleo) (-suntcx) (-tegra) -tga -tseng -virtualbox (-voodoo)" 0 KiB
[ebuild  N     ] x11-libs/libXvMC-1.0.9::gentoo  USE="-static-libs" ABI_X86="(64) -32 (-x32)" 306 KiB
[ebuild  N     ] app-eselect/eselect-xvmc-0.4::gentoo  0 KiB
[ebuild  N     ] dev-libs/libevdev-1.4.4::gentoo  USE="-static-libs" ABI_X86="(64) -32 (-x32)" 401 KiB
[ebuild  N     ] x11-misc/xkeyboard-config-2.16::gentoo  946 KiB
[ebuild   R    ] media-libs/mesa-11.0.4::gentoo  USE="bindist classic dri3 egl gallium gbm llvm nptl udev xa* -d3d9 -debug -gles1 -gles2 -opencl -openmax -osmesa -pax_kernel -pic (-selinux) -vaapi -vdpau -wayland -xvmc" ABI_X86="(64) -32 (-x32)" VIDEO_CARDS="intel nouveau radeon vmware (-freedreno) -i915 -i965 -ilo -r100 -r200 -r300 -r600 -radeonsi" 0 KiB
[ebuild  N     ] x11-apps/xrdb-1.1.0::gentoo  135 KiB
[ebuild  N     ] x11-apps/xinit-1.3.4-r1::gentoo  USE="minimal -systemd" 162 KiB
[ebuild  N     ] x11-base/xorg-server-1.17.2-r2:0/1.17.2::gentoo  USE="glamor ipv6 nptl suid udev xorg -dmx -doc -kdrive -libressl -minimal (-selinux) -static-libs -systemd -tslib -unwind -wayland -xephyr -xnest -xvfb" 5633 KiB
[ebuild  N     ] x11-drivers/xf86-input-keyboard-1.8.1::gentoo  312 KiB
[ebuild  N     ] x11-drivers/xf86-video-fbdev-0.4.4::gentoo  287 KiB
[ebuild  N     ] x11-drivers/xf86-video-vesa-2.3.4::gentoo  279 KiB
[ebuild  N     ] x11-drivers/xf86-video-mach64-6.9.5::gentoo  USE="dri" 509 KiB
[ebuild  N     ] x11-drivers/xf86-video-ati-7.5.0::gentoo  USE="glamor udev" 791 KiB
[ebuild  N     ] x11-drivers/xf86-video-nouveau-1.0.11::gentoo  USE="glamor" 569 KiB
[ebuild  N     ] x11-drivers/xf86-video-openchrome-0.3.3::gentoo  USE="-debug -viaregtool" 507 KiB
[ebuild  N     ] x11-drivers/xf86-input-evdev-2.9.2::gentoo  379 KiB
[ebuild  N     ] x11-drivers/xf86-video-tdfx-1.4.6::gentoo  USE="dri" 360 KiB
[ebuild  N     ] x11-drivers/xf86-video-savage-2.3.8::gentoo  USE="dri" 409 KiB
[ebuild  N     ] x11-drivers/xf86-video-intel-2.99.917-r2::gentoo  USE="dri sna udev -debug -uxa -xvmc" 2207 KiB
[ebuild  N     ] x11-drivers/xf86-input-mouse-1.9.1::gentoo  341 KiB
[ebuild  N     ] x11-drivers/xf86-video-dummy-0.3.7::gentoo  USE="-dga" 274 KiB
[ebuild  N     ] x11-drivers/xf86-video-trident-1.3.7::gentoo  369 KiB
[ebuild  N     ] x11-drivers/xf86-video-mga-1.6.4::gentoo  USE="dri" 465 KiB
[ebuild  N     ] x11-drivers/xf86-video-nv-2.1.20-r1::gentoo  388 KiB
[ebuild  N     ] x11-drivers/xf86-video-vmware-13.1.0::gentoo  449 KiB
[ebuild  N     ] x11-drivers/xf86-video-r128-6.10.0::gentoo  USE="dri" 484 KiB
[ebuild  N     ] x11-drivers/xf86-video-glint-1.2.8-r1::gentoo  387 KiB

Total: 45 packages (43 new, 2 reinstalls), Size of downloads: 19907 KiB



mi è venuta fuori una bella lista (di default verrebbero installati alcuni driver che non mi servono), a me interessa che giri sotto virtualbox e in modo nativo con scheda grafica nvidia quindi ho scelto i miei drivers e li ho indicati nel make.conf

Codice: Seleziona tutto

VIDEO_CARDS="virtualbox nvidia"


a questo punto con emerge xorg-server mi sono venuti fuori una serie di warning che mi invitano a modificare alcune use flag di specifici pacchetti in modo che vengano compilati sia a 64 che a 32 bit!
non c'è tempo di approfondire troppo... l'ultima volta che ho usato gentoo i sistemi (almeno quelli che avevo io) erano a 32 bit o al limite erano dei server su cui certo non andavo ad installare il server grafico, mi basta leggere che da marzo del 2015, il supporto multilib per architetture 64 bit è stato notevolmente potenziato, in pratica basta la giusta use flag e i pacchetti vengono compilati sia a 32 che a 64 bit, ho imparato un'altra cosa..

la compilazione è durata meno del previsto, ma se ricordo bene è necessario installare altre cosette per far partire una sezione X, il windows manager e l'xterm, do dunque il comando startx e vedo cosa mi manca

Codice: Seleziona tutto

emerge twm xterm xclock


ora posso scrivere

Codice: Seleziona tutto

startx

e posso finalmente ammirare il mio desktop! e devo dire che qui si viaggia indietro nel tempo! twm il "Tom's Windows Manager", visto per la prima volta su una workstation iris indigo 20 e più anni fa! all'epoca rivoluzionario, oggi completamente superato, a meno che non abbiate un pc davvero scarso a risorse dove potrebbe avere addirittura un senso!
Allegati
twm.png
twm.png (7.56 KiB) Visto 3404 volte
Firma
Avatar utente
Niko
Amministratore
Messaggi: 105
Iscritto il: domenica 10 maggio 2015, 20:03

Re: Gentoo: l'amore perduto (e ritrovato?)

Messaggioda Niko » martedì 27 ottobre 2015, 17:30

E' il momento di firefox,

una controllata alle flags:

Codice: Seleziona tutto

emerge -pv firefox

che mi da:

Codice: Seleziona tutto

[ebuild   R    ] www-client/firefox-41.0.2::gentoo  USE="dbus gmp-autoupdate jemalloc3 jit minimal startup-notification system-cairo system-icu system-jpeg system-libvpx system-sqlite wifi -bindist -custom-cflags -custom-optimization -debug -egl -gstreamer -gstreamer-0 -hardened (-neon) (-pgo) -pulseaudio (-selinux) {-test}" LINGUAS="it -af -ar -as -ast -be -bg -bn_BD -bn_IN -br -bs -ca -cs -cy -da -de -el -en_GB -en_ZA -eo -es_AR -es_CL -es_ES -es_MX -et -eu -fa -fi -fr -fy_NL -ga_IE -gd -gl -gu_IN -he -hi_IN -hr -hu -hy_AM -id -is -ja -kk -km -kn -ko -lt -lv -mai -mk -ml -mr -nb_NO -nl -nn_NO -or -pa_IN -pl -pt_BR -pt_PT -rm -ro -ru -si -sk -sl -son -sq -sr -sv_SE -ta -te -th -tr -uk -vi -xh -zh_CN -zh_TW"

umh... flags interessanti, vediamole meglio:

equery uses firefox, pare che posso farli usare diverse librerie di sistema al posto di quelle bundled con i sorgenti, buono, memoria risparmiata, uh? wifi? interessante... dbus? interessante, addirittura egl, per il momento tralascio pulseaudio e gstreamer (hehe ecco un esempio di cosa dico quando poi magari mi servono in futuro e sono costretto a riemergere) ed emergo...

ok... è andata..... p.s. lo screenshot è da virtualbox, ma gira tutto anche in nativo, e su u monitor 2560x1440 l'effetto è impressionante ;)
Allegati
firefox.png
firefox.png (129.25 KiB) Visto 3404 volte
Firma
Avatar utente
Niko
Amministratore
Messaggi: 105
Iscritto il: domenica 10 maggio 2015, 20:03

Re: Gentoo: l'amore perduto (e ritrovato?)

Messaggioda Niko » martedì 27 ottobre 2015, 17:45

ora ho bisogno di un login manager, a questo punto mi diverto con qualcosa di adatto a twm... ed emergo xdm, ora posso lanciarlo con un

Codice: Seleziona tutto

/etc/init.d/xdm start

e farlo partire automaticamente al boot con

Codice: Seleziona tutto

rc-update add xdm default

ed eccolo in tutto il suo splendore (che ricordi!)
Allegati
xdm.png
xdm.png (14.44 KiB) Visto 3403 volte
Firma
Avatar utente
Niko
Amministratore
Messaggi: 105
Iscritto il: domenica 10 maggio 2015, 20:03

Re: Gentoo: l'amore perduto (e ritrovato?)

Messaggioda Niko » martedì 27 ottobre 2015, 20:08

ok... basta così... diamo un look più carino... mi ero riproposto di testare xfce4, è il momento giusto

Codice: Seleziona tutto

emerge xfce4-meta

ok ora va meglio...
Allegati
xfce4.jpeg
xfce4.jpeg (76.36 KiB) Visto 3402 volte
Firma
Avatar utente
Niko
Amministratore
Messaggi: 105
Iscritto il: domenica 10 maggio 2015, 20:03

Re: Gentoo: l'amore perduto (e ritrovato?)

Messaggioda Niko » giovedì 29 ottobre 2015, 22:28

ed ora un pò di security... voglio la cifratura disco, (sottolineo disco, non quella su base utente), faccio risalire la macchina virtuale dopo averne fatto un backup, lancio il seguente comando per cifrare il disco:

Codice: Seleziona tutto

cryptsetup luksFormat /dev/sda3

dopo avermi chiesto la password di cifratura ed avermi avvertito che perderò tutti i dati mappo la partizione:

Codice: Seleziona tutto

cryptsetup luksOpen /dev/sda3 crypt

a questo punto mi comprarirà un nuovo device in /dev/mapper/crypt, dovrò usare questo al posto di /dev/sda3, automaticamente tutte le letture/scritture mi verranno cifrate/decifrate on the fly.
Voglio però anche LVM quindi:

Codice: Seleziona tutto

vgcreate gentoo /dev/mapper/crypt
lvcreate gentoo -n swap -L 8G
mkswap /dev/gentoo/swap
lvcrate gentoo -n root
mkfs.ext4 /dev/gentoo/root

a questo punto due cose:
1) ripopolo il disco dal backup ;)
2) istruisco initramfs in modo da farmi richiedere la password di decifratura al boot, basta aggiungere alla riga del kernel i parametri crypt_root=/dev/sda3 dolvm real_root=/dev/gentoo/root...

ora mi sento molto più tranquillo e chi avrà storto il naso perchè avevo abilitato lo swap si tranquillizzerà 8-)
Firma
Avatar utente
Niko
Amministratore
Messaggi: 105
Iscritto il: domenica 10 maggio 2015, 20:03

Re: Gentoo: l'amore perduto (e ritrovato?)

Messaggioda Niko » giovedì 29 ottobre 2015, 22:28

emh... bisogna configurare la tastiera del server X, innanzitutto

Codice: Seleziona tutto

emerge setxkbmap

tanto per poterla cambiare da riga di comando,
poi piuttosto che agire con settaggi del DE creo un file /etc/X11/xorg.conf.d/30-keyboard.conf dal seguente contenuto

Codice: Seleziona tutto

Section "InputClass"
        Identifier "keyboard-all"
        Driver "evdev"
        Option "XkbLayout" "it"
        Option "XkbRules" "xorg"
        MatchIsKeyboard "on"
EndSection

questi parametri lavorano ad un livello molto basso, quindi funzionerà con qualsiasi sessione X io voglia lanciare
Firma
Avatar utente
Niko
Amministratore
Messaggi: 105
Iscritto il: domenica 10 maggio 2015, 20:03

Re: Gentoo: l'amore perduto (e ritrovato?)

Messaggioda Niko » giovedì 29 ottobre 2015, 22:28

Oggi ho installato il bittorrent sync (software proprietario ahime', chiedo venia, attualmente è l'unica esigenza che non riesco ancora a soddisfare con software FLOSS, al punto che sto pensando seriamente di organizzare lo sviluppo di una controparte libera) e l'occasione è ghiotta per parlare un pò degli overlay di gentoo.
Sappiamo che un ebuild è un semplice file di testo con dentro un pò di dati ed istruzioni che consentono ad "emerge" di scaricare e compilare un determinato pacchetto. Gli ebuild sono organizzati nell'albero del portage, ce ne sono diverse migliaia. Il portage non contiene ovviamente gli ebuild per tutti i software esistenti, ma solo quelli che il team dei developers ha deciso di gestire, per interesse comunitario, per l'importanza del software, etc. e soprattutto che hanno superato tutta una serie di test di quality assurance (n.b. chiunque può scrivere un ebuild e sottoporlo all'attenzione dei developers di gentoo caricandolo su bugs.gentoo.org con la richiesta di inclusione nel portage).
Gentoo consente di affiancare al portage altri repository di ebuild, chiamati appunto overlay. Sono dunque simili ai repository aggiuntivi di debian o ai PPA di ubuntu, ma sono molto più sicuri, per la natura stessa di gentoo e del portage e vedremo presto il perchè.
Ho cercato dunque un overlay che contenesse una versione aggiornata di bittorrent sync ed ho trovato questo:

https://github.com/z00nx/z00nx-overlay

l'autore sembra molto affezionato a questo software, sono presenti in fatti ben 15 ebuilds con versioni che vanno dalla 1.4.103 alla 2.2.5 (p.s. il repository debian si ferma alla 2.0.93)
Se fosse stato un repository debian/ubuntu avrei tirato giù un binario e mi sarei dovuto fidare (in realtà avrei potuto fare altro, ma per il momento soprassediamo), poichè siamo in gentoo, invece, posso velocemente guardare il contenuto dell'ebuild e vedere cosa fa.
Mi sono dunque analizzato l'ebuild della versione 2.2.5:

Codice: Seleziona tutto

# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=5

DESCRIPTION="Device to device. Skip the cloud. Fast, private file sharing for teams and individuals."
HOMEPAGE="https://www.getsync.com/"
SRC_URI="x86?   ( https://download-cdn.getsync.com/stable/linux-i386/BitTorrent-Sync_i386.tar.gz -> ${P}-x86.tar.gz )
       amd64? ( https://download-cdn.getsync.com/stable/linux-x64/BitTorrent-Sync_x64.tar.gz   -> ${P}-amd64.tar.gz )"

LICENSE="BitTorrent"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE=""

DEPEND=""
RDEPEND="${DEPEND}"

S="${WORKDIR}"
QA_PREBUILT="usr/bin/btsync"

src_install() {
   dobin btsync
   newinitd ${FILESDIR}/btsync.initd btsync
   newconfd ${FILESDIR}/btsync.confd btsync
   dodir /etc/btsync /var/lib/btsync
   insinto /etc/btsync
   newins ${FILESDIR}/config.json config
}

pkg_postinst() {
    elog "Bittorrent Sync has been installed and data is stored in /var/lib/btsync"
    elog
    elog "Start with ${ROOT}etc/init.d/btsync start"
    elog "Visit http://<host ip>:8888 to configure Bittorrent Sync"
   elog
   elog "If you are upgrading from, 1.4 you'll need to move the old data from"
   elog "/opt/btsync/.sync to /var/lib/btsync"
}


la prima cosa che vado a guardare è la variabile SRC_URI, che indica la url da dove verranno prelevati i sorgenti, vedo che proviene da getsync.com che è corretto, vedo che c'è https e quindi sono protetto da attacchi MIDM, poi mi vado a guardare le funzioni dell'ebuild e vedo che non fanno niente di anomalo. Ok posso emergerlo... penso sia inutile commentare e si percepisca in modo evidente il senso di controllo e sicurezza che si ha anche usando un ebuild esterno.

In ogni caso, paranoia x paraonia, non voglio installare l'overlay così come è, se qualcuno hackerasse l'account github dell'autore potrebbe inserire un nuovo ebuild fittizio di bittorrent sync, con numero di versione aggiornato che io potrei installare incautamente durante l'aggiornamento del sistema. Per questo motivo andrò a creare un overlay *locale* sulla mia installazione e copierò manualmente il file ebuild (ovviamente potrò usare questo local overlay per aggiungere altri ebuild esterni o scritti da me).

I passi sono semplici:

Codice: Seleziona tutto

mkdir -p /usr/local/portage/{metadata,profiles}
echo 'Niko Overlay' > /usr/local/portage/profiles/repo_name
echo 'masters = gentoo' > /usr/local/portage/metadata/layout.conf
chown -R portage:portage /usr/local/portage


una volta creato l'overlay lo rendiamo disponibile ad emerge:

Codice: Seleziona tutto

mkdir /etc/portage/repos.conf


ed al suo interno creiamo un file local.conf dal seguente contenuto

Codice: Seleziona tutto

[Niko Overlay]
location = /usr/local/portage
masters = gentoo
auto-sync = no

a questo punto copierò l'ebuild conservando la stessa struttura ad albero dell'overlay originale, poi dovrò generare il manifest con il comando ebuild path/to/filename.ebuild e finalmente potrò eseguire l'emerge.
Firma

Torna a “Altre distribuzioni”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite