Víc Linuxů na jeden flash disk

Re:Víc Linuxů na jeden flash disk
« Odpověď #15 kdy: 05. 07. 2015, 14:44:24 »
Shrnutí s opravami, čerstvě vyzkoušeno:

1) vytvořit na flashdisku dos partition table a jednu partition, zformátovat ji na fat32, přimountovat pod /mnt/foobar -- podrobnosti viz výše

2) na flashdisk nainstalovat grub. Nejlépe jak pro i386-pc (bios boot z mbr), tak prox86_64-efi (uefi boot z adresáře /EFI/boot/) - tyto dvě možnosti mohou koexistovat - následujícími dvěma příkazy

# grub-install /dev/sdX --target=x86_64-efi --removable --root-directory=/mnt/foobar/
# grub-install /dev/sdX --target=i386-pc --recheck --root-directory=/mnt/foobar/

za /dev/sdX dosadit připojený flashdisk

3) do /mnt/foobar/boot/iso nahrát zamýšlené iso obrazy a vytvořit příslušný /mnt/foobar/boot/grub/grub.cfg - níže je příklad. V grub.cfg je nutné upravit UUID na řádku

set imgdevpath="/dev/disk/by-uuid/C1A9-6AEB"

tak, aby odpovídal partition na flashdisku - lze zjistit pomocí "lsblk -f /dev/sdX1", případně jako root pomocí "blkid /dev/sdX1". To je vše.

PS [mírně offtopic]: Při případné instalaci ubuntu server je potřeba po nabootování ručně přimountovat ubuntu-*-server-*.iso pod /cdrom (instalátor to sám nezvládne). alt-f2, enter, přimountovat pod /mnt/i samotný flashdisk a poté obraz z něj mount -o loop /mnt/i/boot/iso/ubuntu-*-server-*.iso /cdrom


Kód: [Vybrat]
insmod part_gpt
insmod ext2

if loadfont /boot/grub/fonts/unicode.pf2 ; then
set gfxmode=auto
insmod all_video
insmod gfxterm
terminal_output gfxterm
fi

set imgdevpath="/dev/disk/by-uuid/C1A9-6AEB"

menuentry '[loopback]archlinux-2015.07.01-dual.iso i686' {
set isofile='/boot/iso/archlinux-2015.07.01-dual.iso'
loopback loop $isofile
linux (loop)/arch/boot/i686/vmlinuz archisolabel=ARCH_201507 img_dev=$imgdevpath img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/i686/archiso.img
}

menuentry '[loopback]archlinux-2015.07.01-dual.iso x86_64' {
set isofile='/boot/iso/archlinux-2015.07.01-dual.iso'
loopback loop $isofile
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201507 img_dev=$imgdevpath img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/x86_64/archiso.img
}

menuentry "Xubuntu 15.04 desktop i386" {
set isofile='/boot/iso/xubuntu-15.04-desktop-i386.iso'
loopback loop $isofile
linux (loop)/casper/vmlinuz file=/cdrom/preseed/xubuntu.seed boot=casper iso-scan/filename=${isofile} quiet splash ---
initrd (loop)/casper/initrd.lz
}

menuentry "Xubuntu 15.04 desktop amd64" {
set isofile='/boot/iso/xubuntu-15.04-desktop-amd64.iso'
loopback loop $isofile
linux (loop)/casper/vmlinuz.efi file=/cdrom/preseed/xubuntu.seed boot=casper iso-scan/filename=${isofile} quiet splash ---
initrd (loop)/casper/initrd.lz
}

menuentry "Ubuntu 14.04.2 server i386" {
set isofile='/boot/iso/ubuntu-14.04.2-server-i386.iso'
loopback loop $isofile
linux    (loop)/install/vmlinuz file=/cdrom/preseed/ubuntu-server.seed iso-scan/filename=${isofile}
initrd    (loop)/install/initrd.gz
}

menuentry "Ubuntu 14.04.2 server amd64" {
set isofile='/boot/iso/ubuntu-14.04.2-server-amd64.iso'
loopback loop $isofile
linux    (loop)/install/vmlinuz file=/cdrom/preseed/ubuntu-server.seed iso-scan/filename=${isofile}
initrd    (loop)/install/initrd.gz
}

menuentry "Slax i486" {
set isofile="/boot/iso/slax-English-US-7.0.8-i486.iso"
  loopback loop $isofile
linux (loop)/slax/boot/vmlinuz toram from=$isofile
initrd (loop)/slax/boot/initrfs.img
}

menuentry "Slax x86_64" {
set isofile="/boot/iso/slax-English-US-7.0.8-x86_64.iso"
  loopback loop $isofile
linux (loop)/slax/boot/vmlinuz toram from=$isofile
initrd (loop)/slax/boot/initrfs.img
}

menuentry "Clonezilla live 2.3.2-22 i686" {
set isofile="/boot/iso/clonezilla-live-2.3.2-22-i686-pae.iso"
loopback loop $isofile
linux (loop)/live/vmlinuz boot=live live-config noswap nolocales edd=on nomodeset ocs_live_run=\"ocs-live-general\" ocs_live_extra_param=\"\" keyboard-layouts=\"\" ocs_live_batch=\"no\" locales=\"\" vga=788 ip=frommedia nosplash toram=filesystem.squashfs findiso=$isofile
initrd (loop)/live/initrd.img
}

menuentry "Memtest" {
linux16 /boot/memtest
}


Re:Víc Linuxů na jeden flash disk
« Odpověď #16 kdy: 05. 07. 2015, 15:00:56 »
No, to jsem sice shrnul jak to udělat jedním způsobem, ale idea o které píše OP by vlastně měla být elegantnější (na /dev/sdX1 grub, obrazy na /dev/sdX2 /dev/sdX3 a bootovat přímo z nich)... Teoreticky by to mohlo jít přes chainloading.

Re:Víc Linuxů na jeden flash disk
« Odpověď #17 kdy: 05. 07. 2015, 17:29:28 »
Po chvíli hledání jsem dospěl k závěru, že přímý chainload iso image, nahrané na zvláštní partition na flash např. pomocí dd ... of=/dev/sdX2, není možný. Končí hláškou "isolinux.bin missing or corrupt".

Jde o to, že iso image je připraven tak, aby fungoval při nahrání na disk pomocí dd ... of=/dev/sdX, nikoli s of=/dev/sdXn. Začátek iso image obsahuje mbr, po nahrání na /dev/sdX vzniknou v případě ubuntu dvě partition (jedna z nich pro EFI bootování). Při nahrání na /dev/sdXn je oproti tomu partition dostupná jen jediná, z pohledu systému iso9660. Zavaděč, který lze načíst grubem z prvních 512b /dev/sdXn nejspíš obsahuje odkaz na umístění isolinux.bin vzhledem k fyzickému počátku disku, nikoliv vzhledem k logickému začátku partition. Což je důvod zmíněné hlášky.

Zbývá tedy použít postup výše (načtení kernelu a initrd z iso image přimountované grubem). Postup to sice není univerzální, vyžaduje podporu ze strany distribuce a je pro každé distro mírně jiný, ovšem pro většinu dnešních distr. tak či onak zprovoznitelný je.

ze by

Re:Víc Linuxů na jeden flash disk
« Odpověď #18 kdy: 05. 07. 2015, 23:11:51 »
ja bych zustal u toho mountovani grubem,to slo uz i kdysi.
ale co treba teda zkusit cast iso preskocit
dd ... skip=xxx
?

technomaniak

Re:Víc Linuxů na jeden flash disk
« Odpověď #19 kdy: 06. 07. 2015, 07:07:44 »
Mám takový dotaz. To tu řešíte vytvoření live distribuci nebo prostě distribuci Linuxu, který bude fungovat bez odpojených pevných disků a pevný disk bude nahrazen oddílem na USBčku? Pokud to druhé nemáte někdo nějaký odkaz (např. na tutorial ) abych se na to podíval a příp. vyzkoušel?


Re:Víc Linuxů na jeden flash disk
« Odpověď #20 kdy: 06. 07. 2015, 10:58:19 »
Ještě bych rád dodal k postupu uvedenému výše:

1) při instalaci  --target=x86_64-efi grubu není potřeba vůbec uvádět "/dev/sdX", tj. příkaz stačí tento (samozřejmě disk je nutné mít namountovaný na /mnt/foobar):

# grub-install --target=x86_64-efi --removable --root-directory=/mnt/foobar/

2) narazil jsem na poněkud "zradu" při použití gparted. Pokud vytvořím např. partition přes celý disk pomocí fdisku a nainstaluji grub postupem výše, tak uefi bootování chodí. Pokud ovšem tu partition pomocí gparted zmenším, tak UEFI boot chodit přestane, i když příslušný soubor v /efi/boot na disku stále je. Příčinu nevím, možná je to nějak způsobeno změnou PARTUUID, ke které dochází. Ani opětovné použití grub-install uefi bootování nezprovozní. Když se vytvoří partition menší hned na počátku pomocí fdisku, tak opět vše funguje. [na sdX1 mám teď GRUB s iso image, na sdX2 nainstalovaný arch]

Re:Víc Linuxů na jeden flash disk
« Odpověď #21 kdy: 06. 07. 2015, 11:01:09 »
Mám takový dotaz. To tu řešíte vytvoření live distribuci nebo prostě distribuci Linuxu, který bude fungovat bez odpojených pevných disků a pevný disk bude nahrazen oddílem na USBčku? Pokud to druhé nemáte někdo nějaký odkaz (např. na tutorial ) abych se na to podíval a příp. vyzkoušel?

Zdravím, řeší se tu vpodstatě jak píšete live distribuce, resp. instalátory (což jsou dnes většinou live distribuce). Spouštění více různých instalátorů (distribucí) z jednoho flashdisku. Nainstalovat linux na flashdisk ovšem není větší problém, postup je prakticky indentický s klasickou instalací na pevný disk. Jen bych doporučil 1) v /etc/fstab se odkazovat na partition přes UUID (např. v arch linuxu použít genfstab -U -p /mnt). 2) nemít žádný swap 3) plus je potřeba počítat s více drivery, pokud člověk chce tu instalaci na flashdisku používat na více strojích.

nobody

Re:Víc Linuxů na jeden flash disk
« Odpověď #22 kdy: 06. 07. 2015, 12:25:43 »
3)

4) pridat do /etc/fstab parametr noatime, aby se neukladat souborum neustale cas posledniho pristupu cteni (zpomalujici, flash vice znicujici)

5) nastavit planovac deadline, pridanim nasledujici radku do /etc/rc.local(pred radek exit 0):
echo deadline > /sys/block/sda/queue/scheduler

Re:Víc Linuxů na jeden flash disk
« Odpověď #23 kdy: 07. 07. 2015, 19:44:28 »
Ještě zpět k původnímu tématu - jedno vylepšení:

GRUB umí sám číst UUID z partition a uložit ho do proměnné, tj. není potřeba UUID předem zjišťovat a upravovat podle něj grub.cfg -- pokud tedy iso image a grub jsou na jedné partition (což je tak či tak rozumný stav). Konkrétně pro arch linux vypadá fungující grub.cfg následovně:

Kód: [Vybrat]
probe -u $root --set=rootuuid
set imgdevpath="/dev/disk/by-uuid/$rootuuid"

menuentry '[loopback]archlinux-2015.07.01-dual.iso i686' {
set isofile='/boot/iso/archlinux-2015.07.01-dual.iso'
loopback loop $isofile
linux (loop)/arch/boot/i686/vmlinuz archisolabel=ARCH_201507 img_dev=$imgdevpath img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/i686/archiso.img
}

menuentry '[loopback]archlinux-2015.07.01-dual.iso x86_64' {
set isofile='/boot/iso/archlinux-2015.07.01-dual.iso'
loopback loop $isofile
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201507 img_dev=$imgdevpath img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/x86_64/archiso.img
}

Tohle funguje bez jakýchkoli úprav, stačí jen copy paste do [/mnt/foobar]/boot/grub/grub.cfg.

PS: Mimochodem - někdy od ledna 2014 v sobě instalační médium archu obsahuje clonezillu.

technomaniak

Re:Víc Linuxů na jeden flash disk
« Odpověď #24 kdy: 07. 07. 2015, 20:03:13 »
Zdravím, řeší se tu vpodstatě jak píšete live distribuce, resp. instalátory (což jsou dnes většinou live distribuce). Spouštění více různých instalátorů (distribucí) z jednoho flashdisku. Nainstalovat linux na flashdisk ovšem není větší problém, postup je prakticky indentický s klasickou instalací na pevný disk. Jen bych doporučil 1) v /etc/fstab se odkazovat na partition přes UUID (např. v arch linuxu použít genfstab -U -p /mnt). 2) nemít žádný swap 3) plus je potřeba počítat s více drivery, pokud člověk chce tu instalaci na flashdisku používat na více strojích.

Dík, za vysvětlení. Už jsem to vyzkoušel a funguje to ( zatím bez těch vašich bodů ) - Ubuntu 14.04 na 16GB flasku a ta live distribude si dokonce pamatuje mé nastavení, tak zkusím do narvat JDK SE a EE,s WildFly a Tomcat a uvidíme. Takové testovací prostředí mi docela vyhovuje.

test

Re:Víc Linuxů na jeden flash disk
« Odpověď #25 kdy: 14. 07. 2015, 13:00:11 »
asi bych na experimenty spis pouzil SSD a nativni instalaci, ale proc ne.

pro zajemce o fedoru ISO pres GRUB - funkcni, aktualni :

Kód: [Vybrat]
menuentry 'Fedora usb' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod part_msdos
        insmod ext2
        set root='(hd1,gpt9)'
        set CDL=Fedora-Live-WS-x86_64-22-3
        set ISO=Fedora-Live-Workstation-x86_64-22-3.iso
        set ISOPATH=/home/q/Downloads
        loopback loop (hd1,gpt9)$ISOPATH/$ISO
        set ROOTPARMS='rootfstype=auto ro rd.live.image  rd.luks=0 rd.md=0 rd.dm=0 rdblacklist=radeon rdinitdebug'
        linux (loop)/isolinux/vmlinuz0 root=live:CDLABEL=$CDL iso-scan/filename=$ISOPATH/$ISO $ROOTPARMS
        initrd (loop)/isolinux/initrd0.img
}


jaro12

Re:Víc Linuxů na jeden flash disk
« Odpověď #26 kdy: 29. 01. 2016, 19:23:24 »
ok a ak chcem mat na usb disku ( 16GB ) particie 128MB fat32 + 12GB ext4 + 3.782GB ntfs , UUID vieme zistit ale ako by sa malo postupovat v tomto pripade dakujem .

jaro12

Re:Víc Linuxů na jeden flash disk
« Odpověď #27 kdy: 30. 01. 2016, 00:16:32 »
tak moj postup bol nasledovny :

na 16GB usbkey :)

1: cez gparted som si vytvoril 3 oddiely : fat32 128MB - bootovaci ( na particii klikneme prave tlacitko na myske ,vyskoci menu spravovat priznaky ) ,
 EXT4 cca 12GB , ostatne pre istotu NTFS cca 3.98 GB

2: v mnt/ som vytvoril adresar > foobar t.j:.   # mkdir /mnt/foobar
3: potom som si pripojil usb kluc tj:. # mount /dev/sdX1 /mnt/foobar

4: instalacia GRUB prbehla takisto podla prikazov t.j:.

# grub-install /dev/sdX --target=x86_64-efi --removable --root-directory=/mnt/foobar/
# grub-install /dev/sdX --target=i386-pc --recheck --root-directory=/mnt/foobar/

5: zistil som UUID > lsblk -f /dev/sdX   , to som doplnil na riadok v grub.cfg

6: pomocou nano editoru som si vytvoril grub.cfg adresar na usbkey /boot/grub/

Kód: [Vybrat]
probe -u $root --set=rootuuid
set imgdevpath="/dev/disk/by-uuid/279bdb5e-6784-49ad-9441-8a88dbf38899"

menuentry '[loopback]archlinux-2016.01.01-dual.iso i686' {
        set root=(hd0,msdos2)
        set isofile='/iso/archlinux-2016.01.01-dual.iso'
        loopback loop $isofile
        linux (loop)/arch/boot/i686/vmlinuz archisolabel=ARCH_201601 img_dev=$imgdevpath img_loop=$isofile ea$
        initrd (loop)/arch/boot/i686/archiso.img
}
 
menuentry '[loopback]archlinux-2016.01.01-dual.iso x86_64' {
        set root=(hd0,msdos2)
        set isofile='/iso/archlinux-2016.01.01-dual.iso'
        loopback loop $isofile
        linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201601 img_dev=$imgdevpath img_loop=$isofile $
        initrd (loop)/arch/boot/x86_64/archiso.img
}


7:  pripojil som si EXT4 particiu a v nej som vytvoril adresar   iso   do ktoreho som si nahral prislusne iso obrazy ...


8: pokus o nabootovanie :  v mojom pripade som si musel stlacit F8 a vybrat v nom prislusny usb kluc / usbkey :)


9: podakovanie za manual :

renergy

10: snad  moja uprava bude funkcna aj pre ostatnych :)

dufam ze to mam spravne


jaro12

Re:Víc Linuxů na jeden flash disk
« Odpověď #28 kdy: 30. 01. 2016, 22:51:47 »
na renomovanom notebooku *cer r11 to nenabootovalo spravne respektivne vobec max cas 45min testu .. asi tak
v mojom pc to nabootovalo vporiadku ....

jaro12

Re:Víc Linuxů na jeden flash disk
« Odpověď #29 kdy: 18. 01. 2018, 23:31:57 »
zdravim vas po dlhej dobe mate niekto nove riesenie pre tuto problematiku , respektivne novy postup , dakujem ak sa niekto najde ;)