GRUB default OS boot beállítása Windowsból

Fórumok

Van ennél kényelmesebb, felhasználóbarátabb mód arra, hogy működő Windows alól be lehessen állítani, hogy következő reboot után másik OS, például Linux bootoljon be default rendszerként?

Természetesen egy dual-boot gépen.

Hozzászólások

azt nem tudom, de a /etc/default/grub fájlba beállíthatod a hogy mentse az utoljára kijelölt menüpontot.

/etc/default/grub:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

aztán indítsd ezt

sudo update-grub

Ez így elég nyakatekert ötlet, de ha ez kell, hát ez kell. Már telepített rendszerekre utólag elég barkács megoldásokat lehet leginkább összehozni, hacsak nem telepítetted véletlen a grub konfigját külön fat32 particióra. Ez utóbbi esetben egyszerűen szerkeszthető win alól is.

A fentebb említett grub2win megoldja, de ennyi erővel tetszőleges windowsra is telepíthető, linuxot is tudó booloadert fel lehetne dobni, de akkor meg ott marad a kényelmetlenség, hogy ha ugyanezt linux alól akarod átbillenteni, akkor onnan kell fat/ntfs partición matatni konfigot valamivel.

létezik win-hez ext2-4 fájlrendszer.

ubuntu 20.04 friss telepítése pedig eleve fatra formázza az efi-boot partíciót

~$ sudo fdisk -l

...

Disk /dev/sda: 931,53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 860 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B0817C19-8E20-43F2-8B0A-2070F7B6102E

Eszköz       Start       Vége  Szektorok  Size Típus
/dev/sda1     2048    1050623    1048576  512M EFI System
/dev/sda2  1050624    5244927    4194304    2G Linux lapozó
/dev/sda3  5244928    9439231    4194304    2G Solaris indító
/dev/sda4  9439232 1953525134 1944085903  927G Solaris root

...

~$ mount | grep sda
/dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/sda1 on /boot/grub type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
~$ 

Nem is lehet más az efi partició. De a topicindítóban nyomát sem látom efi-nek, a hivatkozott grub2win linkből meg nekem elég egyértelmű, hogy bios boot van.

Amúgy érdekes nálad az a megoldás, hogy az sda1 két helyre is fel van mountolva, ez nem annyira tűnik egészségesnek.

~$ cat /etc/fstab 
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# /boot/efi was on /dev/sda1 during installation
UUID=4C04-7ACF  /boot/efi   vfat  umask=0022,fmask=0022,dmask=0022	0       1
/boot/efi/grub	/boot/grub  none  defaults,bind				0	0

nincs ebben semmi egészségtelen a /boot/grub bindelve van

ext3-ra formázott /boot partíció, ext2fs driverrel felmountolva, editorral/scriptből megszerkesztve.

Ez egy létező rendszerből kimásolt .cmd script:

@echo off

if not exist "%programfiles%\ext2fsd" (
        call %~dp0..\..\windows\tools\ext2fs\install.cmd
)
if not exist k: (
        "%programfiles%\ext2fsd\mount" 0 1 k:
)
set sourcedir=%~dp0
set targetdir=
if not exist k: (
        echo Cannot find drive K:
        goto final
)
if exist k:\grub (
        set targetdir=k:\grub
) else if exist k:\boot\grub (
        set targetdir=k:\boot\grub
) else (
        echo Cannot find GRUB directory!
        goto end
)
echo Source directory: %sourcedir%
echo Target directory: %targetdir%

if exist %targetdir%\stage2 (
        echo Found GRUB1: stage2
        if exist %targetdir%\grub.conf (
                del /f /s /q %targetdir%\grub.conf
        )
        if exist %targetdir%\grub.conf.alwaysnet (
                copy /b %targetdir%\grub.conf.alwaysnet %targetdir%\grub.conf
        ) else (
                copy /b %sourcedir%\grub.conf.alwaysnet %targetdir%\grub.conf
        )
        if exist %targetdir%\default (
                del /f /s /q %targetdir%\default
        )
        copy /b %sourcedir%\default %targetdir%\default
)
if exist %targetdir%\i386-pc (
        echo Found GRUB2: i386-pc
        if exist %targetdir%\grub.cfg (
                del /f /s /q %targetdir%\grub.cfg
        )
        if exist %targetdir%\grub.cfg.alwaysnet (
                copy /b %targetdir%\grub.cfg.alwaysnet %targetdir%\grub.cfg
        ) else (
                copy /b %sourcedir%\grub.cfg.alwaysnet %targetdir%\grub.cfg
        )
        if exist %targetdir%\grubenv (
                del /f /s /q %targetdir%\grubenv
        )
        if exist %targetdir%\grubenv.net (
                copy /b %targetdir%\grubenv.net %targetdir%\grubenv
        ) else (
                copy /b %sourcedir%\grubenv.net %targetdir%\grubenv
        )
)

:end
"%programfiles%\ext2fsd\mount" /unmount k:

:final