You are not logged in.

#1 2020-03-01 19:33:48

idang1410
Member
Registered: 2020-03-01
Posts: 7

[SOLVED] Dual boot with windows shows at startup only windows

Hey everybody smile

I've used arch couple of months, and I wanted to dual boot with windows.
As recommended I install the windows and then arch.

I followed all the instruction, from arch regular install (as i did couple of times before) and from the dual boot guide.
When I boot the computer the grub only shows me the windows.

I have efi partition the windows created, and the partition table is GPT

some outputs from my computer (from my liveUSB)

fdisk

Disk /dev/sda: 476.96 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: SanDisk SD9SB8W5
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: D9828EC9-AAF7-784F-AEE7-A2456D868924

Device         Start       End   Sectors  Size Type
/dev/sda1       2048   1085439   1083392  529M Windows recovery environment
/dev/sda2    1085440   1290239    204800  100M EFI System
/dev/sda3    1290240   1323007     32768   16M Microsoft reserved
/dev/sda4    1323008 122882047 121559040   58G Microsoft basic data
/dev/sda5  122882048 142413823  19531776  9.3G Linux filesystem
/dev/sda6  142413824 181475327  39061504 18.6G Linux filesystem
/dev/sda7  181475328 600905727 419430400  200G Linux filesystem




Disk /dev/sdb: 7.28 GiB, 7807401984 bytes, 15248832 sectors
Disk model: DataTraveler 3.0
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: dos
Disk identifier: 0x02ac64a6

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1  *     2048 15248831 15246784  7.3G  c W95 FAT32 (LBA)


Disk /dev/loop0: 531.19 MiB, 556986368 bytes, 1087864 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

/etc/fstab

# /dev/sda5
UUID=3cf4d866-ca18-4504-af12-13ad7929c3e0	/         	ext4      	rw,relatime	0 1

# /dev/sda7
UUID=4cf7455f-6156-4051-b6b4-c9550418b8be	/home     	ext4      	rw,relatime	0 2

# /dev/sda2
UUID=60A5-FA99      	/boot     	vfat      	rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro	0 2

# /dev/sda4
UUID=A6A2B639A2B60E35	/mnt/windows	ntfs      	ro,relatime,uid=0,gid=0,fmask=0177,dmask=077,nls=utf8,errors=continue,mft_zone_multiplier=1	0 0

# /mnt/dev/sda6
UUID=3a71cbd1-a273-42bc-85f9-51d9710dd18b	none      	swap      	defaults  	0 0

mount

/dev/sda5 on / type ext4 (rw,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sys on /sys type sysfs (ro,nosuid,nodev,noexec,relatime)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=8129392k,nr_inodes=2032348,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,relatime)
run on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
tmp on /tmp type tmpfs (rw,nosuid,nodev)
airootfs on /etc/resolv.conf type overlay (rw,relatime,lowerdir=/run/archiso/sfs/airootfs,upperdir=/run/archiso/cowspace/persistent_ARCH_202002/x86_64/upperdir,workdir=/run/archiso/cowspace/persistent_ARCH_202002/x86_64/workdir)
/dev/sda2 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
/dev/sda7 on /home type ext4 (rw,relatime)
/dev/sda4 on /mnt/windows type ntfs (ro,relatime,uid=0,gid=0,fmask=0177,dmask=077,nls=utf8,errors=continue,mft_zone_multiplier=1)

os-prober

/dev/sda2@/EFI/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi

parted -l

Model: ATA SanDisk SD9SB8W5 (scsi)
Disk /dev/sda: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name                          Flags
 1      1049kB  556MB   555MB   ntfs            Basic data partition          hidden, diag
 2      556MB   661MB   105MB   fat32           EFI system partition          boot, esp
 3      661MB   677MB   16.8MB                  Microsoft reserved partition  msftres
 4      677MB   62.9GB  62.2GB  ntfs            Basic data partition          msftdata
 5      62.9GB  72.9GB  10.0GB  ext4
 6      72.9GB  92.9GB  20.0GB  linux-swap(v1)
 7      92.9GB  308GB   215GB   ext4


Model: Kingston DataTraveler 3.0 (scsi)
Disk /dev/sdb: 7807MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  7807MB  7806MB  primary  fat32        boot, lba

/boot/grub/grub.cfg

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -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="0"
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
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt
insmod ext2
set root='hd0,gpt5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt5' --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  3cf4d866-ca18-4504-af12-13ad7929c3e0
else
  search --no-floppy --fs-uuid --set=root 3cf4d866-ca18-4504-af12-13ad7929c3e0
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###

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

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

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/sda2)' --class windows --class os $menuentry_id_option 'osprober-efi-60A5-FA99' {
	insmod part_gpt
	insmod fat
	set root='hd0,gpt2'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt2' --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  60A5-FA99
	else
	  search --no-floppy --fs-uuid --set=root 60A5-FA99
	fi
	chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/30_os-prober ###

### 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 ###

I would love help smile

Last edited by idang1410 (2020-03-05 20:49:49)

Offline

#2 2020-03-01 20:02:39

Head_on_a_Stick
Member
From: The Wirral
Registered: 2014-02-20
Posts: 9,003
Website

Re: [SOLVED] Dual boot with windows shows at startup only windows

D00d, where's your kernel? tongue

EDIT: scnr

Check the installation guide again, it includes the linux package in the recommended pacstrap list.

Last edited by Head_on_a_Stick (2020-03-01 20:03:35)


Jin, Jîyan, Azadî

Offline

#3 2020-03-01 22:13:56

idang1410
Member
Registered: 2020-03-01
Posts: 7

Re: [SOLVED] Dual boot with windows shows at startup only windows

Head_on_a_Stick wrote:

D00d, where's your kernel? tongue

EDIT: scnr

Check the installation guide again, it includes the linux package in the recommended pacstrap list.

I've installed the kernel in the pacstrap , as the guide states

Offline

#4 2020-03-01 23:44:58

blitz
Banned
Registered: 2014-06-14
Posts: 32

Re: [SOLVED] Dual boot with windows shows at startup only windows

idang1410 wrote:

Hey everybody smile

I've used arch couple of months, and I wanted to dual boot with windows.
As recommended I install the windows and then arch.

I followed all the instruction, from arch regular install (as i did couple of times before) and from the dual boot guide.
When I boot the computer the grub only shows me the windows.

Remove the outdated GRUB and install bootctl instead.
bootctl status

System:
     Firmware: UEFI 2.31 (American Megatrends 4.653)
  Secure Boot: disabled
   Setup Mode: setup

Current Boot Loader:
      Product: systemd-boot 243.78-1-arch
     Features: ✓ Boot counting
               ✓ Menu timeout control
               ✓ One-shot menu timeout control
               ✓ Default entry control
               ✓ One-shot entry control
               ✓ Support for XBOOTLDR partition
               ✓ Support for passing random seed to OS
          ESP: /dev/disk/by-partuuid/35f663c7-e633-4ff7-922b-6033bc638fa4
         File: └─/EFI/systemd/systemd-bootx64.efi

Random Seed:
 Passed to OS: yes
 System Token: set
       Exists: yes

Available Boot Loaders on ESP:
          ESP: /boot (/dev/disk/by-partuuid/35f663c7-e633-4ff7-922b-6033bc638fa4)
         File: └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 243.78-1-arch)
         File: └─/EFI/BOOT/bootx64.efi (systemd-boot 243.78-1-arch)

Boot Loaders Listed in EFI Variables:
        Title: Linux Boot Manager
           ID: 0x0001
       Status: active, boot-order
    Partition: /dev/disk/by-partuuid/35f663c7-e633-4ff7-922b-6033bc638fa4
         File: └─/EFI/systemd/systemd-bootx64.efi

        Title: Windows Boot Manager
           ID: 0x0000
       Status: active, boot-order
    Partition: /dev/disk/by-partuuid/35f663c7-e633-4ff7-922b-6033bc638fa4
         File: └─/EFI/Microsoft/Boot/bootmgfw.efi

Boot Loader Entries:
        $BOOT: /boot (/dev/disk/by-partuuid/35f663c7-e633-4ff7-922b-6033bc638fa4)

Default Boot Loader Entry:
        title: Arch Linux BMQ (linux-bmq)
           id: linux-bmq
       source: /boot/loader/entries/linux-bmq.conf
        linux: /vmlinuz-linux-bmq
       initrd: /intel-ucode.img
               /initramfs-linux-bmq.img
      options: root=PARTUUID=47a680a0-dee6-428b-b360-af5dce5da0f4 rw i915.fastboot=1 scsi_mod.use_blk_mq=1 libata.allow_tpm=1 intel_iommu=on bmq.timeslice=2000

Given 3 seconds to choose between OSes on warm/cold start-up.

blitz@inode / % cat /boot/loader/loader.conf 

default		linux-bmq
timeout		3
editor		no
console-mode	0

Last edited by blitz (2020-03-01 23:55:29)

Offline

#5 2020-03-02 01:17:22

chancho
Member
From: Hong Kong
Registered: 2006-07-14
Posts: 114

Re: [SOLVED] Dual boot with windows shows at startup only windows

in order to dual boot with windows (efi), you need a vfat partition and a folder /boot/efi
mount the vfat under /boot/efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=whatever
at least that is what i did.

Offline

#6 2020-03-02 07:37:47

idang1410
Member
Registered: 2020-03-01
Posts: 7

Re: [SOLVED] Dual boot with windows shows at startup only windows

blitz wrote:
idang1410 wrote:

Hey everybody smile

I've used arch couple of months, and I wanted to dual boot with windows.
As recommended I install the windows and then arch.

I followed all the instruction, from arch regular install (as i did couple of times before) and from the dual boot guide.
When I boot the computer the grub only shows me the windows.

Remove the outdated GRUB and install bootctl instead.
bootctl status

System:
     Firmware: UEFI 2.31 (American Megatrends 4.653)
  Secure Boot: disabled
   Setup Mode: setup

Current Boot Loader:
      Product: systemd-boot 243.78-1-arch
     Features: ✓ Boot counting
               ✓ Menu timeout control
               ✓ One-shot menu timeout control
               ✓ Default entry control
               ✓ One-shot entry control
               ✓ Support for XBOOTLDR partition
               ✓ Support for passing random seed to OS
          ESP: /dev/disk/by-partuuid/35f663c7-e633-4ff7-922b-6033bc638fa4
         File: └─/EFI/systemd/systemd-bootx64.efi

Random Seed:
 Passed to OS: yes
 System Token: set
       Exists: yes

Available Boot Loaders on ESP:
          ESP: /boot (/dev/disk/by-partuuid/35f663c7-e633-4ff7-922b-6033bc638fa4)
         File: └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 243.78-1-arch)
         File: └─/EFI/BOOT/bootx64.efi (systemd-boot 243.78-1-arch)

Boot Loaders Listed in EFI Variables:
        Title: Linux Boot Manager
           ID: 0x0001
       Status: active, boot-order
    Partition: /dev/disk/by-partuuid/35f663c7-e633-4ff7-922b-6033bc638fa4
         File: └─/EFI/systemd/systemd-bootx64.efi

        Title: Windows Boot Manager
           ID: 0x0000
       Status: active, boot-order
    Partition: /dev/disk/by-partuuid/35f663c7-e633-4ff7-922b-6033bc638fa4
         File: └─/EFI/Microsoft/Boot/bootmgfw.efi

Boot Loader Entries:
        $BOOT: /boot (/dev/disk/by-partuuid/35f663c7-e633-4ff7-922b-6033bc638fa4)

Default Boot Loader Entry:
        title: Arch Linux BMQ (linux-bmq)
           id: linux-bmq
       source: /boot/loader/entries/linux-bmq.conf
        linux: /vmlinuz-linux-bmq
       initrd: /intel-ucode.img
               /initramfs-linux-bmq.img
      options: root=PARTUUID=47a680a0-dee6-428b-b360-af5dce5da0f4 rw i915.fastboot=1 scsi_mod.use_blk_mq=1 libata.allow_tpm=1 intel_iommu=on bmq.timeslice=2000

Given 3 seconds to choose between OSes on warm/cold start-up.

blitz@inode / % cat /boot/loader/loader.conf 

default		linux-bmq
timeout		3
editor		no
console-mode	0

I am used to grub already. Why switching to bootctl will solve this ?

in order to dual boot with windows (efi), you need a vfat partition and a folder /boot/efi
mount the vfat under /boot/efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=whatever
at least that is what i did.

I have a efi partition, at /dev/sda2 (you can see that at my fdisk or parted output)

Offline

#7 2020-03-02 08:15:05

Wild Penguin
Member
Registered: 2015-03-19
Posts: 406

Re: [SOLVED] Dual boot with windows shows at startup only windows

chancho wrote:

in order to dual boot with windows (efi), you need a vfat partition and a folder /boot/efi
mount the vfat under /boot/efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=whatever
at least that is what i did.

This is absolutely not necessary. It is one way to do it, but what OP has is also perfectly valid and there is no reason to change that. Moreover, grub is already installed correctly, but the issue is it's configuration file is not including an entry to Arch Linux Kernel for some reason. Re-installing grub will do nothing to the issue.

idang1410: what are the contents of your /boot/ ? (i.e. the EFI partition)?

More specifically, you should have linux kernel images in there, at least vmlinuz-linux (if you are using the default kernel) and most probably initramfs-linux.img and initramfs-linux-fallback.img (but not necessarily, in case you have disabled initramfs and know what you are doing).

Chances are, something was run in the wrong order during install. The usual procedure is (roughly, from the top of my head):

  1. mount all partitions to where they are going to be, in the chrooted environment during installation (including EFI),

  2. install a kernel image (1. is needed before this step so the image will be installed in the right spot!)

  3. make sure fstab is up to date (grub might need this, or another bootloader in case you choose to use one)

  4. update grub configuration with grub-mkconfig

Step 2. this is done by pacstrap usually.

In case the kernel images are in the EFI partition, your situation can be probably fixed with step 4) (missing entries in grub.cfg). You may run 'grub-mkconfig' first (without parameters) to get the configuration file in STDOUT. If you are sure it seems correct, pass on -o /boot/grub/grub.cfg to it. You may want to move away old grub.cfg before (so you can revert into situation where you can boot into Windows, in case Windows detection is broken for any reason).

In case the kernel image is not in the EFI partition, you need to re-install the kernel. I presume you can already chroot (or boot) into the installation since you posted a good deal of information from it smile. So, after chrooting and making sure the EFI is mounted at /boot, run

pacman -S kernel

(you may want to -Suy it instead while we're at it) and then

grub-mkconfig -o /boot/grub/grub.cfg

as outlined before. Hope this helps!

As a sidenote: in case Kernel image was not in EFI, you may want to unmount /boot temporarily and see if the mount point is empty. Been there, done that: I've installed kernel images accidentally because something was broken, was chrooted but forgot to mount /boot before installing a new kernel. You may most probably remove those files in the (unmounted) mountpoint.

EDIT: A few minor clarifications

Last edited by Wild Penguin (2020-03-02 08:36:37)

Offline

#8 2020-03-05 20:49:16

idang1410
Member
Registered: 2020-03-01
Posts: 7

Re: [SOLVED] Dual boot with windows shows at startup only windows

Wild Penguin wrote:
chancho wrote:

in order to dual boot with windows (efi), you need a vfat partition and a folder /boot/efi
mount the vfat under /boot/efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=whatever
at least that is what i did.

This is absolutely not necessary. It is one way to do it, but what OP has is also perfectly valid and there is no reason to change that. Moreover, grub is already installed correctly, but the issue is it's configuration file is not including an entry to Arch Linux Kernel for some reason. Re-installing grub will do nothing to the issue.

idang1410: what are the contents of your /boot/ ? (i.e. the EFI partition)?

More specifically, you should have linux kernel images in there, at least vmlinuz-linux (if you are using the default kernel) and most probably initramfs-linux.img and initramfs-linux-fallback.img (but not necessarily, in case you have disabled initramfs and know what you are doing).

Chances are, something was run in the wrong order during install. The usual procedure is (roughly, from the top of my head):

  1. mount all partitions to where they are going to be, in the chrooted environment during installation (including EFI),

  2. install a kernel image (1. is needed before this step so the image will be installed in the right spot!)

  3. make sure fstab is up to date (grub might need this, or another bootloader in case you choose to use one)

  4. update grub configuration with grub-mkconfig

Step 2. this is done by pacstrap usually.

In case the kernel images are in the EFI partition, your situation can be probably fixed with step 4) (missing entries in grub.cfg). You may run 'grub-mkconfig' first (without parameters) to get the configuration file in STDOUT. If you are sure it seems correct, pass on -o /boot/grub/grub.cfg to it. You may want to move away old grub.cfg before (so you can revert into situation where you can boot into Windows, in case Windows detection is broken for any reason).

In case the kernel image is not in the EFI partition, you need to re-install the kernel. I presume you can already chroot (or boot) into the installation since you posted a good deal of information from it smile. So, after chrooting and making sure the EFI is mounted at /boot, run

pacman -S kernel

(you may want to -Suy it instead while we're at it) and then

grub-mkconfig -o /boot/grub/grub.cfg

as outlined before. Hope this helps!

As a sidenote: in case Kernel image was not in EFI, you may want to unmount /boot temporarily and see if the mount point is empty. Been there, done that: I've installed kernel images accidentally because something was broken, was chrooted but forgot to mount /boot before installing a new kernel. You may most probably remove those files in the (unmounted) mountpoint.

EDIT: A few minor clarifications

Thank you !
I did installed the kernel without the boot mounted apparently. installing it with all the partition mounted corrected the problem

Offline

Board footer

Powered by FluxBB