Shawinnz

Uzman
Katılım
7 Ekim 2024
Mesajlar
278
Çözümler
5
Beğeniler
122
Yer
Gudermes, Chechnya
GRUB menüsünü özelleştirmeye çalışıyorum. Bir tane tema kurdum fakat GRUB_TERMINAL_OUTPUT="gfxterm" olunca GRUB menüsünde Windows gözükmüyor. "gfxterm" yerine "console" yazarsam, Windows gözüküyor ama bu sefer de tema gözükmüyor.

Gfxterm ile terminal çıktısı:


Bash:
❯ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

[sudo] password for yusuf:

Grub yapılandırma dosyası oluşturuluyor ...

Bulunan tema: /boot/grub2/themes/fedora/theme.txt

Adding boot menu entry for UEFI Firmware Settings ...

bitti


Console ile terminal çıktısı:

Bash:
❯ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Generating grub configuration file ...

Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi

Adding boot menu entry for UEFI Firmware Settings ...

done



etc/default/grub:



GRUB_TIMEOUT=15

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"

GRUB_DEFAULT=saved

GRUB_DISABLE_SUBMENU=true

GRUB_TERMINAL_OUTPUT="gfxterm"

GRUB_CMDLINE_LINUX="rhgb quiet rd.driver.blacklist=nouveau,nova_core modprobe.blacklist=nouveau,nova_core"

GRUB_DISABLE_RECOVERY="true"

GRUB_ENABLE_BLSCFG=true

GRUB_THEME="/boot/grub2/themes/fedora/theme.txt"
 
Son düzenleme:
GRUB menüsünü özelleştirmeye çalışıyorum. Bir tane tema kurdum fakat grub_termınal_output="gfxterm" olunca GRUB menüsünde Windows gözükmüyor. "gfxterm" yerine "Console" yazarsam, Windows gözüküyor ama bu sefer de tema gözükmüyor.

Gfxterm ile terminal çıktısı:

Bash:
❯ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

[sudo] password for yusuf:

Grub yapılandırma dosyası oluşturuluyor ...

Bulunan tema: /boot/grub2/themes/fedora/theme.txt

Adding boot menu entry for UEFI Firmware Settings ...

bitti

Console ile terminal çıktısı:

Bash:
❯ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Generating grub configuration file ...

Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi

Adding boot menu entry for UEFI Firmware Settings ...

done.

etc/default/grub:

GRUB_TIMEOUT=15

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"

GRUB_DEFAULT=saved

GRUB_DISABLE_SUBMENU=true

GRUB_TERMINAL_OUTPUT="gfxterm"

GRUB_CMDLINE_LINUX="rhgb quiet rd.driver.blacklist=nouveau,nova_core modprobe.blacklist=nouveau,nova_core"

GRUB_DISABLE_RECOVERY="true"

GRUB_ENABLE_BLSCFG=true

GRUB_THEME="/boot/grub2/themes/fedora/theme.txt"

Bilgisayarı açarken Linux'a gir. Sistem ayarlarından GRUB customizer adlı aracı kur Ubuntu veya türevlerinde yazılım merkezinden bulursun.
Uygulamayı aç.
Üst menüden genel ayarlar sekmesine git.
Diğer işletim sistemlerini algıla seçeneğini işaretle.
Tema sekmesinde kullandığın temayı seç ve uygula.
Kaydet ve çık.
GRUB customizer otomatik olarak OS proberi çalıştırır, Windows'u tekrar menüye ekler ve temayla birlikte görünür hale getirir.
Olumlu olumsuz dönüş yaparsın duruma göre.
 
Bilgisayarı açarken Linux'a gir. Sistem ayarlarından GRUB customizer adlı aracı kur Ubuntu veya türevlerinde yazılım merkezinden bulursun.
Uygulamayı aç.
Üst menüden genel ayarlar sekmesine git.
Diğer işletim sistemlerini algıla seçeneğini işaretle.
Tema sekmesinde kullandığın temayı seç ve uygula.
Kaydet ve çık.
GRUB customizer otomatik olarak OS proberi çalıştırır, Windows'u tekrar menüye ekler ve temayla birlikte görünür hale getirir.
Olumlu olumsuz dönüş yaparsın duruma göre.


Burada Fedora'da çalışmayıp GRUB'ı bozduğunu söylemişler ve depolardan kaldırılmış sanırım.
 
GRUB üzerinde Windows için bir "custom entry" ekleyerek önleyebileceğinizi sanıyorum yaşadığınız bu problemi.

Öncelikle lsblk komutunu kullanarak sisteminizdeki bütün mevcut partition'ları listeleyin. Ardından Windows'a ait olan EFI partition'unu, bu komutun çıktısından bulun (ben size örnek göstermek adına, EFI partition'unun /dev/sda1 olduğunu varsayıyorum.)

Bunu yaptıktan sonra, blkid /dev/sda1 komutu ile, bu partition'un UUID'sini öğrenin ve bu değeri not edin (dediğim gibi, verdiğim örnekte, sisteminizdeki Windows'a ait olan EFI Partition'unun /dev/sda1 olduğunu varsayıyorum).

Bu adımları tamamladıktan sonra; bahsettiğimiz Windows entry'ını oluşturmak için, /etc/grub.d/40_custom dosyasını herhangi bir metin düzenleyici ile açın (eğer böyle bir mevcut dosya mevcut değilse, oluşturun).

Ardından, bu dosyaya aşağıdaki satırları ekleyin:

Kod:
menuentry 'Windows' {
   search --fs-uuid --set=root $uuid
   chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

$uuid satırı yerine, blkid komutunu kullanarak bulmuş olduğunuz EFI Partition'unun UUID'si gelecek.

Bu adımları tamamladıktan sonra, yine yaptığınız gibi sudo grub2-mkconfig -o /boot/grub2/grub.cfg komutu ile GRUB Configuration'unu güncelleyin ve ardından yeniden başlatın. Daha sonra GRUB üzerinde Windows entry'ının mevcut olup olmadığını ve bu entry'ın çalışıp çalışmadığını belirtin.



Eğer bu adımlarla alakalı herhangi bir sorun yaşarsanız ve bu adımları uygulamak yerine, GRUB'un Windows'u otomatik olarak algılamasını sağlamak adına uğraşmak isterseniz (ki yukarıdaki adımları uygularsanız ve işe yararsa, buna gerek kalmayacağından dolayı, öncelikle ve kesinlikle yukarıdaki adımları denemenizi tavsiye ediyorum), öncelikle şu bağlantıdaki komutlarla GRUB'u tamamen yeniden yükleyin:


Ardından GRUB temanızı yeniden yükleyin. Sonrasında da, eğer GRUB Configuration'u üzerinde os-prober aktif değil ise aktif hale getirin ve Windows'un algılanıp algılanmadığını kontrol edin. İşe yaramazsa, aşağıdaki komutları teker teker çalıştırıp çıktılarını paylaşın:

Bash:
efibootmgr -u
lsblk -f
grub2-mkconfig 2>/dev/null #komutu olduğu gibi yazın, 2> ile /dev/null arasında boşluk olmayacak.
 
Son düzenleme:
GRUB üzerinde Windows için bir "Custom entry" ekleyerek önleyebileceğinizi sanıyorum yaşadığınız bu problemi.

Öncelikle lsblk komutunu kullanarak sisteminizdeki bütün mevcut Partition'ları listeleyin. Ardından Windows'a ait olan EFI Partition'unu, bu komutun çıktısından bulun (ben size örnek göstermek adına, EFI Partition'unun /dev/sda1 olduğunu varsayıyorum.)

Bunu yaptıktan sonra, blkid /dev/sda1 komutu ile, bu Partition'un UUID'sini öğrenin ve bu değeri not edin (dediğim gibi, verdiğim örnekte, sisteminizdeki Windows'a ait olan EFI Partition'unun /dev/sda1 olduğunu varsayıyorum).

Bu adımları tamamladıktan sonra; bahsettiğimiz Windows Entry'ını oluşturmak için, /etc/grub.d/40_custom dosyasını herhangi bir metin düzenleyici ile açın (eğer böyle bir mevcut dosya mevcut değilse, oluşturun).

Ardından, bu dosyaya aşağıdaki satırları ekleyin:

Kod:
menuentry 'Windows' {
 search --fs-uuid --set=root $uuid
 chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

$uuid satırı yerine, blkid komutunu kullanarak bulmuş olduğunuz EFI Partition'unun UUID'si gelecek.

Bu adımları tamamladıktan sonra, yine yaptığınız gibi sudo grub2-mkconfig -o /boot/grub2/grub.cfg komutu ile GRUB Configuration'unu güncelleyin ve ardından yeniden başlatın. Daha sonra GRUB üzerinde Windows entry'ının mevcut olup olmadığını ve bu Entry'ın çalışıp çalışmadığını belirtin.



Eğer bu adımlarla alakalı herhangi bir sorun yaşarsanız ve bu adımları uygulamak yerine, GRUB'un Windows'u otomatik olarak algılamasını sağlamak adına uğraşmak isterseniz (ki yukarıdaki adımları uygularsanız ve işe yararsa, buna gerek kalmayacağından dolayı, öncelikle ve kesinlikle yukarıdaki adımları denemenizi tavsiye ediyorum), öncelikle şu bağlantıdaki komutlarla GRUB'u tamamen yeniden yükleyin:


Ardından GRUB temanızı yeniden yükleyin. Sonrasında da, eğer GRUB Configuration'u üzerinde os-prober aktif değil ise aktif hale getirin ve Windows'un algılanıp algılanmadığını kontrol edin. İşe yaramazsa, aşağıdaki komutları teker teker çalıştırıp çıktılarını paylaşın:

Bash:
efibootmgr -u
lsblk -f
grub2-mkconfig 2>/dev/null #komutu olduğu gibi yazın, 2> ile /dev/null arasında boşluk olmayacak.

Dediklerinizi aynen yaptım ama hala aynı sorun devam ediyor.Şuan da eski config dosyalarını geri yükledim çünkü yanlışlıkla Nvidia sürücülerini bozmuşum. Sanırım console olarak kullanmaya devam edeceğim.

Bash:
❯ efibootmgr -u
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0004,0000,0003,2001,2002,2003
Boot0000* CT500P1SSD8    PciRoot(0x0)/Pci(0x1d,0x0)/Pci(0x0,0x0)/NVMe(0x1,00-A0-75-01-29-4F-F5-8E)/HD(1,GPT,adbd5c75-189e-46a2-a47f-74f42571cb57,0x800,0x32000)䍒
Boot0001* EFI PXE 0 for IPv4 (B4-A9-FC-EE-80-62)     PciRoot(0x0)/Pci(0x1d,0x5)/Pci(0x0,0x0)/MAC(b4a9fcee8062,0)/IPv4(0.0.0.0,0,DHCP,0.0.0.0,0.0.0.0,0.0.0.0)䍒
Boot0003* Windows Boot Manager    HD(1,GPT,adbd5c75-189e-46a2-a47f-74f42571cb57,0x800,0x32000)/\EFI\fedora\shimx64.efi䥗䑎坏S
Boot0004* Fedora    HD(1,GPT,adbd5c75-189e-46a2-a47f-74f42571cb57,0x800,0x32000)/\EFI\fedora\shimx64.efi
Boot2001* EFI USB Device    䍒
Boot2002* EFI DVD/CDROM    䍒
Boot2003* EFI Network    䍒

~
❯ lsblk -f
NAME        FSTYPE FSVER LABEL  UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
zram0       swap   1     zram0  f4fd6890-82c4-4962-91fd-cadd33288983                [SWAP]
nvme0n1                                                                             
├─nvme0n1p1 vfat   FAT32        9079-9D69                              45,9M    52% /boot/efi
├─nvme0n1p2                                                                         
├─nvme0n1p3 ntfs                01DC52E6FE958600                                   
├─nvme0n1p4 ntfs                C64451BF4451B2C3                                   
├─nvme0n1p5 ext4   1.0          0fc8d967-5e18-485d-9651-4fd3130dbdea    1,3G    27% /boot
└─nvme0n1p6 btrfs        fedora 3571fde5-13fd-487c-bef1-f6672709b1d2   72,1G    24% /home
                                                                                    /

~
❯ grub2-mkconfig 2>/dev/null

~
❯ sudo grub2-mkconfig 2>/dev/null
[sudo] password for yusuf:
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
set pager=1

if [ -f ${config_directory}/grubenv ]; then
  load_env -f ${config_directory}/grubenv
elif [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${saved_entry}"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

terminal_output console
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=15
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=15
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/00_tuned ###
set tuned_params=""
export tuned_params
set tuned_initrd=""
export tuned_initrd
### END /etc/grub.d/00_tuned ###

### BEGIN /etc/grub.d/01_users ###
if [ -f ${prefix}/user.cfg ]; then
  source ${prefix}/user.cfg
  if [ -n "${GRUB2_PASSWORD}" ]; then
    set superusers="root"
    export superusers
    password_pbkdf2 root ${GRUB2_PASSWORD}
  fi
fi
### END /etc/grub.d/01_users ###

### BEGIN /etc/grub.d/08_fallback_counting ###
insmod increment
# Check if boot_counter exists and boot_success=0 to activate this behaviour.
if [ -n "${boot_counter}" -a "${boot_success}" = "0" ]; then
  # if countdown has ended, choose to boot rollback deployment,
  # i.e. default=1 on OSTree-based systems.
  if  [ "${boot_counter}" = "0" -o "${boot_counter}" = "-1" ]; then
    set default=1
    set boot_counter=-1
  # otherwise decrement boot_counter
  else
    decrement boot_counter
  fi
  save_env boot_counter
fi
### END /etc/grub.d/08_fallback_counting ###

### BEGIN /etc/grub.d/10_linux ###
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 0fc8d967-5e18-485d-9651-4fd3130dbdea
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=boot 9079-9D69

# This section was generated by a script. Do not modify the generated file - all changes
# will be lost the next time file is regenerated. Instead edit the BootLoaderSpec files.
#
# The blscfg command parses the BootLoaderSpec files stored in /boot/loader/entries and
# populates the boot menu. Please refer to the Boot Loader Specification documentation
# for the files format: https://systemd.io/BOOT_LOADER_SPECIFICATION/.

# The kernelopts variable should be defined in the grubenv file. But to ensure that menu
# entries populated from BootLoaderSpec files that use this variable work correctly even
# without a grubenv file, define a fallback kernelopts variable if this has not been set.
#
# The kernelopts variable in the grubenv file can be modified using the grubby tool or by
# executing the grub2-mkconfig tool. For the latter, the values of the GRUB_CMDLINE_LINUX
# and GRUB_CMDLINE_LINUX_DEFAULT options from /etc/default/grub file are used to set both
# the kernelopts variable in the grubenv file and the fallback kernelopts variable.
if [ -z "${kernelopts}" ]; then
  set kernelopts="root=UUID=3571fde5-13fd-487c-bef1-f6672709b1d2 ro rootflags=subvol=root rhgb quiet rd.driver.blacklist=nouveau,nova_core modprobe.blacklist=nouveau,nova_core "
fi

insmod blscfg
blscfg
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/10_reset_boot_success ###
# Hiding the menu is ok if last boot was ok or if this is a first boot attempt to boot the entry
if [ "${boot_success}" = "1" -o "${boot_indeterminate}" = "1" ]; then
  set menu_hide_ok=1
else
  set menu_hide_ok=0
fi
# Reset boot_indeterminate after a successful boot
if [ "${boot_success}" = "1" ] ; then
  set boot_indeterminate=0
# Avoid boot_indeterminate causing the menu to be hidden more than once
elif [ "${boot_indeterminate}" = "1" ]; then
  set boot_indeterminate=2
fi
# Reset boot_success for current boot
set boot_success=0
save_env boot_success boot_indeterminate
### END /etc/grub.d/10_reset_boot_success ###

### BEGIN /etc/grub.d/12_menu_auto_hide ###
if [ x$feature_timeout_style = xy ] ; then
  if [ "${menu_show_once}" ]; then
    unset menu_show_once
    save_env menu_show_once
    set timeout_style=menu
    set timeout=60
  elif [ "${menu_auto_hide}" -a "${menu_hide_ok}" = "1" ]; then
    set orig_timeout_style=${timeout_style}
    set orig_timeout=${timeout}
    if [ "${fastboot}" = "1" ]; then
      # timeout_style=menu + timeout=0 avoids the countdown code keypress check
      set timeout_style=menu
      set timeout=0
    else
      set timeout_style=hidden
      set timeout=1
    fi
  fi
fi
### END /etc/grub.d/12_menu_auto_hide ###

### BEGIN /etc/grub.d/14_menu_show_once ###
if [ x$feature_timeout_style = xy ]; then
  if [ "${menu_show_once_timeout}" ]; then
    set timeout_style=menu
    set timeout="${menu_show_once_timeout}"
    unset menu_show_once_timeout
    save_env menu_show_once_timeout
  fi
fi
### END /etc/grub.d/14_menu_show_once ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_ppc_terminfo ###
### END /etc/grub.d/20_ppc_terminfo ###

### BEGIN /etc/grub.d/25_bli ###
if [ "$grub_platform" = "efi" ]; then
        if [ ! insmod bli ]; then
                echo "bli module not available"
        fi
fi
### END /etc/grub.d/25_bli ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-9079-9D69' {
    insmod part_gpt
    insmod fat
    search --no-floppy --fs-uuid --set=root 9079-9D69
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
# Other OS found, undo autohiding of menu unless menu_auto_hide=2
if [ "${orig_timeout_style}" -a "${menu_auto_hide}" != "2" ]; then
  set timeout_style=${orig_timeout_style}
  set timeout=${orig_timeout}
fi
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
if [ "$grub_platform" = "efi" ]; then
    if [ fwsetup --is-supported ]; then
        menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
            fwsetup
        }
    fi
fi
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/35_fwupd ###
### END /etc/grub.d/35_fwupd ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg
fi
### END /etc/grub.d/41_custom ###

~ took 3s
❯