Faceți căutări pe acest blog

vineri, 2 decembrie 2016

Boot non-Linux iso images from hdd with Grub2 (and memdisk)

 După cum amicul @derzis a avut amabilitatea să-mi atragă atenția, putem boota sisteme de operare non-Linux direct din imaginile iso descărcate pe hdd. Sunt trecute și-n materialul original (http://stressat.blogspot.ro/2014/04/boot-iso-images-from-hdd-grub2.html) și-n lista distribuțiilor ce bootează direct din imaginea iso descărcată pe hdd, le trec și aici. Pe parcurs lista se poate mări, sau puteți încerca singuri alte OS-uri acum că știți metoda.
FreeDOS
Hiren'sBootCD
KolibriOS
MenuetOS
ReactOS
UltimateBootCD
Windows XP

CERINȚE
1- imaginea iso a OS-ului respectiv- o descărcați de pe net:
2- un fișier memdisk, va fi folosit pe post de kernel- descărcați syslinux-4.05 (https://www.kernel.org/pub/linux/utils/boot/syslinux/), îl dezarhivați, în directorul rezultat găsiți sub-directorul memdisk ce conține un fișier numit memdisk. Acest fișier memdisk e ceea ce ne trebuie. Îl copiați undeva și dați calea către el în menuentry.
 În exemplele următoare imsginile iso sunt descărcate toate pe partiția /dev/sda2, în directorul /dan/Downloads/ISO, iar fișierul memdisk e în /dan/Downloads. Unele imagini iso e posibil să trebuiască dezarhivate (dau ca exemplu KolibriOS, primul menuentry KolibriOS e pentru imagine dezarhivată, al doilea pentru boot direct din iso...), la altele e necesar să le redenumim pentru a nu primi erori (Hiren'sBootCD de exemplu).Modificați după caz căile.
 O metodă comodă de-a salva menuentry e să evităm scrierea în /etc/grub.d/40_custom și actualizarea periodică a Grub2 prin crearea unui fișier text undeva în /home/user  (eu l-am numit iso-grub) și pasarea acestuia în /etc/grub.d/40_custom:
menuentry "ALL ISO" {
configfile (hd0,2)/dan/iso-grub
}


urmată de actualizarea Grub2:
sudo grub-mkconfig -o /boot/grub/grub.cfg         #pentru Arch
sudo update-grub                                               #pentruUbuntu

 Pe viitor putem modifica de oricâte ori fișierul iso.grub adăugând sau ștergând menuentry  fără să fim nevoiți să actualizăm baza de date a Grub2.

 EXEMPLE FUNȚIONALE
menuentry "KolibriOS-dezarhivat" {
set root='(hd0,2)'
set isofile="/dan/Downloads/ISO/kolibrios/kolibri.iso"
loopback loop (hd0,2)$isofile
linux16
/dan/Downloads/memdisk
initrd16 /kolibrios/kolibri.img
}

menuentry "KolibriOS" {
set root='(hd0,2)'
linux16 /dan/Downloads/memdisk iso nomodeset
initrd16 /dan/Downloads/ISO/kolibri.iso
}

menuentry "MenuetOS" {
set root='(hd0,2)'
linux16 /dan/Downloads/ISO/M6412420/memdisk iso
initrd16 /dan/Downloads/M6412420/M6412420.IMG
}

menuentry "Ultimate Boot CD" {
set root='(hd0,2)'
linux16 /dan/Downloads/memdisk iso
initrd16 /dan/Downloads/ISO/ubcd536.iso
}
menuentry "Hiren 15.2" {
set root='(hd0,2)'
linux16 /dan/Downloads/memdisk iso
initrd16 /dan/Downloads/ISO/HBCD15.2.iso
}

menuentry "FreeDos" {
set root='(hd0,2)'
linux16 /dan/Downloads/memdisk iso
initrd16 /dan/Downloads/ISO/FD12CD.iso

menuentry "ReactOS" {
set root='(hd0,2)'
linux16 /dan/Downloads/memdisk iso
initrd16 /dan/Downloads/ISO/ReactOS-0.4.3-live.iso

menuentry "Window XP" {
set root='(hd0,2)'
linux16 /dan/Downloads/memdisk iso
initrd16 /dan/Downloads/ISO/win-xp.iso



 PS: dacă aveți parte de BSOD la windows (xp, 7) sau Hiren'nBootCD (are inclus un mini XP), ceva legat de ACPI puteți modifica din BIOS, setați pe opțiunile implicite/ sigure, vedeți dacă aveți opțiunea de-a dezactiva ACPI, setați la OS Optimize pe windows 7 și USB Mode pe USB 2.0 și BIOS în Legacy Mode, nu UEFI. Depinde de BIOS, mie-mi merg ok pe laptopul vechi Samsung, dar a trebuit să iau BIOS-ul la puricat pe cel nou Lenovo...
 Sau puteți dezactiva ACPI apăsând F7 sau Fn+F7 în momentul când apare mesajul ”Press F6 to...”.
 

8 comentarii:

  1. Ceva nu-mi merge.
    Paşii executaţi:
    1) În /home/user/iso/ am fişierul memdisk plus o imagine iso Hiren's Boot CD - HDCF15_2.iso
    2) Tot în acea mapă am fişierul iso-grub cu următorul conţinut:
    menuentry "Hiren 15.2" {
    set root='(hd1,msdos1)'
    linux16 /home/user/iso/memdisk iso
    initrd16 /home/user/iso/HBCD15_2.iso
    }
    3) În fişierul /etc/grub.d/40_custom am adăogat:
    menuentry "ALL ISO" {
    configfile (hd1,msdos1)/home/user/iso/iso-grub
    }
    4) Actualizat GRUB: sudo update-grub
    Cînd pornesc calculatorul, în Grub am o intrare ALL ISO, dar cînd o accesez nimic nu se întîmplă - revine în meniul cu intrări.
    Menţionez că am 2 hdd: sda / ntfs - păstrez date, sdb1 / ext4 - am pus Ubuntu. Am încercat să pun şi (hd1,1) apoi am analizat setările din /boot/grub/grub.cfg unde era indicat (hd1,msdos1) pentru intrarea ce răspunde de Ubuntu.

    RăspundețiȘtergere
    Răspunsuri
    1. Problema pare să fie calea greșită către memdisk și imaginea iso. În menuentry nu ar trebui să fie calea de forma /home/user/..., ci doar /user/...
      Să-ți explic. Partiția respectivă este montată de OS-ul tău în directorul /home, este /home pentru OS, nu pentru Grub2. Pentru Grub acea partiție este /.

      Ștergere
    2. Mulţumesc pentru sugestie.
      Am editat calea să fie fără /home şi oricum fără efect. Presupun că problema ar fi în (hd1,1) - căci din cîte citesc pe forumuri, se spune că Grub2 începe să numere hdd şi partiţiile de 1. Acest moment nu prea îmi este clar.

      Ștergere
    3. Ai modificat si-n /etc/grub.d/40_custom fara /home? Dupa care sudo update-grub pentru actualizare. Scuze, se pare c-am uitat sa precizez, banuiam ca e clar dupa exemplu dat.
      In cazul tau e ok (hd1,1)sau (hd1,msdos1) pentru partitionare MBR sau (hd1,gpt1) pentru partitionare GPT cu conditia ca partitia ta /home sa fie /dev/sdb1, si sa fie partitie dedicata, nu director in /!!! Daca e dedicata si e a doua (/dev/sdb2) atunci modifici in (hd1,2).

      Ar trebuis sa spui exact cum e partitionat /dev/sdb, sunt prea multe variabile...

      Ștergere
    4. Asta e şi problema: /dev/sdb1 e singura partiţie care conţine şi root şi home pe ea - home nu stă pe partiţie dedicată, ci e directoriu în root.

      Ștergere
    5. Pai in cazul asta calea si-n menuentry si-n /etc/grub.d/40_custom ar trebui sa fie /home/user/iso/....
      Imaginea iso (Hiren's Boot CD - HDCF15_2.iso)redenumeste-o HBCD15, caractere precum ' sau " creeaza probleme, poate-o fi cazul si cu _.
      Si (hd1,1) e ok atumci.

      Ștergere
  2. Funcţionează pt HBCD.
    Acum am adăogat în fişierul /home/user/iso/iso-grub următoarea intrare pt Parted Magic:
    menuentry 'Parted Magic' {
    set isofile="/home/user/iso/pmagic20161018.iso"
    loopback loop (hd0,1)$isofile
    linux (loop)/pmagic/bzImage64 edd=off load_ramdisk=1 prompt_ramdisk=0 rw livemedia noeject loglevel=9 max_loop=256 vmalloc=384MiB iso_filename=/home/user/iso/pmagic20161018.iso panic=4
    initrd (loop)/pmagic/initrd.img (loop)/pmagic/fu.img (loop)/pmagic/m64.img/home
    }
    În Grub apare intrearea dată, la accesare primesc aşa mesaj:
    error: Not a directory
    Press any key to continue...
    Apoi aşa ceva:
    http://imgur.com/a/EmDTx
    Apropo, mulţumesc mult pentru ajutor şi pentru articolele ce le scrii. Sunt abonat prin rss la postările de pe blog-ul dat de cîţiva ani.

    RăspundețiȘtergere
    Răspunsuri
    1. Ala-i kernel panic! E vorba tot de /de/sdb, nu? Calea ar trebui sa fie (hd1,1)$isofile, dar ar trebui sa ai mesaj de eroare ca nu gaseste kernel, imagine, etc, nu kernel panic... Incearca totusi cu (hd1,1).

      Ștergere

Back to top