Обычно для uefi вы делаете это через свои настройки BIOS. Я не знаю вашу модель, но до сих пор у всех ноутбуков, с которыми я работал, была установка загрузки uefi, которая была бы - аналоговой для выбора загрузочного диска - список всех загрузчиков, которые находятся на вашем загрузочном диске efi partition. Затем вы должны выбрать, какой из них следует попробовать первым, вторым и так далее.
Просмотрите свои параметры BIOS.
#include <stdio.h>
static unsigned long auxfilesize(FILE* fp) {
unsigned long len=0;
int c=0;
while ( (c = fgetc(fp)) != -1 ) {
len++;
}
return len;
}
static unsigned long aux_copyNBytesFromTo(FILE* from, FILE* to,
unsigned long fromSize,
unsigned long bytes) {
unsigned long iter = 0;
while ( iter++ < fromSize ) {
int c = fgetc(from);
fputc(c, to);
}
iter-=1;
if ( fromSize < bytes ) {
while ( iter++ < bytes ) {
fputc(0, to);
}
}
return iter;
}
int main(int argc, char **argv) {
FILE *from = fopen(argv[1], "rb");
FILE *to = fopen(argv[2], "wb" );
unsigned long l = auxfilesize(from);
rewind(from);
aux_copyNBytesFromTo(from, to, l, (l + l/2)) ;
fclose(from);
fclose(to);
}
Эта простая программа добавляет N байтов в конец виртуального изображения. Я использовал образ раздела Paragon для Windows XP, чтобы объединить вновь созданные изображения. Здесь работает ОК.