Giter Club home page Giter Club logo

grub's Introduction

grub's People

Contributors

a1ive avatar agraf avatar arvidjaar avatar cdbennett avatar chrisccoulson avatar cjwatson avatar cpina avatar crass avatar darrenkenny avatar daxtens avatar esnowberg avatar fezie avatar floppym avatar gsutre avatar jgross1 avatar jwrdegoede avatar kreijack avatar marineam avatar martinezjavier avatar pfsmorigo avatar phcoder avatar pks-t avatar rlaager avatar robertmillan avatar sthibaul avatar tsoome avatar uudiin avatar vathpela avatar wenhuachang avatar xypron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

grub's Issues

Suggestions for i386-PC mode

I believe that porting all commands from the EFI mode to the i386-PC mode. This would allow all computers to use all the features available in this port.

query: dd command

Is it possible to backup sector 0 to sector 60 say of the same hard disk using dd?

e.g.
dd --if=(hd0) --of=(hd0) --bs=512 --count=1 --seek=60 --skip=0

image
image

"BlInitializeLibrary failed 0xc000009a" ERROR when chainloading bootmgfw.efi

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=419354&extra=page%3D1&page=5
IMG_20200315_013056

MS:
https://support.microsoft.com/en-us/help/4020050/blinitializelibrary-failed-xxx-error-when-you-install-or-start-an-oper

Cause

This problem occurs because the boot firmware on the computer generates lots of memory fragmentation.
Note Not all "BlInitializeLibrary failed XXX" errors are caused by this issue.

Workaround

We recommend that you do not let boot firmware create large amounts of fragmentation. Large memory fragmentation degrades the overall startup performance and causes problems.
More information

At the pre-boot stage, Windows Boot Manager sets the maximum number of global memory descriptor for a 64-bit UEFI system at 512. If the boot firmware creates a large amount of memory fragmentation, the memory descriptor count may exceed the set limit. This causes the "BlInitializeLibrary failed XXX" error.
Note This design applies only to the current operating system releases, including Windows 10, Windows Server 2016, and Windows Server 2012 R2. We do not guarantee that this design will apply to future versions.

dd (proc) or blocksize issue?

when using dd -if=(proc) to fill a 100K file with 00's, it takes about 70 seconds.
However, if I add bs=512 it is much quicker.
What are valid values for --bs?
I tried numbers larger than 512 but they are not accepted?
P.S. help dd does not mention (proc) usage or give valid values for --bs.

cp help

Does not specify which is source and which is destination?
image
Is this for FAT filesystems only? What if source file is larger than the destination file?
image

add silent switch for -d in loopback command

loopback -d loop

This gives a device not found error message if there is no loop device.
a -q switch would be nice to prevent the error message from being seen,
e.g. as in \boot\grubfm\rules\iso\win.sh in agFM.

Can't cross-compile grub2 for arm

Hello,
I'm trying to cross-compile grub2 for arm on a Ubuntu 18.04.2 LTS x86_64-bit host.

Build commands:
./configure --with-platform=efi --target=arm-linux-gnueabihf --disable-werror
make

Everything seems to be working but when i start make, I get this error:

normal/menu.c: In function ‘run_menu’:
normal/menu.c:852:11: error: ‘sound_open’ undeclared (first use in this function)
       if (sound_open)
           ^~~~~~~~~~
normal/menu.c:852:11: note: each undeclared identifier is reported only once for each function it appears in
normal/menu.c:853:6: warning: implicit declaration of function ‘player_fini’ [-Wimplicit-function-declaration]
      player_fini ();
      ^~~~~~~~~~~
normal/menu.c:853:6: warning: nested extern declaration of ‘player_fini’ [-Wnested-externs]
normal/menu.c:708:26: warning: variable ‘s2_time’ set but not used [-Wunused-but-set-variable]
   grub_uint64_t s1_time, s2_time;
                          ^~~~~~~
Makefile:51577: recipe for target 'normal/normal_module-menu.o' failed
make[3]: *** [normal/normal_module-menu.o] Error 1
make[3]: Leaving directory '/home/user/Desktop/grub2/grub-core'
Makefile:56887: recipe for target 'install' failed
make[2]: *** [install] Error 2
make[2]: Leaving directory '/home/user/Desktop/grub2/grub-core'
Makefile:11364: recipe for target 'install-recursive' failed
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory '/home/user/Desktop/grub2'
Makefile:12394: recipe for target 'install' failed
make: *** [install] Error 2

Query: How to get RAM size of system

In grub4dos I can get the total amount of RAM in a system.
How can I do this with grub2 (MBR and UEFI)?
For instance, I can automatically select a 32-bit install of Windows from a dual architecture ISO if the system has <4GB of RAM. Or run a 32-bit version of Linux if <4GB of RAM instead of the 64-bit version.

Speed up blocklist and stat -c

Is it possible to speed these up? They really are unusable at the moment.
doing a stat -c on a large 3GB ISO takes minutes.
Is this a blocksize problem (like using --bs=512 works for dd?)

Add non-US keyboard support to read command

The main (only?) way to get keyboard input when in the grub2 menu system is via the read command.
The terminal_input at_keyboard + keymap commands causes severe reliability issues with grub2, and it cannot be used.
Dealing with French (AZERTY) and German (QWERTZ) and other keyboards is still not working in grub2. This is a big problem!

Would it be possible to add simple keyboard support to the read command (or perhaps to whatever 'getkey' call is used by the read command) to 'translate' the keyboard characters. This may not solve the problem for entering commands at the terminal, but it would solve the problem of user input using the read command (e.g. name, password, etc.).

e.g. Add a new command to change a keyboard character on input so the read command returns the correct character.

setkey

Here is an example for grub4dos which uses a batch file for a german qwertz keyboard:

!BAT
#GERMAN
errorcheck off
#clear all settings
setkey
#setkey [new character] [QWERTY-USA character]
setkey z y
setkey Z Y
setkey y z
setkey Y Z
setkey doublequote at
setkey ampersand caret
setkey slash ampersand
setkey parenleft asterisk
setkey parenright parenleft
setkey equal parenright
setkey question underscore
setkey backslash minus
setkey plus bracketright
setkey asterisk braceright
setkey semicolon less
setkey colon greater
setkey minus slash
setkey backslash Aminus
setkey underscore question
setkey caret backquote
setkey quote equal
setkey backquote plus
setkey bracketleft semicolon
setkey braceleft colon
setkey bracketright quote
setkey braceright doublequote
setkey bar bracketleft
setkey at braceleft
setkey numbersign backslash
setkey at Aq
setkey less oem102
setkey greater shiftoem102
setkey braceleft A7
setkey bracketleft A8
setkey bracketright A9
setkey braceright A0
setkey tilde Abracketright
setkey backslash Aminus

#key names
#escape, exclam (!), at (@), numbersign (#), dollar ($), parenright ()), caret (^), ampersand (&), asterisk (*), plus (+), percent (%)
#minus (-), underscore (_), equal (=), parenleft [(], backspace (backspace), tab (Tab), bracketleft ([), braceleft ({), bracketright (])
#braceright (}), enter (carriage return), semicolon (;), colon (:), quote (') , doublequote ("), slash (/), backquote (`), tilde (~)
#backslash (\), bar (|), comma (,), less (<) period (.) , greater (>), question (?)
#space, home, uparrow, pageup, leftarrow, center, rightarrow, end, downarrow, pagedown, insert, delete, F1-F10, shiftF1-shiftF10, ctrlF1-ctrlF10
#Use prefix A for Alt+, e.g. Aequals, Aq, Aslash, A0, etc. Also oem102 and shiftoem102.

Query: file string search?

In Easy2Boot I have a grub4dos code which asks the user to input the computer name and user account name that they want for a Windows Install.
It then uses 'search&replace' code to replace the strings 'PCNAME' and 'UNAME' (and the Product key) with the users input in an XML file.
This means that the user can use the same XML file to install many different computers with Windows.

  1. Boot to grub2
  2. User enters account name and computer name
  3. grub2 changes XML file
  4. Windows Setup runs unattended with new XML file

The user input strings can be longer than 'PCNAME' and 'UNAME'.
Can you suggest a way this can be done in grub2?

grub4dos has an enhanced cat command which can be used to find the position of a string in a file. Can grub2 do this? If I knew the position of a string perhaps I could use dd with seek and skip to copy portions of the input XML file to an output XML file?

enhancement: auto-completion not case-insensitive

When using the tab for auto-complete command, it is still case sensitive
Is it possible to make this use the special grub_fs_case_sensitive variable too?
(if it is too difficult then don't worry).

Add wimboot support for GRUB2 EFI (GRUB2 linuxefi bzImage / UEFI binary check)

Hello, this problem with GRUB2 EFI and wimboot has apparently been around a bit longer and there have also been countless discussions in the repective mailing lists but not really with a solution and because of that I wanted to understand why wimboot and GRUB2 not working with each other in EFI mode.
I don't know much about GRUB2 or wimboot (had them just patched a little bit) but i think because wimboot is a combined bzImage / UEFI Binary and GRUB2 EFI displays a Kernel too old at startup off wimboot that means GRUB2 EFI tries to start the wimboot binary as kernel and not as UEFI binary.

Well I've seen that this repo here is active and interested in extended features maybe someone here knows a solution or even has a patch/fix for that?

I think linuxefi need a check for the PE and MZ headers? https://firmware.intel.com/blog/linux-efi-boot-stub

Kind regards,
Sporesirius

Need to get dword values from MBR (LBA0)

Is read_dword supported? Help text at https://a1ive.github.io/grub2_cmd_zh.html suggests read_byte, read_word, read_dword, write_bytes
I want to get dword values from the MBR of a disk (hd0)0+1.
then use expr x+y to add two values
then use test x -ge y etc. to check values.
Any idea how to do this?
I can get the bytes via hexdump but this returns a string of simple bytes not a dword value.
Any help appreciated.

dd support for /dev/zero

I want to write all 00's to an existing NTFS file to fill it with 00's.
Does dd support something like --if=/dev/zero ?
Also, I want to write a string (the value of a variable) into an existing file (NTFS or FAT).
Is there a way to do this?

Add Firadisk support

Some WinPE ISOs and VHDs have the Firadisk driver installed.
A typical example is the Sergei Strelec WinPE ISOs.
https://sergeistrelec.ru/winpe-10-8-sergei-strelec-english/
These can be booted correctly using grub4dos. This string in memory can contain instructions - for instance what the path and name of the ISO file is that it should mount in WinPE as a drive.

In grub4dos, we just need to write the correct bytes into upper memory (so the bytes are still present after the boot.wim has loaded into RAM).

Here is a sample grub4dos menu - %ISOC% is the full path, %~pnx1 is the path+filename (no device):

#for BartPE/Hirens Boot CD 13.1/Strelec using  FiraDisk string in memory
# create small drive at top of memory (4 x 512 bytes)
map --mem --top (md)+4 (99) 
map %ISOC% (0xff) > nul || map --mem %ISOC% (0xff)
map --hook
root (0xff) || rootnoverify (0xff)
# write FiraDisk command string into memory
write (99) [FiraDisk]\nStartOptions=cdrom,vmem=find:%~pnx1;\n\0 > nul
chainloader (0xff)

Is there an equivalent in grub - maybe using dd?
If so, this would boot these ISOs properly (with all Desktop icons).
The code could also be added into grubfm File Manager when an ISO is booted to (it can do no harm if the ISO does not contain the FiraDisk driver).

Query: is partnew supported under UEFI?

Using partnew in grub4dos, it is possible to boot 99% of Linux LiveCD ISO files directly without needing any kernel cheat codes, etc.
Is partnew supported when UEFI-booting (MBR partitions)?
Also, is dd (writes/reads to USB) and blocklist supported under UEFI?

partnew --type=0x00 not working (MBR and UEFI64 tested)

If an image file is used, even if the file is a FAT32 or NTFS partition, the type number is always set to 0 - i.e. auto detection is not working. Same image file works OK with grub4dos.

image

	echo
	echo Updating Partition 1...
	hexdump -s 0x1be -n 0x40 (${grubfm_disk})0+1
	echo partnew --type=0x00
	partnew -a --type=0x00 --file="${gfile}" (${grubfm_disk}) 1
	echo now...
	# delete ptns 2 and 3 if extension has 23 in it
	if [ "$ext23" = "0" ] ; then partnew --type=0 --start=0 --length=0 (${grubfm_device}) 2 ; echo Ptn2 deleted ; fi
	if [ "$ext23" = "0" ] ; then partnew --type=0 --start=0 --length=0 (${grubfm_device}) 3 ; echo Ptn3 deleted ; fi
	hexdump -s 0x1be -n 0x40 (${grubfm_disk})0+1
	sleep 1
	read

Same behaviour in MBR-mode.
The grub4dos equivalent would set 0C if FAT32 or 07 if NTFS or exFAT or 0 if unrecognised - e.g. ISO (not tested partition types).

builtins.c from grub4dos 0.4.6a

#define	BS	((struct master_and_dos_boot_sector *)mbr)
      /* try to find out the filesystem type */
      if (BS->boot_signature == 0xAA55 && ! probe_bpb(BS))
      {
	if ((new_type & 0xFFFFFFEF) == 0)	/* auto filesystem type */
	{
		new_type |= 
			filesystem_type == 1 ? 0x0E /* FAT12 */ :
			filesystem_type == 2 ? 0x0E /* FAT16 */ :
			filesystem_type == 3 ? 0x0C /* FAT32 */ :
			filesystem_type == 4 ? 0x07 /* NTFS */  :
			filesystem_type == 6 ? 0x07 /* exFAT */ :
			/*filesystem_type == 5 ?*/ 0x83 /* EXT2 */;
		if (filesystem_type == 5)
			new_type = 0x83; /* EXT2 */
	}
	printf_debug0 ("%s BPB found %s the leading 0xEB (jmp). Hidden sectors=0x%X\n",
		(filesystem_type == 1 ? "FAT12" :
		filesystem_type == 2 ? "FAT16" :
		filesystem_type == 3 ? "FAT32" :
		filesystem_type == 4 ? "NTFS"  :
		filesystem_type == 6 ? "exFAT" :
		/*filesystem_type == 5 ?*/ "EXT2 GRLDR"),
		(BS->dummy1[0] == (char)0xEB ? "with" : "but WITHOUT"),
		BS->hidden_sectors);
	if (BS->hidden_sectors != new_start)
	{
	    printf_debug0 ("Changing hidden sectors 0x%X to 0x%lX... ", BS->hidden_sectors, (unsigned long long)new_start);
	    BS->hidden_sectors = new_start;
	    /* Write back/update the boot sector.  */
	    if (! rawwrite (current_drive, new_start, (unsigned long long)(unsigned int)mbr))
	    {
		printf_debug0 ("failure.\n");
	        return 0;
	    } else {
		printf_debug0 ("success.\n");
	    }
	}
int
probe_bpb (struct master_and_dos_boot_sector *BS)
{
  unsigned long i,j; 
  /* first, check ext2 grldr boot sector */
//  probed_total_sectors = BS->total_sectors_long;
 	if (*(unsigned short *)((char *)BS)  == 0x2EEB										//"jmp + 0x30"
		&& ((int)(char *)BS == 0x8000 && *(unsigned short *)((char *)0x2F000 + 0x438) == 0xEF53))
		{
	
  /* at 0D: (byte)Sectors per block. Valid values are 2, 4, 8, 16 and 32. */
//  if (BS->sectors_per_cluster < 2 || 32 % BS->sectors_per_cluster)
	i = 2 << *(unsigned long *)((char *)0x2F000 + 0x418);
	if (i < 2 || 32 % i) 
	goto failed_ext2_grldr;

  /* at 0E: (word)Bytes per block.
   * Valid values are 0x400, 0x800, 0x1000, 0x2000 and 0x4000.
   */
//  if (BS->reserved_sectors != BS->sectors_per_cluster * 0x200)
//	goto failed_ext2_grldr;
  
//  i = *(unsigned long *)((char *)BS + 0x2C);
//  if (BS->reserved_sectors == 0x400 && i != 2)
  j = i << 9;
	i = *(unsigned long *)((char *)0x2F000 + 0x414) + 1;	
		if (j == 0x400 && i != 2)
	goto failed_ext2_grldr;

//  if (BS->reserved_sectors != 0x400 && i != 1)
	if (j != 0x400 && i != 1)
	goto failed_ext2_grldr;

  /* at 14: Pointers per block(number of blocks covered by an indirect block).
   * Valid values are 0x100, 0x200, 0x400, 0x800, 0x1000.
   */

//  i = *(unsigned long *)((char *)BS + 0x14);
	i = j >> 2;
  if (i < 0x100 || 0x1000 % i)
	goto failed_ext2_grldr;
  
  /* at 10: Pointers in pointers-per-block blocks, that is, number of
   *        blocks covered by a double-indirect block.
   * Valid values are 0x10000, 0x40000, 0x100000, 0x400000 and 0x1000000.
   */

//  if (*(unsigned long *)((char *)BS + 0x10) != i * i)
//	goto failed_ext2_grldr;
  
//  if (! BS->sectors_per_track || BS->sectors_per_track > 63)
//	goto failed_ext2_grldr;
  
//  if (BS->total_heads > 256 /* (BS->total_heads - 1) >> 8 */)
//	goto failed_ext2_grldr;
  
//  probed_heads = BS->total_heads;
//  probed_sectors_per_track = BS->sectors_per_track;
//  sectors_per_cylinder = probed_heads * probed_sectors_per_track;
//  probed_cylinders = (probed_total_sectors + sectors_per_cylinder - 1) / sectors_per_cylinder;
	probed_heads = 0xff;
  probed_sectors_per_track = 0x3f;
  sectors_per_cylinder = probed_heads * probed_sectors_per_track;
	probed_total_sectors = *(unsigned long *)((char *)0x2F000 + 0x404);
  probed_cylinders = (probed_total_sectors + sectors_per_cylinder - 1) / sectors_per_cylinder;

  filesystem_type = 5;
  /* BPB probe success */
  return 0;
	}
	
failed_ext2_grldr:

	/* Second, check exfat grldr boot sector */
	if (*(unsigned long long *)((char *)BS + 03) != 0x2020205441465845)	//'EXFAT   '
		goto failed_exfat_grldr;
	if (*(unsigned char *)((char *)BS + 0x6c) != 9)
		goto failed_exfat_grldr;
	if (*(unsigned char *)((char *)BS + 0x6e) != 1)
		goto failed_exfat_grldr;
		
	probed_heads = 0xff;
  probed_sectors_per_track = 0x3f;
  sectors_per_cylinder = probed_heads * probed_sectors_per_track;
	probed_total_sectors = *(unsigned long *)((char *)BS + 0x48);
  probed_cylinders = (probed_total_sectors + sectors_per_cylinder - 1) / sectors_per_cylinder;
	
	filesystem_type = 6;
	return 0;

failed_exfat_grldr:

	if (*(unsigned short *)((char *)BS + 0x16) == 0x6412)							//'12 64'
	{
		filesystem_type = 7;																						//fat12-64
		return 0;
	}
	
	if (*(unsigned long *)((char *)BS + 0x1b4) == 0x46424246)					//'FBBF'
	{
		filesystem_type = 8;		
		return 0;
	}		

	/* Second, check FAT12/16/32/NTFS grldr boot sector */
  probed_total_sectors = BS->total_sectors_short ? BS->total_sectors_short : (BS->total_sectors_long ? BS->total_sectors_long : (unsigned long)BS->total_sectors_long_long);
#if 0
  if (probed_total_sectors != sector_count && sector_count != 1 && (! (probed_total_sectors & 1) || probed_total_sectors != sector_count - 1))
	goto failed_probe_BPB;
#endif
  if (BS->bytes_per_sector != 0x200)
	return 1;
  if (! BS->sectors_per_cluster || 128 % BS->sectors_per_cluster)
	return 1;
//  if (! BS->reserved_sectors)	/* NTFS reserved_sectors is 0 */
//	goto failed_probe_BPB;
  if (BS->number_of_fats > (unsigned char)2 /* BS->number_of_fats && ((BS->number_of_fats - 1) >> 1) */)
	return 1;
  if (! BS->sectors_per_track || BS->sectors_per_track > 63)
	return 1;
  if (BS->total_heads > 256 /* (BS->total_heads - 1) >> 8 */)
	return 1;
  if (BS->media_descriptor < (unsigned char)0xF0)
	return 1;
  if (! BS->root_dir_entries && ! BS->total_sectors_short && ! BS->sectors_per_fat) /* FAT32 or NTFS */
	if (BS->number_of_fats && BS->total_sectors_long && BS->sectors_per_fat32)
	{
		filesystem_type = 3;
	}
	else if (! BS->number_of_fats && ! BS->total_sectors_long && ! BS->reserved_sectors && BS->total_sectors_long_long)
	{
		filesystem_type = 4;
	} else
		return 1;	/* unknown NTFS-style BPB */
  else if (BS->number_of_fats && BS->sectors_per_fat) /* FAT12 or FAT16 */
	if ((probed_total_sectors - BS->reserved_sectors - BS->number_of_fats * BS->sectors_per_fat - (BS->root_dir_entries * 32 + BS->bytes_per_sector - 1) / BS->bytes_per_sector) / BS->sectors_per_cluster < 0x0ff8 )
	{
		filesystem_type = 1;
	} else {
		filesystem_type = 2;
	}
  else
	return 1;	/* unknown BPB */
  
  probed_heads = BS->total_heads;
  probed_sectors_per_track = BS->sectors_per_track;
  sectors_per_cylinder = probed_heads * probed_sectors_per_track;
  probed_cylinders = (probed_total_sectors + sectors_per_cylinder - 1) / sectors_per_cylinder;

  /* BPB probe success */
  return 0;
	
}

Add first-character menu jump feature

grub4dos it has a useful menu feature where you can press a key to jump to the menu entry that begins with that key.
e.g. If you press the P key, it will select the next menu entry that begins with the letter p or P. If you press the P key again, it will select the next menu entry down (or the first menu entry beginning with P or p if there is no menu entry beginning with P below it).
Menu hotkeys such as e, c, etc. must be invoked using the shift key (e.g. SHIFT+c for command prompt, SHIFT+e for edit).
Key names should be used (not key scan codes) for differently labelled keyboards (e.g. QWERTZ, AZERTY).
This may be too difficult to implement but it would be a useful feature when we have large/long menus.

partnew is not compatible with grub4dos

Test partition image attached
It is a 32MB FAT32 partition image.

If I use grub4dos to add this image in as a partition, the new partition can be seen in grub4dos, grub2 and Windows.

However, if I use the grub2 (in a1ive grub2 File Manager) to add in the same file using partnew, then although the new partition is accessible in grub2 and in Windows (if in correct order), grub4dos cannot see it!

It is very weird and I cannot see why grub4dos does not like it!

Ptn1: NTFS + grub4dos and \TESTFAT32.imgptn
Ptn2: FAT32 with grub2

If use grub4dos:
partnew (hd0,2) 0x0c /TESTFAT32.imptn
image
image

then new partition is accessible under grub4dos - all is good.

However, if I use grub2 to add the new partition:
partnew --type=0x0C --file=(hd0,msdos1)/TESTFAT32.imgPTN (hd0) 3

image

new partition can be accessed using grub2

and then reboot to grub4dos, grub4dos cannot see the new partition.

image

TESTFAT32.zip

hexdump not working from UEFI on some PCs/notebooks

Dell Vostro 3558
MacBook

Some users report a problem with switching in .imgPTN files.
On a MacBook, hexdump does not work and returns all 00's
image

Works OK on my IdeaPad 300 and Asus Z87 PC.

Same users reports no problem using MBR\Legacy booting using same code for .imgPTN.

Any ideas? Maybe dd also does not work in UEFI on these models (untested)?

Add macOS related features

I have some suggestions (maybe for the future) for macOS related features like:

  • APFS support
  • macOS loader (possibility to inject Kext files)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.