BackTime Opublikowano 11 Kwietnia 2017 Zgłoś Udostępnij Opublikowano 11 Kwietnia 2017 Cześć wszystkim Zmagam się z następującym problem postanowiłem utworzyć pendrive na 1 bootloaderze tj 1 menu zarówno dla uefi jak i legacy problem pojawia się tylko w kilku wpisach. Sam pendrie jest w formacie fat32. Problem polega na tym iż w uefi nie bootuje BCD czyli instalatorów Windows w Legacy działa bez zarzutu. Pytanie czy istnieje plik ntldr.mod ? Jeśli nie to w jaki sposób można zbotować wpis dla uefi dla uruchomienia bcd ? . W legacy wygląda to następująco : menuentry "Instalacja Windows " --class winusb { search --file /boot/bootmgr --set=root insmod ntldr ntldr /boot/bootmgr } Odnośnik do komentarza
Groszexxx Opublikowano 11 Kwietnia 2017 Zgłoś Udostępnij Opublikowano 11 Kwietnia 2017 ntldr to loader dla windowsa 2003, xp. Nie sądzę, żeby o to Ci chodziło. Moim zdaniem Xp nie wspiera UEFI. Mowisz, że nie bootuje instalatorów. BCD jest wczytywany przez bootmgr. Jak chcesz bcd załadować za pomocą ntldr? Przecież ntldr wczytuje boot.ini. Używasz gruba? Jakie ustawienia ma grub? Odnośnik do komentarza
maggreg Opublikowano 11 Kwietnia 2017 Zgłoś Udostępnij Opublikowano 11 Kwietnia 2017 Wpis jest jak najbardziej prawidłowy w legacy, taki po prostu format ma grub2 również dla bootmgr (choć bodajże chainloader --raw też zadziała). Natomiast nie jest to właściwy loader ani komenda dla trybu uefi. W tym trybie należy przygotować oddzielny zestaw startowy również oddzielne BCD. Przykładowy wpis dla efi może wyglądać nastepująco: menuentry "WDS"{ search --no-floppy --fs-uuid --set=root 1472ccef1472ccef chainloader "/efi/microsoft/boot/bootmgfw.efi" } W tym przykładzie loader znajduje się na partycji NTFS stąd długość uuid, dla fat32 byłoby to coś w stylu "--set=root 188A-FF56" przy czym jeżeli loader znajduje się na tej samej partycji z której startuje grub nie musimy ustawiać nowego "root".Pamiętajmy, że dla konfiguracji efi również w ścieżce "/efi/microsoft/boot/" musi się również znaleźć bootmgr.efi oraz BCD. W zależności jakie w-kompilowaliśmy moduły w grub2 może też zaistnieć potrzeba załadowania niektórych z nich przed powyższym wpisem, np.: insmod efi_gop insmod efi_uga insmod part_msdos insmod part_gpt Ten ostatni oczywiście tylko jeżeli pen/dysk ustawiliśmy w tryb gpt. Nadmienię tutaj, że grub2 pozwala na pewną automatyzację za pomocą skryptów i np. wyszukanie wszystkich loaderów które mogą się nadawać do chainloadu, przykład wpisu który robi coś takiego: function efi_detect { submenu --class=find.efi --hotkey=f "Loadery EFI" { for efi in (*,gpt*)/efi/*/*.efi (*,gpt*)/efi/*/*/*.efi (*,gpt*)/*.efi (*,gpt*)/*/*.efi (*,msdos*)/efi/*/*.efi (*,msdos*)/efi/*/*/*.efi (*,msdos*)/*.efi (*,msdos*)/*/*.efi; do regexp --set=1:efi_device '^\((.*)\)/' "${efi}" if [ -e "${efi}" ]; then menuentry --class=efi "${efi}" "${efi_device}" { root="${2}" chainloader "${1}" } fi done menuentry --hotkey=q --class=cancel "return" { configfile "${prefix}/grub.cfg" } } } export firmware_found insmod regexp insmod probe export loaded efi_detect Tyle tytułem wstępu w razie potrzeby służę szczegółami. edit. Powyższy skrypt jest lekko przerobioną wersją skryptu znalezionego na iso manjaro, jego wersja dla trybu legacy to coś na ksztalt: function win_detect { submenu --class=find.win --hotkey=f "Loadery Windows" { for win in (*,msdos*)/boot/bootmgr (*,msdos*)/bootmgr ; do regexp --set=1:win_device '^\((.*)\)/' "${win}" if [ -e "($win_device)/boot/bcd" ]; then menuentry --class=efi "${win}" "${win_device}" { root="${2}" ntldr "${1}" } fi done menuentry --hotkey=q "return" { configfile "${prefix}/grub.cfg" } } } insmod regexp insmod probe win_detect Proszę nie zwracać uwagi na ustawienia class - na ich podstawie grub może pokazać ikonki przy poszczególnych wpisach jeżeli mamy odpowiednio ustawiony temat graficzny. Tytułem uzupełnienia - podstawowa różnica w bcd: efi: Windows Boot Manager -------------------- identifier {bootmgr} description Windows Boot Manager locale pl-PL default {default} displayorder {default} timeout 30 Windows Boot Loader ------------------- identifier {default} device ramdisk=[boot]\instalki\winpe.wim,{ramdiskoptions} path \Windows\system32\boot\winload.efi description Instalki locale pl-PL osdevice ramdisk=[boot]\instalki\winpe.wim,{ramdiskoptions} systemroot \Windows bootmenupolicy Legacy detecthal Yes winpe Yes Setup Ramdisk Options --------------------- identifier {ramdiskoptions} ramdisksdidevice boot ramdisksdipath \boot\boot.sdi vs legacy: Windows Boot Manager -------------------- identifier {bootmgr} description Windows Boot Manager locale pl-PL default {default} displayorder {default} timeout 30 Windows Boot Loader ------------------- identifier {default} device ramdisk=[boot]\instalki\winpe.wim,{ramdiskoptions} path \windows\system32\boot\winload.exe description Instalki locale pl-PL inherit {bootloadersettings} osdevice ramdisk=[boot]\instalki\winpe.wim,{ramdiskoptions} systemroot \windows bootmenupolicy Standard detecthal Yes winpe Yes ems No Device options -------------- identifier {ramdiskoptions} ramdisksdidevice boot ramdisksdipath \boot\boot.sdi Proszę zwrócić uwagę na wpis w zmiennej "path". pzdr Odnośnik do komentarza
BackTime Opublikowano 12 Kwietnia 2017 Autor Zgłoś Udostępnij Opublikowano 12 Kwietnia 2017 (edytowane) Cześć dziękuje za wyjaśnienie niestety nie mogę poradzić sobie z tematem ... czy można prosić o pomoc i gotowy wpis dla tego tematu ? Kolejne pytanie w jaki sposób w grub 2 można załadować obraz iso do ram chodzi dokładnie o 2 dystrybucje Live OS skompilowane za pomocą : http://theoven.org/ oraz kolejny problem z mem testem działa tylko w trybie efi oraz osobno w legacy (czy wpis jest prawidłowy dla legacy ?) : legacy menuentry "Memtest86+ 7.3" --class icon-memtest{ echo "Proszę czekać..." set iso="/iso/Memtest86-7.3.iso" linux16 /boot/syslinux/memdisk iso initrd16 (hd0,1)$iso } efi menuentry "Memtest86+ 7.1 (64)" --class icon-memtest{ echo "Proszę czekać..." chainloader /iso/MemTest_7.1/efi/boot/bootx64.efi } grub.txt Edytowane 12 Kwietnia 2017 przez BackTime Odnośnik do komentarza
maggreg Opublikowano 12 Kwietnia 2017 Zgłoś Udostępnij Opublikowano 12 Kwietnia 2017 Nie bardzo rozumiem z czym sobie nie radzisz, nie wiszę w ogóle w załączonym pliku odniesienia do loadera efi. Może na początek mój plik dla efi na dysku (raczej testowy, częściej sięgam po boot z sieci) set default="0" if loadfont $prefix/unicode.pf2; then set gfxmode=auto insmod efi_gop insmod efi_uga insmod gfxterm insmod font export firmware_found insmod regexp insmod probe terminal_output gfxterm terminal gfxterm insmod part_msdos insmod part_gpt fi set hidden_timeout_quiet=false load_video set gfxpayload=keep insmod gzio insmod png use_bg=true if background_image $prefix/Gsplash.png; then set color_normal=white/black set color_highlight=white/blue fi menuentry "WDS"{ search --no-floppy --fs-uuid --set=root 01D22F1BB30D9540 chainloader "/efi/microsoft/boot/bootmgfw.efi" } menuentry "Syslinux"{ search --no-floppy --fs-uuid --set=root 7921-5E88 chainloader "/EFI/syslinux/syslinux.efi" } menuentry "memtest"{ search --no-floppy --fs-uuid --set=root 7921-5E88 chainloader "/EFI/memtest/memtest.efi" } menuentry "konboot"{ search --no-floppy --fs-uuid --set=root 7921-5E88 chainloader "/EFI/boot/konboot.efi" } menuentry "rufus"{ search --no-floppy --fs-uuid --set=root 7921-5E88 chainloader "/EFI/boot/rufus.efi" } menuentry "shell edk2"{ search --no-floppy --fs-uuid --set=root 7921-5E88 chainloader "/EFI/boot/edk2/shell_x64.efi" } menuentry "shell udk2014"{ search --no-floppy --fs-uuid --set=root 7921-5E88 chainloader "/EFI/boot/udk2014/shell_x64.efi" } menuentry "clover"{ search --no-floppy --fs-uuid --set=root 7921-5E88 chainloader "/EFI/boot/CLOVERX64.efi" } menuentry "ipxe"{ search --no-floppy --fs-uuid --set=root 7921-5E88 chainloader "/EFI/boot/ipxe.efi" } menuentry "ipxe clean"{ search --no-floppy --fs-uuid --set=root 7921-5E88 chainloader "/EFI/boot/ipxe-clean.efi" } menuentry "ipxe asix"{ search --no-floppy --fs-uuid --set=root 7921-5E88 chainloader "/EFI/boot/axge.efi" } menuentry "Manjaro Cinnamon" { search --no-floppy --fs-uuid --set=root 01D22F1BB30D9540 set isofile="/live/manjaro-cinnamon-16.10.3-stable-x86_64.iso" set mlabel="MJRO1610" set archi="x86_64" set dri="nonfree" search --no-floppy -f --set=root $isofile loopback loop $isofile linux (loop)/manjaro/boot/$archi/manjaro earlymodules=loop img_dev=/dev/disk/by-uuid/01D22F1BB30D9540 img_loop=$isofile misobasedir=manjaro misolabel=$mlabel i915.modeset=1 logo.nologo overlay=$dri $dri=yes initrd (loop)/manjaro/boot/intel_ucode.img (loop)/manjaro/boot/$archi/manjaro.img } menuentry "Clonezilla 64"{ search --no-floppy --fs-uuid --set=root 01D22F1BB30D9540 linux /live/clonezilla/64b/vmlinuz boot=live live-media-path=/live/clonezilla/64b toram=filesystem.squashfs union=overlay username=user config components quiet noswap edd=on nomodeset noeject locales=pl_PL.UTF-8 keyboard-layouts=pl ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0 nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 initrd /live/clonezilla/64b/initrd.img } menuentry "Clonezilla 32"{ search --no-floppy --fs-uuid --set=root 01D22F1BB30D9540 linux /live/clonezilla/32b/vmlinuz boot=live live-media-path=/live/clonezilla/32b toram=filesystem.squashfs union=overlay username=user config components quiet noswap edd=on nomodeset noeject locales=pl_PL.UTF-8 keyboard-layouts=pl ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0 nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 initrd /live/clonezilla/32b/initrd.img } menuentry "instalki" { search --no-floppy --fs-uuid --set=root 01D22F1BB30D9540 linux16 /boot/wimboot rawbcd index=1 gui initrd16 \ newc:bcd:/efi/microsoft/boot/bcd_uefi \ newc:boot.sdi:/boot/boot.sdi \ newc:boot.wim:/instalki/winpe.wim } menuentry "test disk"{ for dev in (*); do regexp -s device '\((.*)\)' $dev if [ ! -z "${device}" ]; then if strcontains "$device" "," ; then probe -s fstype -f $dev probe -s uuid -u $dev probe -s label -l $dev echo $dev - $fstype - $uuid - $label fi fi set fstype= set device= set uuid= set label= done sleep -v -i 90 } function strcontains { set str="$1" set pattern="$2" if regexp ".*${pattern}.*" "$str"; then return 0; else return 1; fi } submenu "Super grub" { menuentry "SG" { configfile "${prefix}/sg/main.cfg" } menuentry "return" { configfile "${prefix}/grub.cfg" } } function efi_detect { submenu --class=find.efi --hotkey=f "Loadery EFI" { for efi in (*,gpt*)/efi/*/*.efi (*,gpt*)/efi/*/*/*.efi (*,gpt*)/*.efi (*,gpt*)/*/*.efi (*,msdos*)/efi/*/*.efi (*,msdos*)/efi/*/*/*.efi (*,msdos*)/*.efi (*,msdos*)/*/*.efi; do regexp --set=1:efi_device '^\((.*)\)/' "${efi}" if [ -e "${efi}" ]; then menuentry --class=efi "${efi}" "${efi_device}" { root="${2}" chainloader "${1}" } fi done menuentry --hotkey=q "return" { configfile "${prefix}/grub.cfg" } } } efi_detect menuentry "Reboot" { reboot } menuentry "Shutdown" { halt } Staram się trzymać oddzielnie konfiguracje dla grub2 efi i grub2 legacy, i tak musimy mieć oddzielne loadery wiec można rozdzielić pliki. Jeżeli nie chcesz dublować katalogów to można np. rozbić je z pomocą takiego zabiegu jaki masz przy ładowaniu modułów: grub.cfg: if [ "${grub_platform}" = "efi" ]; then configfile "${prefix}/menuefi.cfg" fi if [ "${grub_platform}" == "pc" ]; then configfile "${prefix}/menulegacy.cfg" fi w przeciwnym razie dobrze by było otagować same pozycje niekompatybilne z daną architekturą. np.: menuentry "Instalacja Windows " --class winusb { if [ "${grub_platform}" == "pc" ]; then insmod ntldr ntldr /boot/bootmgr fi if [ "${grub_platform}" == "efi" ]; then chainloader /EFI/MICROSOFT/BOOT/bootmgfw.efi fi } if [ "${grub_platform}" == "pc" ]; then menuentry "Windows 10 Live Rescue Disk" --class win{ echo "Proszę czekać..." set iso="/iso/Win10PESE.iso" linux16 /boot/grub/memdisk iso initrd16 (hd0,1)$iso } fi Nie wiem czy sięganie po memdisk jest dobrym pomysłem, grub ma własny system loopback który odwołuje się bezpośrednio do plików w iso i pomija problem dostępu do plików na wirtualnym napędzie, niby działa ale bardzo wrażliwe na konfigurację pamięci. Poza tym ograniczasz się do konfiguracji legacy, memdisk nie zadziała w efi. Można sięgnąć po wimboot (choć ten znów jest bardzo kapryśny w efi): menuentry "wimboot DaRT8.1.iso" { insmod udf set isofile="/iso/DaRT8.1.iso" loopback loop $isofile linux /syslinux/wimboot initrd \ newc:bcd:(loop)/efi/microsoft/boot/bcd \ newc:boot.sdi:(loop)/boot/boot.sdi \ newc:boot.wim:(loop)/sources/boot.wim } Wygodniej rozpakować sam wim do wybranego katalogu (domyślnie sourcess) i dodać do głównego bcd.Ja mam np. taki zestaw: Jeżeli natomiast chcesz uniknąć podwójnego menu to sięgasz po wimboot: menuentry "instalki" { linux /syslinux/wimboot rawbcd index=1 gui initrd \ newc:bcd:/wp/bcd_uefi \ newc:boot.sdi:/boot/boot.sdi \ newc:boot.wim:/instalki/winpe.wim } choć jeszcze raz powtórzę, ten ma problemy w efi Jak widzisz mam na liście 10pe-se z http://theoven.org/ ale uruchamiany bezpośrednio z wim a nie iso. Trudno mi coś napisać o memtestach z grub2, memtest.efi działa jako normalna aplikacja efi natomiast z wersjami legacy zawsze był kłopot. Ja prawdę mówiąc w trybie legacy korzystam raczej z grub4dos niż z grub2 i wygląda to tak: title memtest+ kernel /boot/memtestp.bin title memtest kernel /boot/memtest tutaj raczej chodzi konkretnie o typ pliku (memtesty są rozprowadzane różnie, jako obraz dyskietki, obraz elf itp) i niektóre sprawiają kłopot startowane inaczej niż z bootsektora czy z syslinuxa.Ok sprawdziłem i nie widzę problemu z botem memtest w grub2 legacy, zarówno z obrazów dyskietek jak i binarki, działają obie gałęzie (86 i 86+): menuentry "Memtest86+" { linux16 /wp/memtestp.bin } menuentry "Memtest" { linux16 /wp/memtest } menuentry "Memtest86+ floppy image" { linux16 /syslinux/memdisk initrd16 /wp/memtestp.img } menuentry "Memtest floppy image" { linux16 /syslinux/memdisk initrd16 /wp/memtest86-floppy.img } pzdr Odnośnik do komentarza
BackTime Opublikowano 14 Kwietnia 2017 Autor Zgłoś Udostępnij Opublikowano 14 Kwietnia 2017 Niestety mam błąd w przypadku efi dla Windows : menuentry "Windows 10 64 bit" --class win{ echo "Proszę czekać..." chainloader /WINSETUP/W10x64/bootmgr.efi } Odnośnik do komentarza
maggreg Opublikowano 14 Kwietnia 2017 Zgłoś Udostępnij Opublikowano 14 Kwietnia 2017 Dlatego, że bootmgr.efi nie posiada odpowiedniego stuba dla gruba . bootmg.efi nie jest właściwym plikiem do chainu, właściwy jest bootmgrfw.efi (może mieć nazwę bootx64.efi ale to ten sam plik). Pamiętaj też, że nawet jeżeli przeniesiesz plik w niestandardową lokację to bcd i tak musi się znaleźć w /efi/microsoft/boot inaczej bootloader go nie znajdzie. Najlepiej całość (bootmgrfw.efi, bootmgr.efi i bcd) trzymać w tej lokacji, pamiętaj że bez znaczenia ile będziesz chciał odpalić różnych pe to powinny one korzystać z jednego zestawu. Obejściem jest wimboot ale jak pisałem nie działa w grub efi (wersja efi działa tylko z ipxe). Podsumowując - układ powinien być taki: /boot/boot.sdi /efi/microsoft/boot/bootmgr.efi /efi/microsoft/boot/bootmgrfw.efi /efi/microsoft/boot/bcd /sources/winpe1.wim /sources/winpe3.wim /sources/winpe2.wim czyli poprawny wpis powinien brzmieć: menuentry "Windows 10 64 bit" --class win{ echo "Proszę czekać..." chainloader /efi/microsoft/boot/bootmgrfw.efi } Jeszcze jedno - sprawdzałeś już swoje poszczególne pozycje?Wg. mojego pobieżnego spojrzenia nie wszystkie odpalą, choćby popularny mint nie ruszy z tak podanego loopback, poprawny wpis to np: menuentry "Linux Mint 18.1 Cinnamon LTS RC (x64)" { set iso=/boot/iso/linuxmint-18.1-cinnamon-64bit.iso loopback loop $iso linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$iso noeject noprompt initrd (loop)/casper/initrd.lz } Ważny jest ten przełącznik który powstrzyma system przed wysunięciem virtualnego napędu podczas startu (noeject). Dobrym miejscem z przykładami jest strona arch-a: https://wiki.archlinux.org/index.php/Multiboot_USB_drive Pozwolę sobie też wkleić poradę z naszej prywatnej konwersacji, może się komuś przyda. Wystarczą pliki z windowsa: C:\Windows\Boot\EFI >> \efi\microsoft\boot pakiety językowe możesz sobie darować, wystarczą pliki boomgr.efi i bootmgrfw.efi (ten plik jest w 100% tym samym co bootx64.efi w wersji windowsowej) bcd na początek możesz spróbować domyślny układ to plik \sourcess\boot.wim oczywiście trzeba też wrzucić ramdysk (plik boot.sdi) do katalogu \boot Odpowiednie pliki też zawsze znajdziesz w samym winpe, jak otworzysz plik winpe.wim (np. boot.wim z płyty windowsa) w 7zip to w katalogu \windows\boot masz wszystko co potrzebne, w katalogu efi masz to co powyżej, w dvd przykładowe efi dla obu architektur i ramdisk, w pcat bootmgr dla trybu legacy. Nie wiem czy to dobry pomysł z moim bcd, używa specyficznego układu katalogów proponuję raczej ułożyć sobie własne wpisy, np bootice daje opcję bardzo szybkiego ułożenia własnego menu. W trybie easy wystarczy ze dasz add > wim i ustawisz ścieżkę do swojego obrazu. Przykład na szybko pzdr Odnośnik do komentarza
BackTime Opublikowano 15 Kwietnia 2017 Autor Zgłoś Udostępnij Opublikowano 15 Kwietnia 2017 (edytowane) Pojawia się kolejny problem jeśli pozostawię plik : /boot/boot.sdi /efi/microsoft/boot/bootmgr.efi /efi/microsoft/boot/bootmgrfw.efi /efi/microsoft/boot/bcd wówczas w qemu wymuszany jest tryb efi natomiast pc podczas bootowania nie wykrywa trybu efi i działa tylko w legacy jeśli pliki pozostawię w katalogu: /microsoft/boot/bootmgr.efi /microsoft/boot/bootmgrfw.efi /microsoft/boot/bcd wówczas tryb efi bootowania działa ale menu dla efi nie działa pojawia się albo czarny ekran albo : poniżej wpis : menuentry "Windows Installer / Live (Legacy/UEFI)" --class win { if [ "${grub_platform}" == "pc" ]; then echo "Proszę czekać..." insmod ntldr ntldr /boot/bootmgr fi if [ "${grub_platform}" == "efi" ]; then echo "Proszę czekać..." chainloader /MICROSOFT/BOOT/bootmgfw.efi fi } BCD było edytowanie nie tworzyłem nowego BCD - czy w tym tkwi problem ? Czy może ktoś podesłać paczkę z gotowym katalogiem boot ? Edytowane 15 Kwietnia 2017 przez BackTime Odnośnik do komentarza
maggreg Opublikowano 15 Kwietnia 2017 Zgłoś Udostępnij Opublikowano 15 Kwietnia 2017 Zrób listing pełny tego bcd: bcdedit /store "ścieżka do bcd" /enum all boot.sdi musi być dostąpny dla winpe natomiast jego konkretne położenie również możemy zmienić (patrz "sdi file" w edytorze). Natomiast ta sieczka wskazuje na problem z ustawieniem graficznym, albo sterownik podawany przez grub jest nieprawidłowy albo tryb graficzny, spróbuj zostawić tryb auto w grub.cfg i ew. odpal bez odwołania się do tematu graficznego (themes). pzdr Odnośnik do komentarza
BackTime Opublikowano 15 Kwietnia 2017 Autor Zgłoś Udostępnij Opublikowano 15 Kwietnia 2017 Zmiana na auto nie pomogła wskazanie sdi prawidłowe , podmiana bcd czy utworzenie bcd na nowo - efekt taki sam jak wyżej tj czarny ekran po poruszaniu strzałkami wygląd jak na screenie wyżej . Odnośnik do komentarza
maggreg Opublikowano 15 Kwietnia 2017 Zgłoś Udostępnij Opublikowano 15 Kwietnia 2017 Spróbuj bez uruchamiania modułu graficznego lub tylko jeden z nich: insmod efi_gop insmod efi_ugaGrub kompilujesz sam czy używasz jakieś gotowej wersji (jaka?)?Spróbuj kombinacji pośrednika: grub > efishell > bootmgrfw albo efishell > grub > bootmgr efishell może uruchomić przy starcie z automatu wybraną pozycję, wystarczy w katalogu root wrzucić skrypt "startup.nsh": echo Botowanie Grub blk0:\efi\boot\bootx64.efi pzdr Odnośnik do komentarza
BackTime Opublikowano 19 Października 2017 Autor Zgłoś Udostępnij Opublikowano 19 Października 2017 Temat pozwolę sobie odświeżyć następujące problemy : menuentry "Find BOOTMGR (Vista/7/8/8.1/10)" --class windows { echo "Proszę czekać..." insmod part_msdos insmod ntldr insmod ntfs ntldr (hd1,msdos1)/bootmgr } menuentry "Find NTLDR (XP)" --class xorboot { echo "Proszę czekać..." insmod part_msdos insmod ntldr insmod ntfs ntldr (hd1,msdos1)/ntldr } W powyższych na sztywno ustawione jest dysk - pytanie jak dodać metodę search tak aby wyszukała partycję rozruchową ? Kolejne w jaki sposób wywołać i prawidłowo wczytać obraz instalatora XP ? - poniższe nie działa : menuentry "Windows Installer XP" --class icon-xp { echo "Proszę czekać..." insmod part_msdos insmod ntldr insmod ntfs set iso="/iso/WinXP.iso" linux16 /boot/syslinux/memdisk iso initrd16 (hd0,1)$iso } Proszę o pomoc w rozwiązaniu powyższych problemów. z góry THX Odnośnik do komentarza
maggreg Opublikowano 20 Października 2017 Zgłoś Udostępnij Opublikowano 20 Października 2017 Już miałeś (może nie do końca poprawną) konstrukcję wyszukującą: search --file /bootmgr --set=root Oczywiście najpierw trzeba wczytać odpowiedni moduł. No i pamiętaj, że plik bootmgr znajduje się raczej w głównym katalogu partycji a nie w boot. Instalkę xp sobie daruj - to nic nie da, nawet jak odpalisz fazę tekstową to i tak nie uzyskasz dostępu do nośnika instalacyjnego a bez tego instalator się wysypie. Możesz spróbować przygotować system w formacie jaki podałem w tym opisie: https://www.fixitpc.pl/topic/2499-instalacja-systemow-z-pendriva/ ale nie wiem czy warto jeszcze tracić czas na xp. pzdr Odnośnik do komentarza
BackTime Opublikowano 30 Października 2017 Autor Zgłoś Udostępnij Opublikowano 30 Października 2017 Rozumiem iż dobrym wpisem jest : menuentry "Windows XP" { insmod ntfs search --set=root --label WINDOWS_XP --hint hd0,msdos1 ntldr /ntldr } menuentry "Windows 7" { insmod ntfs search --set=root --label WINDOWS_7 --hint hd0,msdos2 ntldr /bootmgr } ?? Odnośnik do komentarza
maggreg Opublikowano 2 Listopada 2017 Zgłoś Udostępnij Opublikowano 2 Listopada 2017 Wszystko zależy od kryteriów wyszukiwania jakie sobie przyjmiesz, im mniejsza dynamika zmian w danym środowisko tym kryteria mogą być węższe. W twoim przykładzie mamy ustawienie fokusu wyszukiwania na konkretne partycje - szukaj na pierwszej partycji (msdos1) pierwszego dysku (hd0) i jeżeli partycja ma label/nazwę "WINDOWS_XP" to ustaw ją jako root i analogicznie drugi przykład - szukaj na drugiej partycji (msdos2) pierwszego dysku (hd0) i jeżeli ma nazwę "WINDOWS_7" to ustaw jako root. Warto zwrócić uwagę, że dyski są liczone od zera a partycje od jedynki. Przy takim zapisie oczywistym jest, że jeżeli zmieni się kolejność dysków, kolejność partycji na dysku to taki system nie zabotuje. I teraz przykład który ja podałem: search --set=root --file /bootmgr czyli szukaj partycji na której w głównym katalogu znajduje się plik bootmgr i ustaw jako root jest o wiele bardziej uniwersalny ale problemem jest multi boot (wiele partycji z /bootmgr na rożnych partycjach, również różnych dyskach) wtedy root ustawi się na pierwszy znaleziony. Dla mnie najbardziej uniwersalnym fokusem jest identyfikator partycji, raczej nie zdarza się aby nie był unikalny czyli podawane już w przykładach: search --no-floppy --set=root --fs-uuid 1472ccef1472ccef tutaj widzimy identyfikator partycji ntfs (łatwo poznać po podwojeniu ciągu) który ustawi fokus zawsze na tę partycję, uuid zmieni się dopiero kiedy ją sformatujemy, przesuwanie w strukturze dysku nie zmieni identyfikatora, nie ma też znaczenie label - fokus zawsze trafi. pewnym problemem może być jego uzyskanie jeżeli nie czujmy się dobrze w konsoli gruba czy uniksie wtedy możemy sobie stworzyć na partycji plik o unikatowe nazwie który będzie swego rodzaju znacznikiem i ustawiać fokus wyszukiwania na jego wystąpienie, np umieszczamy na naszej partycji w katalogu znacznik plik zn01 i ustawiamy wyszukiwanie na: search --no-floppy --set=root --file /znacznik/zn01 Mam nadzieję, że jest to zrozumiałe. pzdr Odnośnik do komentarza
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się