mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 01:15:09 +00:00
[FREELDR]
- Move PcBeep function declaration to a better header. - Resuscitate OptionMenuCustomBootReactOS() from revision r52491, update it to match recent changes in freeldr as well as making it using new boot method, and reuse ConstructArcPath. Why I'm doing this ? Because it can be useful to enter personalized boot options by hand at boot time rather than being obliged to edit freeldr.ini. This needs care, not brutal deletion. svn path=/trunk/; revision=58020
This commit is contained in:
parent
dcb9fa5856
commit
b8b7caccfe
7 changed files with 98 additions and 10 deletions
|
@ -67,6 +67,9 @@ VOID OptionMenuCustomBoot(VOID)
|
||||||
case 2: // Boot Sector File
|
case 2: // Boot Sector File
|
||||||
OptionMenuCustomBootBootSectorFile();
|
OptionMenuCustomBootBootSectorFile();
|
||||||
break;
|
break;
|
||||||
|
case 3: // ReactOS
|
||||||
|
OptionMenuCustomBootReactOS();
|
||||||
|
break;
|
||||||
case 4: // Linux
|
case 4: // Linux
|
||||||
OptionMenuCustomBootLinux();
|
OptionMenuCustomBootLinux();
|
||||||
break;
|
break;
|
||||||
|
@ -117,7 +120,8 @@ VOID OptionMenuCustomBootDisk(VOID)
|
||||||
OperatingSystem.LoadIdentifier = NULL;
|
OperatingSystem.LoadIdentifier = NULL;
|
||||||
OperatingSystem.OsLoadOptions = NULL;
|
OperatingSystem.OsLoadOptions = NULL;
|
||||||
|
|
||||||
LoadAndBootDrive(&OperatingSystem, 0);
|
// LoadAndBootDrive(&OperatingSystem, 0);
|
||||||
|
LoadOperatingSystem(&OperatingSystem);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID OptionMenuCustomBootPartition(VOID)
|
VOID OptionMenuCustomBootPartition(VOID)
|
||||||
|
@ -177,7 +181,8 @@ VOID OptionMenuCustomBootPartition(VOID)
|
||||||
OperatingSystem.LoadIdentifier = NULL;
|
OperatingSystem.LoadIdentifier = NULL;
|
||||||
OperatingSystem.OsLoadOptions = NULL;
|
OperatingSystem.OsLoadOptions = NULL;
|
||||||
|
|
||||||
LoadAndBootPartition(&OperatingSystem, 0);
|
// LoadAndBootPartition(&OperatingSystem, 0);
|
||||||
|
LoadOperatingSystem(&OperatingSystem);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID OptionMenuCustomBootBootSectorFile(VOID)
|
VOID OptionMenuCustomBootBootSectorFile(VOID)
|
||||||
|
@ -250,7 +255,87 @@ VOID OptionMenuCustomBootBootSectorFile(VOID)
|
||||||
OperatingSystem.LoadIdentifier = NULL;
|
OperatingSystem.LoadIdentifier = NULL;
|
||||||
OperatingSystem.OsLoadOptions = NULL;
|
OperatingSystem.OsLoadOptions = NULL;
|
||||||
|
|
||||||
LoadAndBootBootSector(&OperatingSystem, 0);
|
// LoadAndBootBootSector(&OperatingSystem, 0);
|
||||||
|
LoadOperatingSystem(&OperatingSystem);
|
||||||
|
}
|
||||||
|
|
||||||
|
VOID OptionMenuCustomBootReactOS(VOID)
|
||||||
|
{
|
||||||
|
ULONG_PTR SectionId;
|
||||||
|
CHAR SectionName[100];
|
||||||
|
CHAR BootDriveString[20];
|
||||||
|
CHAR BootPartitionString[20];
|
||||||
|
CHAR ReactOSSystemPath[200];
|
||||||
|
CHAR ReactOSARCPath[200];
|
||||||
|
CHAR ReactOSOptions[200];
|
||||||
|
TIMEINFO* TimeInfo;
|
||||||
|
OperatingSystemItem OperatingSystem;
|
||||||
|
|
||||||
|
RtlZeroMemory(SectionName, sizeof(SectionName));
|
||||||
|
RtlZeroMemory(BootDriveString, sizeof(BootDriveString));
|
||||||
|
RtlZeroMemory(BootPartitionString, sizeof(BootPartitionString));
|
||||||
|
RtlZeroMemory(ReactOSSystemPath, sizeof(ReactOSSystemPath));
|
||||||
|
RtlZeroMemory(ReactOSOptions, sizeof(ReactOSOptions));
|
||||||
|
|
||||||
|
if (!UiEditBox(BootDrivePrompt, BootDriveString, 20))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!UiEditBox(BootPartitionPrompt, BootPartitionString, 20))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!UiEditBox(ReactOSSystemPathPrompt, ReactOSSystemPath, 200))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!UiEditBox(ReactOSOptionsPrompt, ReactOSOptions, 200))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate a unique section name
|
||||||
|
TimeInfo = ArcGetTime();
|
||||||
|
sprintf(SectionName, "CustomReactOS%u%u%u%u%u%u", TimeInfo->Year, TimeInfo->Day, TimeInfo->Month, TimeInfo->Hour, TimeInfo->Minute, TimeInfo->Second);
|
||||||
|
|
||||||
|
// Add the section
|
||||||
|
if (!IniAddSection(SectionName, &SectionId))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the BootType
|
||||||
|
if (!IniAddSettingValueToSection(SectionId, "BootType", "Windows2003"))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct the ReactOS ARC system path
|
||||||
|
ConstructArcPath(ReactOSARCPath, ReactOSSystemPath, DriveMapGetBiosDriveNumber(BootDriveString), atoi(BootPartitionString));
|
||||||
|
|
||||||
|
// Add the system path
|
||||||
|
if (!IniAddSettingValueToSection(SectionId, "SystemPath", ReactOSARCPath))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the CommandLine
|
||||||
|
if (!IniAddSettingValueToSection(SectionId, "Options", ReactOSOptions))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
UiMessageBox(CustomBootPrompt);
|
||||||
|
|
||||||
|
OperatingSystem.SystemPartition = SectionName;
|
||||||
|
OperatingSystem.LoadIdentifier = NULL;
|
||||||
|
OperatingSystem.OsLoadOptions = NULL; // ReactOSOptions
|
||||||
|
|
||||||
|
// LoadAndBootWindows(&OperatingSystem, _WIN32_WINNT_WS03);
|
||||||
|
LoadOperatingSystem(&OperatingSystem);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID OptionMenuCustomBootLinux(VOID)
|
VOID OptionMenuCustomBootLinux(VOID)
|
||||||
|
@ -352,7 +437,8 @@ VOID OptionMenuCustomBootLinux(VOID)
|
||||||
OperatingSystem.LoadIdentifier = "Custom Linux Setup";
|
OperatingSystem.LoadIdentifier = "Custom Linux Setup";
|
||||||
OperatingSystem.OsLoadOptions = NULL;
|
OperatingSystem.OsLoadOptions = NULL;
|
||||||
|
|
||||||
LoadAndBootLinux(&OperatingSystem, 0);
|
// LoadAndBootLinux(&OperatingSystem, 0);
|
||||||
|
LoadOperatingSystem(&OperatingSystem);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID OptionMenuReboot(VOID)
|
VOID OptionMenuReboot(VOID)
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
void sound(int freq);
|
void sound(int freq);
|
||||||
void delay(unsigned msec);
|
void delay(unsigned msec);
|
||||||
|
|
||||||
void PcBeep(void)
|
VOID PcBeep(VOID)
|
||||||
{
|
{
|
||||||
sound(700);
|
sound(700);
|
||||||
delay(200);
|
delay(200);
|
||||||
|
|
|
@ -26,6 +26,8 @@
|
||||||
|
|
||||||
VOID PcMachInit(const char *CmdLine);
|
VOID PcMachInit(const char *CmdLine);
|
||||||
|
|
||||||
|
VOID PcBeep(VOID);
|
||||||
|
|
||||||
VOID PcConsPutChar(int Ch);
|
VOID PcConsPutChar(int Ch);
|
||||||
BOOLEAN PcConsKbHit(VOID);
|
BOOLEAN PcConsKbHit(VOID);
|
||||||
int PcConsGetCh(VOID);
|
int PcConsGetCh(VOID);
|
||||||
|
|
|
@ -119,6 +119,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
VOID BootMain(LPSTR CmdLine);
|
VOID BootMain(LPSTR CmdLine);
|
||||||
|
VOID LoadOperatingSystem(IN OperatingSystemItem* OperatingSystem);
|
||||||
VOID RunLoader(VOID);
|
VOID RunLoader(VOID);
|
||||||
|
|
||||||
#endif // defined __FREELDR_H
|
#endif // defined __FREELDR_H
|
||||||
|
|
|
@ -34,6 +34,6 @@ DissectArcPath2(
|
||||||
OUT ULONG *PathSyntax);
|
OUT ULONG *PathSyntax);
|
||||||
BOOLEAN DissectArcPath(CHAR *ArcPath, CHAR *BootPath, UCHAR* BootDrive, ULONG* BootPartition);
|
BOOLEAN DissectArcPath(CHAR *ArcPath, CHAR *BootPath, UCHAR* BootDrive, ULONG* BootPartition);
|
||||||
VOID ConstructArcPath(PCHAR ArcPath, PCHAR SystemFolder, UCHAR Disk, ULONG Partition);
|
VOID ConstructArcPath(PCHAR ArcPath, PCHAR SystemFolder, UCHAR Disk, ULONG Partition);
|
||||||
|
#if 0
|
||||||
UCHAR ConvertArcNameToBiosDriveNumber(PCHAR ArcPath);
|
UCHAR ConvertArcNameToBiosDriveNumber(PCHAR ArcPath);
|
||||||
|
#endif
|
||||||
void PcBeep(void);
|
|
||||||
|
|
|
@ -160,8 +160,6 @@ DissectArcPath2(
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
VOID ConstructArcPath(PCHAR ArcPath, PCHAR SystemFolder, UCHAR Disk, ULONG Partition)
|
VOID ConstructArcPath(PCHAR ArcPath, PCHAR SystemFolder, UCHAR Disk, ULONG Partition)
|
||||||
{
|
{
|
||||||
char tmp[50];
|
char tmp[50];
|
||||||
|
@ -198,6 +196,7 @@ VOID ConstructArcPath(PCHAR ArcPath, PCHAR SystemFolder, UCHAR Disk, ULONG Parti
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
UCHAR ConvertArcNameToBiosDriveNumber(PCHAR ArcPath)
|
UCHAR ConvertArcNameToBiosDriveNumber(PCHAR ArcPath)
|
||||||
{
|
{
|
||||||
char * p;
|
char * p;
|
||||||
|
|
|
@ -193,7 +193,7 @@ LoadReactOSSetup(IN OperatingSystemItem* OperatingSystem,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!InfGetDataField (&InfContext, 1, &LoadOptions))
|
if (!InfGetDataField(&InfContext, 1, &LoadOptions))
|
||||||
{
|
{
|
||||||
ERR("Failed to get load options\n");
|
ERR("Failed to get load options\n");
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue