bootinfoscript icon indicating copy to clipboard operation
bootinfoscript copied to clipboard

Support NVMe and MMC devices

Open oldfred opened this issue 9 years ago • 6 comments

I would like to add entry to search of Boot_Files_Fat= lines. /EFI/ubuntu/grub.cfg Not sure what other distributions use. I have seen /EFI/grub but not then sure now if grub.cfg or other. And each distribution like Mint uses that. Not sure if DISTRIB_ID= would cover other cases or not.

Also need search of newer drives as part of All_Hard_Drives= /dev/nvme0n1 /dev/mmcblk0

oldfred avatar Apr 22 '17 23:04 oldfred

I added search for custom.cfg on FAT in v0.77.

As for NVMe - they are not usually even bootable with legacy BIOS and BIS is only partially useful for EFI anyway. In any case, NVMe supports needs patch from someone who owns this hardware and can test it. I change subject so someone can pick it up for implementation.

arvidjaar avatar Jun 10 '18 07:06 arvidjaar

NVMe is just another medium on which an OS can be installed. I installed a legacy Windows 10 system on an NVME drive and adjusted the bootinfoscript to detect it. Maybe you can take over my changes. Following the changed script: bootinfoscript.tar.gz

baedacool avatar Jan 24 '19 06:01 baedacool

@baedacool

Thank you, but please, submit pull request or at least attach patch in diff -up format.

arvidjaar avatar Jan 24 '19 18:01 arvidjaar

I also added these lines to my version.

-	/grldr		/grub.exe
+	/grldr		/grub.exe  /EFI/ubuntu/grub.cfg
+	/EFI/grub2/grub.cfg
+	/EFI/fedora/grub.cfg
+        /EFI/grub/grub.cfg 

oldfred avatar Jan 26 '19 17:01 oldfred

diff to baedacool's version.

fred@bionic-z97:~/Downloads$ sudo diff -up bootinfoscript_2019-02-17_22\:04\:35  bootinfoscript
[sudo] password for fred: 
--- bootinfoscript_2019-02-17_22:04:35	2019-02-17 16:04:36.140554000 -0600
+++ bootinfoscript	2019-01-23 05:50:32.000000000 -0600
@@ -1,8 +1,8 @@
 #!/bin/bash
 VERSION='0.77';
 RELEASE_DATE='10 June 2018';
-LAST_GIT_COMMIT_SHORTLOG='Prepare for release, update CHANGELOG';
-LAST_GIT_COMMIT_DATE='2018-06-10T07:08:02Z';
+LAST_GIT_COMMIT_SHORTLOG='';
+LAST_GIT_COMMIT_DATE='';
 ################################################################################
 #                                                                              #
 # Copyright (c) 2009-2010      Ulrich Meierfrankenfeld                         #
@@ -626,8 +626,7 @@ exec 2> ${Error_Log};
 #
 #   Support more than 26 drives.
 
-All_Hard_Drives=$(ls /dev/hd[a-z] /dev/hd[a-z][a-z] /dev/sd[a-z] /dev/sd[a-z][a-z] /dev/xvd[a-z] /dev/vd[a-z] /dev/vd[a-z][a-z] 2>> ${Trash});
-
+All_Hard_Drives=$(ls /dev/hd[a-z] /dev/hd[a-z][a-z] /dev/sd[a-z] /dev/sd[a-z][a-z] /dev/xvd[a-z] /dev/vd[a-z] /dev/vd[a-z][a-z] /dev/nvme[0-9]n[0-9] /dev/nvme[0-9]n[0-9][0-9] /dev/nvme[0-9][0-9]n[0-9] /dev/nvme[0-9][0-9]n[0-9][0-9] 2>> ${Trash});
 
 ## Add found RAID disks to list of hard drives. ##
 
@@ -1090,6 +1089,7 @@ ReadPT () {
   local HI=$1 StartEx=$2 N=$3 PT_file=$4 format=$5 EPI=$6 Base_Sector;
   local LinuxIndex=$7 boot size start end type drive system;
   local i=0 boot_hex label limit MBRSig;
+  local LinuxIndexExt;
 
   drive=${HDName[${HI}]};
   limit=${HDSize[${HI}]};
@@ -1143,15 +1143,18 @@ ReadPT () {
 	     fi
 
 	     LinuxIndex=$((${LinuxIndex}+1));
+	     if [ "${drive:0:9}" = "/dev/nvme" ]; then
+	         LinuxIndexExt="p$LinuxIndex"
+	     fi
 	     end=$((${start}+${size}-1));
 
 	     [[ "${HDPT[${HI}]}" = 'BootIt' ]] && label="${NamesArray[${EPI}]}_" || label=${drive};
 
 	     system=$(HexToSystem ${type});
 
-	     printf "${format}" "${label}${LinuxIndex}" "${boot}" $(InsertComma ${start}) "$(InsertComma ${end})" "$(InsertComma ${size})" "${type}" "${system}" >> ${PT_file};
+	     printf "${format}" "${label}${LinuxIndexExt}" "${boot}" $(InsertComma ${start}) "$(InsertComma ${end})" "$(InsertComma ${size})" "${type}" "${system}" >> ${PT_file};
 
-	     NamesArray[${PI}]="${label}${LinuxIndex}";
+	     NamesArray[${PI}]="${label}${LinuxIndexExt}";
 	     StartArray[${PI}]=${start};
 	     EndArray[${PI}]=${end};
 	     TypeArray[${PI}]=${type};
@@ -1161,7 +1164,7 @@ ReadPT () {
 	     DriveArray[${PI}]=${HI};
 	     ParentArray[${PI}]=${EPI};
 
-             ( [[ x"${EPI}" = x'' ]] || [[ x"${DeviceArray[${EPI}]}" != x'' ]] ) && DeviceArray[${PI}]=${drive}${LinuxIndex};
+             ( [[ x"${EPI}" = x'' ]] || [[ x"${DeviceArray[${EPI}]}" != x'' ]] ) && DeviceArray[${PI}]=${drive}${LinuxIndexExt};
 
 	     if [[ "${type}" = '5' || "${type}" = 'f' ]] ; then
 	        ReadPT ${HI} ${start} 2 ${PT_file} "${format}" ${PI} 4;
@@ -3196,7 +3199,7 @@ for drive in ${All_Hard_Drives} ; do
   PrintBlkid ${drive};
 
   if [ 0 -lt ${size} 2>> ${Trash} ] ; then
-     if [ x"$(blkid  ${drive})" = x'' ] || [ x"$(blkid  | grep ${drive}:)" = x'' ] ; then
+     if [ x"$(blkid  ${drive})" = x'' ] || [ x"$(blkid -p -s USAGE ${drive})" = x'' ] ; then
 	# Drive is not a filesytem.
 
 	size=$((2*size));
@@ -3793,4 +3796,3 @@ else
 fi
 
 exit 0;
-

oldfred avatar Feb 17 '19 22:02 oldfred

@oldfred it looks like your diff is not the right diff. When i tried to patch it on the tarball linked by @baedacool it told me

File bootinfoscript is read-only; trying to patch anyway
patching file bootinfoscript
Reversed (or previously applied) patch detected!  Assume -R? [n] y

unphased avatar Mar 30 '21 22:03 unphased