Faceți căutări pe acest blog

vineri, 11 mai 2018

Boot Live iso hdd cu persistență

 E util să bootăm distribuții din imaginea iso de pe disc, dar de multe ori ar fi frumos să putem păstra datele, setările, modificările făcute în sesiunea live. Documentele pot fi copiate (dacă nu uităm...) pe altă partiție, dar parola conexiunii wi-fi, setările (hotkeys, shortcuts, browser bookmarks, shell history, șamd) se pierd la fiecare shutdown/ reboot. Nu toate distribuțiile pot fi rulate cu persistență, și de fapt nici nu e utilă persistența în toate cazurile, mi se pare bună persistența pentru distribuții precum BlackArch, Kali, Parrot, Tails, Deft (Digital Evidence & Forensic Toolkit), complet inutilă pentru Clonezilla (care suportă persistența: http://clonezilla.org/clonezilla-live/boot-parameters/live-boot.php), Gparted, RedoBackup, Rescatux, BootRepairDisk, și posibil utilă pentru o distribuție oarecare, Ubuntu sa zicem, caz în care am avea un ”hibrid”, sesiune live din imaginea iso, dar cu persistență, ca și cum am avea instalată distribuția pe disc.
 BlackArch, ca și celelalte distribuții bazate pe Arch nu suportă persistența! De fapt m-am pripit cu această afirmație, suportă sesiuni live cu persistență, cel puțin unele, chiar dacă cu unele limitări, posibil să nu știu eu deocamdată care-i rezolvarea.
 Trebuie creată o mică partiție care va servi drept locul unde vor fi salvate schimbările, sau să folosim un director creat anumit pe o partiție existentă. Schimbările în directorul personal (wallpaper, temă, fișiere create, fișiere descărcate, parole, conexiuni la net, autologare, șamd) sunt păstrate, probleme apar la unele distribuții (Archman de exemplu se blochează, BlackArch dă erori la actualizare, distribuția e veche de un an, apar încompatibilități între versiunile aplicațiilor) la schimbările din /, actualizări, instalări de alte programe... În altele sunt salvate toate schimbările, actualizări, aplicații nou instalate, de exemplu în ArchLabs sau Archbang. Din motive care-mi scapă, unele derivate din Arch (Manjaro, KaOS) nu au păstrat schimbările, ceva nu era în regulă.

Actualizare: problema este că developerii anumitor distribuții bazate pe ArchLinux au făcut unele modificări, mai exact sunt mai multe fișiere squashfs, 3 în cazul Chakra și KaOS și 4 în cazul Manjaro, deci fișiere separate pentru live, desktop, root, mhwd (Manjaro HardWare Detection), spre deosebire de Arch sau alte derivate (ArchBang, ArchLabs, ArcoLinux, ArchEx, BlackArch)...



Voi pune intrările pentru cele pe care am reușit să le rulez în sesiune live direct din imaginea iso cu persistență (BlackArch, ArchBang, ArchLabs, ArchEx, Archman, ArcoLinux).
menuentry "BlackArch" --class iso {
set isofile="/dan/Downloads/ISO/blackarchlinux-live-2017.12.11-x86_64.iso"
loopback loop (hd0,2)/$isofile
linux (loop)/blackarch/boot/x86_64/vmlinuz archisobasedir=blackarch archisolabel=BLACKARCH_201712 img_dev=/dev/sda2 img_loop=$isofile earlymodules=loop cow_label=BlackArch cow_device=/dev/sda16 cow_device=/dev/disk/by-label/BlackArch cow_persistent=p i915.modeset=1
initrd (loop)/blackarch/boot/x86_64/archiso.img
}
menuentry "Archbang" --class iso {
set isofile="/dan/Downloads/ISO/archbang-rc-1205.iso"
loopback loop (hd0,2)/$isofile
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCHBANG img_dev=/dev/sda2 img_loop=$isofile earlymodules=loop cow_label=Archbang cow_device=/dev/sda12 cow_device=/dev/disk/by-label/Archman cow_persistent=p i915.modeset=1 copytoram
initrd (loop)/arch/boot/x86_64/archiso.img
}
menuentry "ArchEx" --class iso {
set isofile="/dan/Downloads/ISO/archex-64bit-deepin-lxqt-calamares-1880mb-171129.iso"
loopback loop (hd0,2)/$isofile
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCHEX_201703 img_dev=/dev/sda2 img_loop=$isofile earlymodules=loop cow_label=Archex cow_device=/dev/sda13 cow_device=/dev/disk/by-label/Archex cow_persistent=p i915.modeset=1 copytoram
initrd (loop)/arch/boot/x86_64/archiso.img
}
menuentry "ArchLabs" --class iso {
set isofile="/dan/Downloads/ISO/archlabs-2018-05.iso"
loopback loop (hd0,2)/$isofile
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=AL-X86_64 img_dev=/dev/sda2 img_loop=$isofile earlymodules=loop cow_label=Archlabs cow_device=/dev/sda16 cow_device=/dev/disk/by-label/Archlabs cow_persistent=p i915.modeset=1 copytoram
initrd (loop)/arch/boot/x86_64/archiso.img
}

menuentry "Archman" --class iso {
set isofile="/dan/Downloads/ISO/archman-xfce-1805_x86_64.iso"
loopback loop (hd0,2)/$isofile
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCHMAN img_dev=/dev/sda2 img_loop=$isofile earlymodules=loop cow_label=Archman cow_device=/dev/sda9 cow_device=/dev/disk/by-label/Archman cow_persistent=p i915.modeset=1 copytoram
initrd (loop)/arch/boot/x86_64/archiso.img
}


 După cum observați sistemul de setare al persistenței e diferit față de Debian/ Ubuntu/ derivate. Inspirația mi-a venit citind documentația: https://github.com/djgera/archiso/blob/master/docs/README.bootparams
 Eu am placă video Intel, de aceea  apare parametrul i915.modeset=1, pentru plăci grafice nvidia sau amd puneți nouveau.modeset=1, respectiv radeon.modeset=1. Se pot pune toți cei 3 parametri, nu vor influența negativ procesul.
 Folosiți cu atenție parametrul copytoram, e util în cazul distribuțiilor cu dimensiune redusă, nu în cazul BlackArch care are 7,5GB, posibil să nu aveți atât RAM, opțiunea copie SquashFS (imaginea airootfs.sfs) în RAM... Putem alege doar un anumit procent (25%, 50%, etc, implicit e 75%).
 E posibil să putem folosi chiar un director de pe o partiție existentă, vom modifica în concordanță intrările în meniu, trebuie modificați parametrii cow_label=etichetă-corectă-partiție , cow_device=/dev/disk/by-label/${cow_label} și adăugat parametrul cow_directory=director-creat-în-interiorul-${cow_device}.
 Un exemplu: Archman în sesiune live cu persistență, datele fiind salvate pe partiția /dev/sda11, cu eticheta Manjaro, într-un director numit Archman-persistence:
menuentry "Archman" --class iso {
set isofile="/dan/Downloads/ISO/archman-xfce-1805_x86_64.iso"
loopback loop (hd0,2)/$isofile
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCHMAN img_dev=/dev/sda2 img_loop=$isofile earlymodules=loop cow_label=Manjaro cow_device=/dev/sda11 cow_device=/dev/disk/by-label/Manjaro cow_directory=Archman-persistence cow_persistent=p i915.modeset=1 copytoram
initrd (loop)/arch/boot/x86_64/archiso.img

 Alt exemplu, ArcoLinux 2018, modificările salvate în partiția /dev/sda3, cu eticheta date, în directorul arco-linux:
menuentry "ArcoLinux" --class iso {
set isofile="/dan/Downloads/ISO/arcolinux-v6.8.2-2018.05.30.iso"
loopback loop (hd0,2)/$isofile
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=arcolinux-v6.8.2-201805-x86_64 img_dev=/dev/sda2 img_loop=$isofile earlymodules=loop cow_label=date cow_device=/dev/sda3 cow_device=/dev/disk/by-label/date cow_directory=arco-linux cow_persistent=p i915.modeset=1 copytoram
initrd (loop)/arch/boot/x86_64/archiso.img
}




 

  
Kali și Parrot pot boota cu persistență dacă punem unei partiții eticheta persistence și creăm în acea partiție un fișier persistence.conf cu conținutul:
/ union, fie o facem în file manager, fie în terminal cu comenzile (în exemplul următor mă refer la pertiția /dev/sda4, modificați în consecință):
mkfs.ext4 -L persistence /dev/sda4
e2label /dev/sda4 persistence

echo "/ union" > /label-partiție/persistence.conf   
de exemplu:
echo "/ union" > /persistence/persistence.conf
echo "/ union" > /date/persistence.conf

 Partiția trebuie să fie ext3 sau ext4, poate fi o partiție deja creată și folosită (la mine partițiile persistence și date sunt ext4 și le folosesc ca partiții de date și backup), sau creăm una nouă de 10-50-100 GB, în funcție de spațiul disponibil și de modul în care folosim distribuția.
 Apoi trecem la parametrii kernelului persistence. Intrările vor arăta:

menuentry "Parrot" {
insmod loopback
insmod iso9660
set isofile='/dan/Downloads/ISO/Parrot-security-3.11_amd64.iso'
loopback loop (hd0,2)$isofile
linux (loop)/live/vmlinuz boot=live config fromiso=/dev/sda2/$isofile hostname=parrot splash noautomount persistence rw toram panic=5
initrd (loop)/live/initrd.img
}
menuentry "Kali 2016" {
insmod loopback
insmod iso9660
set isofile="/dan/Downloads/ISO/kali-linux-2016.2-i386.iso"
loopback loop (hd0,2)$isofile
linux (loop)/live/vmlinuz boot=live findiso=$isofile noconfig=sudo username=root hostname=kali noprompt noeject persistence rw toram panic=5
initrd (loop)/live/initrd.img
}
menuentry "Kali 2018" {
insmod loopback
insmod iso9660
set isofile="/dan/Downloads/ISO/kali-linux-kde-2018.1-amd64.iso"
loopback loop (hd0,2)$isofile
linux (loop)/live/vmlinuz-4.14.0-kali3-amd64 boot=live findiso=$isofile noconfig=sudo username=root hostname=kali noprompt noeject persistence rw toram panic=5
initrd (loop)/live/initrd.img-4.14.0-kali3-amd64
}

 Putem chiar alege altă destinație (partiție) unde să fie salvate datele, modificările, trebuie doar ca acea partiție să aibă etichetă, să conțină fișierul persistence.conf și-n final să trecem parametrul persistence-label=”etichetă” la menuentry, în exemplul următor acea partiție are eticheta date:

menuentry "Parrot" {
insmod loopback
insmod iso9660
set isofile='/dan/Downloads/ISO/Parrot-security-3.11_amd64.iso'
loopback loop (hd0,2)$isofile
linux (loop)/live/vmlinuz boot=live config fromiso=/dev/sda2/$isofile hostname=parrot splash noautomount persistence persistence-label=date rw toram panic=5
initrd (loop)/live/initrd.img
}

 Parrot va salva datele într-un director rw, bineînțeles pe partiția desemnată pentru salvarea datelor, persistence, date sau indiferent cum o denumiți.Putem oricând boota în modul ”clasic” editând intrarea distribuției și ștergând parametrii referitorila persistență.

 Tails (The Amnesic Incognito Live System) suportă doar persistența pe o partiție criptată, nu am nici o partiție disponibilă (disc formatat MBR cu deja 4 partiții primare...), deci nu pot testa, vă las link către documentație și către un sumar:
https://tails.boum.org/contribute/design/persistence/
https://tor.stackexchange.com/questions/12841/use-tails-persistent-volume-with-iso

 Debian și derivatele pot folosi persistența în exact același mod, diferă eticheta implicită a partiției, Debian preferă live-rw, Ubuntu casper-rw, Kali și Parrot persistence, Debian, Kali și Parrot pot folosi altă partiție cu alt label pentru persistență, Ubuntu vrea doar cu partiție etichetată casper-rw...
 Ubuntu și derivatele știu și ele de persistență, dar eticheta partiției unde se păstrează modificările trebuie să fie casper-rw. Parametrii sunt puțin diferiți, persistent în loc de persistence și label casper-rw (preferabil) sau persistence-label=casper-rw. Intrarea pentru Grub2 va fi de genul:

menuentry "Lubuntu 16.04" {
set isofile="/ISO/lubuntu-16.04-desktop-i386.iso"
loopback loop (hd0,4)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject persistent persistence-method=overlay persistence-label=casper-rw rw toram panic=5
initrd (loop)/casper/initrd.lz
}
menuentry "Ubuntu 18.04" {
set isofile="/dan/Downloads/ISO/bionic-desktop-amd64.iso"
loopback loop (hd0,2)$isofile
linux (loop)/casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=$isofile noprompt noeject persistent persistence-method=overlay persistence-label=casper-rw rw toram panic=5
initrd (loop)/casper/initrd.lz
}
menuentry "Debian-live-9.3.0" {
set isofile='/dan/Downloads/debian-live-9.3.0-amd64-xfce.iso'
loopback loop (hd0,2)$isofile
linux (loop)/live/vmlinuz boot=live config fromiso=/dev/sda2/$isofile toram persistence persistence-method=overlay persistence-label=live-rw rw panic=5
initrd (loop)/live/initrd.img
}
menuentry "PIXEL" {
set isofile='/dan/Downloads/ISO/2017-11-16-rpd-x86-stretch.iso'
loopback loop (hd0,2)$isofile
linux (loop)/live/vmlinuz2 boot=live config fromiso=/dev/sda2/$isofile components splash plymouth.ignore-serial-consoles persistence persistence-label=live-rw rw
initrd (loop)/live/initrd2.img
}

 PIXEL (Pi Improved Xwindows Environment, Lightweight: https://www.raspberrypi.org/blog/pixel-pc-mac/) este o distribuție economică de Linux, bazată pe Debian și destinată Raspberry Pi, dar acum și pentru PC și MAC.


 Dacă pentru Ubuntu folosiți o partiție deja existentă veți observa niște modificări în structură, nu vă speriați, aveți toate datele anterioare, dar sunt în directorul upper.

 MX are nevoie de o partiție numită MX-Persist, va stoca acolo modificările. În același mod funcționează persistența și pentru AntiX. Parametri persistență:
persist_all ..... Fast. Saves root and home (uses RAM, saves at shutdown)
persist_root .... Fast. Only saves root (uses RAM, saves at shutdown)
persist_static .. Slow. Saves root and home (no RAM use, saves constantly)
persist_home .... Only home persistence
frugal_persist .. Frugal with both root and home persistence
frugal_root ..... Frugal with only root persistence
frugal_static ... Frugal with home and static root persistence
frugal_home ..... Frugal with only home persistence
frugal_only ..... Only Frugal, no persistence
http://download.tuxfamily.org/antix/docs-antiX-16/Boot_Menu/antiX-gfxboot.html#persist
https://download.tuxfamily.org/antix/docs-antiX-17/FAQ/persistence.html

menuentry "MX 17.1" {
set isofile='/dan/Downloads/ISO/MX-17.1_x64.iso'
loopback loop (hd0,2)$isofile
linux (loop)/antiX/vmlinuz fromiso=$isofile bootdev=sda2 persist_all tz=Europe/Bucharest
initrd (loop)/antiX/initrd.gz
}

menuentry "ISO antiX" {
set isofile='/dan/Downloads/ISO/antiX-17_x64-full.iso'
loopback loop (hd0,2)$isofile
linux (loop)/antiX/vmlinuz fromiso=$isofile from=all disable=lx persist_all pdev=sda6 plab=AntiX-Persist tz=Europe/Bucharest nomodeset toram
initrd (loop)/antiX/initrd.gz




Porteus: trebuie să creăm undeva un director în care vor fi salvate modificările, eu l-am creat pe partiția /dev/sda3 cu numele porteus. Modificări precum tema, wallpaperul, conexiunea la wi-fi se păstrează automat, aparent nu cele la aplicațiile instalate (de exemplu firefox, bluez sau screenfetch), de fapt e necesar să încărcăm modulele suplimentare cu extramod=/cale-către-directorul-cu-pachetele-respective. În exemplul următor imaginea iso este pe partiția /dev/sda2 (/home pentru Archul meu), în /home/dan/Downloads/ISO, modificările le salvez pe partiția /dev/sda3 (/date în Arch), în directorul porteus, extramodulele (aplicațiile instalate de mine...) sunt în porteus/ changes/tmp/usm. Am preferat să folosesc contul de root, dacă nu doriți va trebuia să creați un cont de user normal și să folosiți parametrul login=nume-user. Intrare Grub2:
menuentry "Porteus" {
insmod loopback
insmod iso9660
set isofile="/dan/Downloads/ISO/Porteus-XFCE-v4.0-x86_64.iso"
loopback loop (hd0,2)$isofile
linux (loop)/boot/syslinux/vmlinuz from=/dan/Downloads/ISO/Porteus-XFCE-v4.0-x86_64.iso changes=/dev/sda3/porteus
extramod=/dev/sda3/porteus/changes/tmp/usm/ timezone=Europe/Bucharest bluetooth login=root copy2ram
initrd (loop)/boot/syslinux/initrd.xz



 Gentoo live-dvd poate fi rulat cu persistență (modificările vor fi păstrate sub numele livecd.aufs), chiar foarte simplu, prin adăugarea la parametrii de boot a aufs=/dev/sdxy (aufs=/dev/sdb2 de exemplu), iar intrarea ar arăta astfel:

menuentry "Gentoo live-dvd" {
set isofile="/dan/Downloads/ISO/livedvd-amd64-multilib-20160704.iso"
loopback loop (hd0,2)$isofile
linux (loop)/isolinux/gentoo root=/dev/ram0 aufs init=/linuxrc dokeymap looptype=squashfs loop=/image.squashfs cdroot initrd=/boot/gentoo.igz isoboot=/dan/Downloads/ISO/livedvd-amd64-multilib-20160704.iso aufs=/dev/sda3 panic=6
initrd (loop)/isolinux/gentoo.xz
}
 Gentoo a scos ultimul live-dvd în 2016, de atunci aufs a fost înlocuit cu overlayfs, în consecință Gentoo și derivatele (sau Pentoo, Sabayon, șamd) nu mai știu de persistență, sau n-am reușit eu. Deocamdată.

 Nu folosiți aceeași partiție pentru persistență la mai multe distribuții, apar suprapuneri, neconcordanțe, de exemplu deschidem terminalul în PIXEL și ne trezim cu datele salvate din Parrot...
Back to top