You are not logged in.
Hello, I think that this is a recurring issue but the posts that I found don't solve my problem, and some others may could solve, but the threads was very dirty.
The problem is: I had windows + mint and I decided change mint for archlinux, after install archlinux I realized that windows 10 are not an entry on grub.
How are my partitions?
Answer:
Device Start End Sectors Size Type
/dev/sda1 2048 1026047 1024000 500M EFI System
/dev/sda2 1026048 17803263 16777216 8G Linux filesystem
/dev/sda3 17803264 80717823 62914560 30G Linux filesystem
/dev/sda4 1344514048 1344546815 32768 16M Microsoft reserved
/dev/sda5 1344546816 1953523711 608976896 290.4G Microsoft basic data
/dev/sda6 80717824 1344514047 1263796224 602.6G Linux filesystem
--------------------
/sda1 is boot linux partition
/sda2 is swap partition
/sda3 is root linux partition
/sda4 I suppose that is the boot windows partition
/sda5 is windows "home" partition
/sda6 is home linux partition
How did you install the grub in archlinux installation?
Answer:
After arch-chroot /mnt and etc, I did run the following commands:
# mkdir /boot/efi
# mount /dev/sda1 /boot/efi
# grub-install --target=x86_64 --bootloader-id=grub_efi --recheck
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
# grub-mkconfig -o /boot/grub/grub.cfg
What did you try to resolve the problem?
Answer:
I did install os-prober and ntfs-3g and run:
$ sudo os-prober
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
I also try follow a short section in archlinux's guide related to grub installation that say to mount windows partition before grub-mkconfig, but I couldn't mount windows partition.
$ mkdir /boot/windows
$ sudo mount /dev/sda4 /boot/windows
-> NTFS signature is missing.
Failed to mount '/dev/sda4': Invalid argument
The device '/dev/sda4' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
After to try mount windows partition I also did try mount /dev/sd5 partition, but I had this:
Windows is hibernated, refused to mount.
The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Falling back to read-only mount because the NTFS partition is in an
unsafe state. Please resume and shutdown Windows fully (no hibernation
or fast restarting.)
So I did try run
mount -t ntfs-3g -o remove_hiberfile /dev/sda5 /mnt/windows
, but the problem did persist.
Someone could help me? I need to access my windows, it's urgente /:
ps: I don't know how to use code style, sorry, but as soon as I learn I will edit this post.
Last edited by lucaspeixotot (2019-01-12 22:02:39)
Offline
I don't know how to use code style, sorry, but as soon as I learn I will edit this post.
There is a BBCode link at the bottom left of every text box...
Offline
@lucaspeixotot, how your grub.cfg looks like? Have Windows items been added correctly?
Offline
I think haven't.
This is my grub.cfg generated by grub-mkconfig. Before, this is my lsblk output:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 500M 0 part /boot/EFI
├─sda2 8:2 0 8G 0 part [SWAP]
├─sda3 8:3 0 30G 0 part /
├─sda4 8:4 0 16M 0 part
├─sda5 8:5 0 290.4G 0 part /mnt/windows
└─sda6 8:6 0 602.6G 0 part /home
sr0 11:0 1 1024M 0 rom
And this is my 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,gpt3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt3' --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3 d393f139-552e-4caa-8d9d-a720cc8aa30c
else
search --no-floppy --fs-uuid --set=root d393f139-552e-4caa-8d9d-a720cc8aa30c
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 ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-d393f139-552e-4caa-8d9d-a720cc8aa30c' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt3' --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3 d393f139-552e-4caa-8d9d-a720cc8aa30c
else
search --no-floppy --fs-uuid --set=root d393f139-552e-4caa-8d9d-a720cc8aa30c
fi
echo 'Loading Linux linux-lts ...'
linux /boot/vmlinuz-linux-lts root=UUID=d393f139-552e-4caa-8d9d-a720cc8aa30c rw quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initramfs-linux-lts.img
}
submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-d393f139-552e-4caa-8d9d-a720cc8aa30c' {
menuentry 'Arch Linux, with Linux linux-lts' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-advanced-d393f139-552e-4caa-8d9d-a720cc8aa30c' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt3' --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3 d393f139-552e-4caa-8d9d-a720cc8aa30c
else
search --no-floppy --fs-uuid --set=root d393f139-552e-4caa-8d9d-a720cc8aa30c
fi
echo 'Loading Linux linux-lts ...'
linux /boot/vmlinuz-linux-lts root=UUID=d393f139-552e-4caa-8d9d-a720cc8aa30c rw quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initramfs-linux-lts.img
}
menuentry 'Arch Linux, with Linux linux-lts (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-fallback-d393f139-552e-4caa-8d9d-a720cc8aa30c' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt3' --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3 d393f139-552e-4caa-8d9d-a720cc8aa30c
else
search --no-floppy --fs-uuid --set=root d393f139-552e-4caa-8d9d-a720cc8aa30c
fi
echo 'Loading Linux linux-lts ...'
linux /boot/vmlinuz-linux-lts root=UUID=d393f139-552e-4caa-8d9d-a720cc8aa30c rw quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initramfs-linux-lts-fallback.img
}
menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-d393f139-552e-4caa-8d9d-a720cc8aa30c' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt3' --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3 d393f139-552e-4caa-8d9d-a720cc8aa30c
else
search --no-floppy --fs-uuid --set=root d393f139-552e-4caa-8d9d-a720cc8aa30c
fi
echo 'Loading Linux linux ...'
linux /boot/vmlinuz-linux root=UUID=d393f139-552e-4caa-8d9d-a720cc8aa30c rw quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initramfs-linux.img
}
menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-d393f139-552e-4caa-8d9d-a720cc8aa30c' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt3' --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3 d393f139-552e-4caa-8d9d-a720cc8aa30c
else
search --no-floppy --fs-uuid --set=root d393f139-552e-4caa-8d9d-a720cc8aa30c
fi
echo 'Loading Linux linux ...'
linux /boot/vmlinuz-linux root=UUID=d393f139-552e-4caa-8d9d-a720cc8aa30c rw quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initramfs-linux-fallback.img
}
}
### 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 ###
### 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 ###
Offline
@lucaspeixotot, your lsblk listing says that Windows partition was mounted successfully to /mnt/windows. Windows items are absent in your grub.cfg. You can try to add it manually.
Last edited by Kirill Bugaev (2019-01-11 03:33:23)
Offline
I did try but I don't know exactly how to do this. Apparently I don't have a boot partition for windows, actually I don't know if I should have. So I don't know how to change my grub/grub.cfg manually. The linux boot partition is efi, but I don't know what windows is. I did try follow this guide(https://wiki.archlinux.org/index.php/GRUB#Windows_8.2F10_not_found) but I think that I'm making something wrong. Thanks in advance.
EDIT:
I did try put this
if [ "${grub_platform}" == "pc" ]; then
menuentry "Microsoft Windows Vista/7/8/8.1/10 BIOS/MBR" {
insmod part_msdos
insmod ntfs
insmod ntldr
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 82BAD789BAD777DD
ntldr /bootmgr
}
fi
in some lines before the end of /boot/grub/grub.cfg file.
I use "82BAD789BAD777DD" because my lsblk -f return this:
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda
├─sda1 vfat 4344-65FA 498.8M 0% /boot/EFI
├─sda2 swap b49a7896-a1e4-45a5-aae6-c6ab984c2858 [SWAP]
├─sda3 ext4 d393f139-552e-4caa-8d9d-a720cc8aa30c 21.1G 23% /
├─sda4
├─sda5 ntfs 82BAD789BAD777DD 232.4G 20% /mnt/windows
└─sda6 ext4 f6b0295b-eaaa-48a6-988b-a58a5abe6aca 554.4G 1% /home
sr0
Last edited by lucaspeixotot (2019-01-11 04:00:33)
Offline
@lucaspeixotot, That you have tried to put into your grub.cfg may be wrong, where did you get this? I don't use EFI, so don't have working example of grub.cfg, sorry. Have you tried to run grub-mkconfig from both archiso and installed system?
Last edited by Kirill Bugaev (2019-01-11 04:28:27)
Offline
Yes, in archiso I have some warnings about 10000000 seconds and from installed system I have just:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux-lts
Found initrd image: /boot/initramfs-linux-lts.img
Found fallback initrd image(s) in /boot: initramfs-linux-lts-fallback.img
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
done
EDIT: In archiso I have the same output as the above, but with warnings after.
EDIT2: Sorry about my newbie question, but I thought that I had to install an efi boot partition, could I have installed a normal partition?
Last edited by lucaspeixotot (2019-01-11 04:28:51)
Offline
Windows and linux will use the same EFI partition. That seems to be /dev/sda1 mounted at /boot/EFI for you. There should be a linux kernel in there, which there is, and there should also be a Windows boot loader, which seems to be missing. My guess is, you overwrote the EFI partition when you install linux, so it deleted the Windows boot loader.
Offline
Remembering my steps, probably I did that. How can I fix this?
EDIT: Before I had something like:
/dev/sda1 - boot efi mint
/dev/sda2 - swap
/dev/sda3 - /
/dev/sda4 e /dev/sda5 the same thing.
So I deleted the sda1, 2 and 3 and did move on in archlinux installation guide.
Last edited by lucaspeixotot (2019-01-11 04:38:24)
Offline
If machine supports EFI (your supports) it is better to use it. My is not, this is only reason why I don't use EFI . Lets wait before guru with EFI will come to thread.
Last edited by Kirill Bugaev (2019-01-11 04:48:02)
Offline
@lucaspeixotot, what grub says during when you have added Windows items into grub.cfg. Is it show Windows boot entry? What happens when you tap Enter?
Offline
@lucaspeixotot, what grub says during when you have added Windows items into grub.cfg. Is it show Windows boot entry? What happens when you tap Enter?
Are you asking when I power on my notebook? When did I add those lines(sorry I don't know mark old replies so I will put the code here again)?
if [ "${grub_platform}" == "pc" ]; then
menuentry "Microsoft Windows Vista/7/8/8.1/10 BIOS/MBR" {
insmod part_msdos
insmod ntfs
insmod ntldr
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 82BAD789BAD777DD
ntldr /bootmgr
}
fi
When I did add this lines in grub.cfg and reboot my archlinux, nothing happened. There is just Archlinux and something about Advance mode for archlinux.
Offline
I'm no EFI expert or anything, so I don't really know how to restore the Windows boot loader, but I'm sure a search would reveal something. It should just be one or two files that need placing in the EFI partition, then just add the proper grub configuration (sorry I can't help there either, I have never used Windows or Grub.) I have seen similar threads on this forum, so I know it can be done without having to reinstall Windows, unfortunately I can't find any of them right now.
Offline
@lucaspeixotot, so that you have manually added to your grub.cfg is wrong. But according to circleface post you should recover Windows EFI bootloader first and then make right grub.cfg.
Offline
I found this link https://lampjs.wordpress.com/2017/01/19 … beginners/ and I think that I should have follow this. So I think that the easiest path that I should follow is to format my boot partition and make my Windows start on it. After that, I follow this tutorial and everything should works. I don't know yet how to do that exactly. Do you guys agree with me?
ps: Of course how I have already my partitions with arch linux I wouldn't be follow full tutorial, just the piece that matter for me.
Offline
You don't have to follow that tutorial all, google how to restore your Windows UEFI boot loader, that should simply work without changing your working Arch setup.
Offline
I found several links to restore windows UEFI boot loader but all of them say the same. This is one example:
https://www.dell.com/support/article/br … 10?lang=pt
The problem is thar letter:\EFI\Microsoft\Boot doesn't exists, and if I create these directories, when I run bootrec /fixboot I have this error: Access Denied.
Offline
Please, everybody that are trying help me, I made a lot of things and I think that I'm most closer than ever to solve this problem, but I need you guys.
I was having troubles trying to repair my windows boot loader, so I decided format my /dev/sda1(my EFI system partition). I made this with this link https://www.partitionwizard.com/clone-d … enied.html . When I start this tutorial I thought that I would solve my "Access Denied" problem, but I noted that I was formating the esp and reinstall windows boot loader automatically, and was what I did.
After that, this is fdisk -l output https://imgur.com/a/CMVzF1l and my Windows boot loader came back to work, however of course my grub was broken. So I start on archiso again and I did run the following commands and everything worked fine, well, almost everything.
# mount /dev/sda3 /mnt
# mount /dev/sda1 /mnt/boot
# mount /dev/sda4 /mnt/home
# mkswap /dev/sda2
# swapon /dev/sda2
# rm /etc/fstab
# genfstab -U -p /mnt >> /mnt/etc/fstab
# arch-chroot /mnt
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
# ntfs-3g /dev/sda6 /mnt/windows
# grub-mkconfig -o /boot/grub/grub.cfg
But, in the last command(grub-mkconfig...) the only output that I had was "Done". Others commands had the expected outputs. As the grub-mkconfig returned just "Done", I did open /boot/grub/grub.cfg and I noted that there wasn't menu entries.
After these commands my /boot directory is here https://imgur.com/a/lAcigKG . My /boot/EFI/GRUB folder have just a grubx64.efi file and there is a file in /boot/EFI/Microsoft/Boot/boot(something else).efi as the tutorials said that was to have.
Thus I thought, if the problem was with grub-mkconfig I will write my own grub.cfg following this archlinux guide https://wiki.archlinux.org/index.php/GR … m_grub.cfg. As /boot/EFI/Microsoft/Boot/boot(something else).efi exists, create my windows 10 menu entry was easy. This img https://imgur.com/a/xwGSMbK shows my custom menu entry for arch linux and windows.
My windows menu entry works fine and now my grub has a option with windows that works. Now, ironically, my problem is with my arch linux entry that didn't work with this error https://imgur.com/a/qb60l48.
I thought to try this other two menu entry types:
menuentry "Other Linux" {
set root=(hd0,2)
linux /boot/vmlinuz (add other options here as required)
initrd /boot/initrd.img (if the other kernel uses/needs one)
}
and
menuentry "Other Linux" {
# assuming that UUID is 763A-9CB6
search --no-floppy --set=root --fs-uuid 763A-9CB6
# search by label OTHER_LINUX (make sure that partition label is unambiguous)
#search --no-floppy --set=root --label OTHER_LINUX
linux /boot/vmlinuz (add other options here as required, for example: root=UUID=763A-9CB6)
initrd /boot/initrd.img (if the other kernel uses/needs one)
}
However, my problem is that I don't know where the vmlinuz and initrd.img files are. I remember that before format the ESP partition they did exist and I think that they were created by grub-mkconfig, because I remember that something with this names in grub-mkconfig output, but I can be wrong.
So my problem now resumes to add a menu entry for arch linux. I think even though it's still not working, my esp never were more right in my mind and I think that I'm understanding everything. I think that now my problem is smaller and more easy to solve. But I still need your help guys.
Last edited by lucaspeixotot (2019-01-12 05:47:14)
Offline
This is an entirely separate issue. Mark this thread as solved and start a new thread.
Also, read the wiki entry on dual booting before you do; it is a lot more straightforward than this.
Offline
If you are that far in, just have the EFI partition mounted on /boot in the chroot and reinstall the linux package.
Offline
Thanks for everyone that help me, my problem was solved. I did install linux package and vmlinuz and init files were generated in my /boot. After that I tried create my own menu entry, but I remember that maybe with this files the
grub-mkconfig -o /boot/grub/grub.cfg
command could solve my archlinux menu entry and was what I did. I did run grub-mkconfig and my archlinux menu entry came back to work. My windows again was not identified by grub-mkconfig, but it was not a problem because I learned how to create its menu entry(I alread post in this topic).
So, my problem was solved and thank you very much everyone!
Offline