Skip to content

[REACTOS] Merge our bootcd and livecd into an all-in-one ReactOS BootCD#7313

Merged
HBelusca merged 2 commits into
masterfrom
hbelusca/all_in_one_bootlivecd
Apr 28, 2026
Merged

[REACTOS] Merge our bootcd and livecd into an all-in-one ReactOS BootCD#7313
HBelusca merged 2 commits into
masterfrom
hbelusca/all_in_one_bootlivecd

Conversation

@HBelusca
Copy link
Copy Markdown
Contributor

@HBelusca HBelusca commented Sep 5, 2024

Purpose & Proposed changes

This new BootCD contains the functionality of both the original bootcd (text-mode 1st-stage installer) and the livecd (that will include the 1st-stage GUI installer later).
Our separate livecd ISOs become obsolete, and this completely removes the need for the so-called "hybridcd" ISO.

Some details:

  • The "hybridcd" build target is completely removed, since now the new BootCD is basically what we used to call "hybridcd".

  • The "livecd" build target is kept so far (to minimize the code changes), but internally I start to refer to it as "LiveImage", and is reduced to a minimum.

    A minimal non-bootable "liveimg.iso" is built (but currently not included within the BootCD). Its purpose will be to implement the "ReactOS Live" functionality as a RAMDISK. (We currently don't support other file formats apart from ISO and flat disk for a RAMDISK).

    The "ReactOS Live" (non-RAMDISK) is implemented by adding to the BootCD file tree the files from the LiveImage. These files add two root directories, "Profiles" and "reactos" (which is the SystemRoot for the non-ramdisk LiveImage).

  • The minimal text-mode ReactOS installation used for the 1st-stage installer, including USETUP itself, and the executable for the 1st-stage GUI installer and the reactos.cab (installation source), are moved to the root directory called "i386" (ideally, one directory per architecture).

    The underlying motivation for this, is to ease the manual (or automated) production of bootcds containing more than one of the supported ReactOS architectures.

  • The "bootcdregtest" target, i.e. the ISOs we feed our testbots with, are left untouched, i.e. they are only constituted of the 1st-stage text-mode installation only, but placed in a per-architecture root directory ("i386", etc. as for the bootcd).

  • Remove the ACPI APIC/SMP entries from bootcd.ini. They will be made available via the Advanced Boot Options F8 menu in Debug builds, for testing purposes only, in a subsequent commit.

This commit is based upon an older SVN one:
svn path=/branches/setup_improvements/; revision=75273

JIRA issues: CORE-9069, CORE-13525, RELEASE-11

TODOs and considerations for reviewers (please quote a point from below and comment in the PR)

  • The bootcdregtest ISO needs the same _CD_ARCH_DESTINATION trick (i386, amd64...) as for the bootcd.
  • I accidentally noticed that the GUI setup (at least) seems to work well for installing ROS files by copying them from the livecd tree structure, not just from reactos.cab ! Actually, more work needs to be done in this regard, and will be addressed in future commits.
  • Verify that @learn-more 's JIRA issue CORE-9870 is either fixed or doesn't apply anymore.
  • The bootcdregtest build target is still present. I think this is the one that is being used for our testbots; however it seems something is still missing: @ColinFinck you've assigned this JIRA report ONLINE-709 to you, could you tell whether it still makes sense?
    EDIT: Will be dealt with later (TBD).
  • Consider disabling the "Install ReactOS" button in the livecd graphical menu, until the 1st-stage GUI installer is fully ready.
    Addressed in commit 9c0efba (PR [USERINIT] Hide install option on LiveCD when no installer is available #8614), for RELEASE-8.

@HBelusca HBelusca added enhancement For PRs with an enhancement/new feature. review pending For PRs undergoing review. refactoring For refactoring changes. 1st stage GUI setup labels Sep 5, 2024
@HBelusca HBelusca self-assigned this Sep 5, 2024
@github-actions github-actions Bot added the freeldr Freeloader changes label Sep 5, 2024
Comment thread boot/bootdata/txtsetup.sif
Comment thread base/setup/welcome/CMakeLists.txt Outdated
Comment thread boot/bootdata/autorun.inf
Comment thread boot/bootdata/bootcd.ini Outdated
@jeditobe
Copy link
Copy Markdown
Contributor

jeditobe commented Sep 6, 2024

This improvement may affect PXE boot, is not it?

@HBelusca
Copy link
Copy Markdown
Contributor Author

HBelusca commented Sep 6, 2024

This improvement may affect PXE boot, is not it?

I don't think so, but if you're able to test PXE boot @jeditobe , I would invite you to give it a try by using one of the available github actions builds from there (maybe a GCC x86 debug build to begin with).

Copy link
Copy Markdown
Contributor

@JoachimHenze JoachimHenze left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please wait with the merging of this PR until the releases/0.4.15 will have been branched already, which is expected to happen 2024-09-09. The reason for that request is that the current joined .isos size of 431MB (for gcc dbg) is currently bigger than the sum of former livecd and bootcd. I am sure we will improve on that in the future, but until then, let's release with the old thing one more time.

@HBelusca
Copy link
Copy Markdown
Contributor Author

Please wait with the merging of this PR until the releases/0.4.15 will have been branched already, which is expected to happen 2024-09-09. The reason for that request is that the current joined .isos size of 431MB (for gcc dbg) is currently bigger than the sum of former livecd and bootcd. I am sure we will improve on that in the future, but until then, let's release with the old thing one more time.

For sure I'll wait, and also until I get more feedback and approvals here.

@JoachimHenze JoachimHenze self-requested a review September 11, 2024 22:02
@HBelusca HBelusca force-pushed the hbelusca/all_in_one_bootlivecd branch from 071597c to 38b306a Compare September 29, 2024 16:05
@HBelusca HBelusca force-pushed the hbelusca/all_in_one_bootlivecd branch from 38b306a to 4f6ba29 Compare October 20, 2024 15:03
@HBelusca HBelusca dismissed JoachimHenze’s stale review October 20, 2024 15:10

0.4.15 release is now behind us. I've also removed the inclusion of the ramdisk ISO file, so now the size of the proposed boot/livecd is really the sum of former bootcd and livecd.

@HBelusca HBelusca force-pushed the hbelusca/all_in_one_bootlivecd branch 4 times, most recently from 9a74de3 to 81b3f0a Compare October 24, 2024 12:18
Copy link
Copy Markdown
Contributor

@cbialorucki cbialorucki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you still pursuing this @HBelusca? Or are you waiting for GUI setup?

Copy link
Copy Markdown
Member

@learn-more learn-more left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I very much like the idea, it would solve a lot of confusion for people when downloading it the first time.

As long as unattend.inf keeps working, let's go.

@HBelusca HBelusca force-pushed the hbelusca/all_in_one_bootlivecd branch 4 times, most recently from 0a2e632 to 60d19aa Compare April 16, 2026 21:34
HBelusca added a commit that referenced this pull request Apr 27, 2026
…CD (#7313)

RELEASE-11

It contains the functionality of both the original bootcd (text-mode
1st-stage installer) and the livecd (that will include the 1st-stage
GUI installer later).
Our separate livecd ISOs become obsolete, and this completely removes
the need for the so-called "hybridcd" ISO.

Some details:

- The "hybridcd" build target is completely removed, since now the new
  BootCD *is* basically what we used to call "hybridcd".

- The "livecd" build target is kept so far (to minimize the code changes),
  but internally I start to refer to it as "LiveImage", and is reduced
  to a minimum.

  A minimal non-bootable "liveimg.iso" is built (but currently not
  included within the BootCD). Its purpose will be to implement the
  "ReactOS Live" functionality as a RAMDISK.
  (We currently don't support other file formats apart from ISO and
  flat disk for a RAMDISK).

  The "ReactOS Live" (non-RAMDISK) is implemented by adding to the
  BootCD file tree the files from the LiveImage.
  These files add two root directories, "Profiles" and "reactos"
  (which is the SystemRoot for the non-ramdisk LiveImage).

- The minimal text-mode ReactOS installation used for the 1st-stage
  installer, including USETUP itself, and the executable for the
  1st-stage GUI installer and the reactos.cab (installation source),
  are moved to the root directory called "i386" (ideally, one directory
  per architecture).

- The "bootcdregtest" target, i.e. the ISOs we feed our testbots with,
  are left untouched, i.e. they are only constituted of the 1st-stage
  text-mode installation, in the root directory named "reactos".

- Remove the ACPI APIC/SMP entries from bootcd.ini. They will be made
  available via the Advanced Boot Options F8 menu in Debug builds, for
  testing purposes only, in a subsequent commit.

This commit is based upon an older SVN one:
svn path=/branches/setup_improvements/; revision=75273
@HBelusca HBelusca force-pushed the hbelusca/all_in_one_bootlivecd branch from 60d19aa to e105b3d Compare April 27, 2026 21:24
HBelusca added a commit that referenced this pull request Apr 28, 2026
…CD (#7313)

CORE-9069, CORE-13525, RELEASE-11

This new BootCD contains the functionality of both the original bootcd
(text-mode 1st-stage installer) and the livecd (that will include the
1st-stage GUI installer later).
Our separate livecd ISOs become obsolete, and this completely removes
the need for the so-called "hybridcd" ISO.

Some details:

- The "hybridcd" build target is completely removed, since now the new
  BootCD *is* basically what we used to call "hybridcd".

- The "livecd" build target is kept so far (to minimize the code changes),
  but internally I start to refer to it as "LiveImage", and is reduced
  to a minimum.

  A minimal non-bootable "liveimg.iso" is built (but currently not
  included within the BootCD). Its purpose will be to implement the
  "ReactOS Live" functionality as a RAMDISK.
  (We currently don't support other file formats apart from ISO and
  flat disk for a RAMDISK).

  The "ReactOS Live" (non-RAMDISK) is implemented by adding to the
  BootCD file tree the files from the LiveImage.
  These files add two root directories, "Profiles" and "reactos"
  (which is the SystemRoot for the non-ramdisk LiveImage).

- The minimal text-mode ReactOS installation used for the 1st-stage
  installer, including USETUP itself, and the executable for the
  1st-stage GUI installer and the reactos.cab (installation source),
  are moved to the root directory called "i386" (ideally, one directory
  per architecture).

- The "bootcdregtest" target, i.e. the ISOs we feed our testbots with,
  are left untouched, i.e. they are only constituted of the 1st-stage
  text-mode installation only, but placed in a per-architecture root
  directory ("i386", etc. as for the bootcd).

- Remove the ACPI APIC/SMP entries from bootcd.ini. They will be made
  available via the Advanced Boot Options F8 menu in Debug builds, for
  testing purposes only, in a subsequent commit.

This commit is based upon an older SVN one:
svn path=/branches/setup_improvements/; revision=75273
@HBelusca HBelusca force-pushed the hbelusca/all_in_one_bootlivecd branch from e105b3d to 01dde6e Compare April 28, 2026 15:01
HBelusca added a commit that referenced this pull request Apr 28, 2026
…CD (#7313)

CORE-9069, CORE-13525, RELEASE-11

This new BootCD contains the functionality of both the original bootcd
(text-mode 1st-stage installer) and the livecd (that will include the
1st-stage GUI installer later).
Our separate livecd ISOs become obsolete, and this completely removes
the need for the so-called "hybridcd" ISO.

Some details:

- The "hybridcd" build target is completely removed, since now the new
  BootCD *is* basically what we used to call "hybridcd".

- The "livecd" build target is kept so far (to minimize the code changes),
  but internally I start to refer to it as "LiveImage", and is reduced
  to a minimum.

  A minimal non-bootable "liveimg.iso" is built (but currently not
  included within the BootCD). Its purpose will be to implement the
  "ReactOS Live" functionality as a RAMDISK.
  (We currently don't support other file formats apart from ISO and
  flat disk for a RAMDISK).

  The "ReactOS Live" (non-RAMDISK) is implemented by adding to the
  BootCD file tree the files from the LiveImage.
  These files add two root directories, "Profiles" and "reactos"
  (which is the SystemRoot for the non-ramdisk LiveImage).

- The minimal text-mode ReactOS installation used for the 1st-stage
  installer, including USETUP itself, and the executable for the
  1st-stage GUI installer and the reactos.cab (installation source),
  are moved to the root directory called "i386" (ideally, one directory
  per architecture).

- The "bootcdregtest" target, i.e. the ISOs we feed our testbots with,
  are left untouched, i.e. they are only constituted of the 1st-stage
  text-mode installation only, but placed in a per-architecture root
  directory ("i386", etc. as for the bootcd).

- Remove the ACPI APIC/SMP entries from bootcd.ini. They will be made
  available via the Advanced Boot Options F8 menu in Debug builds, for
  testing purposes only, in a subsequent commit.

This commit is based upon an older SVN one:
svn path=/branches/setup_improvements/; revision=75273
@HBelusca HBelusca force-pushed the hbelusca/all_in_one_bootlivecd branch from 01dde6e to 75cf9a2 Compare April 28, 2026 20:16
…s where TXTSETUP.SIF can be found

And slightly improve the search loop.

- Unconditionally look into the root directory as well, in order to cover
  all possible boot disk layouts in case someone customizes the ReactOS
  boot media layout.

- Improve the `InfOpenFile()` call error handling, in order to show the
  erroneous line _iff_ the call failed because of a wrong syntax in
  TXTSETUP.SIF . Distinguish it from a failure because the file doesn't
  exist in the source path being tested (in which case, no error is shown).
…CD (#7313)

CORE-9069, CORE-13525, RELEASE-11

This new BootCD contains the functionality of both the original bootcd
(text-mode 1st-stage installer) and the livecd (that will include the
1st-stage GUI installer later).
Our separate livecd ISOs become obsolete, and this completely removes
the need for the so-called "hybridcd" ISO.

Some details:

- The "hybridcd" build target is completely removed, since now the new
  BootCD *is* basically what we used to call "hybridcd".

- The "livecd" build target is kept so far (to minimize the code changes),
  but internally I start to refer to it as "LiveImage", and is reduced
  to a minimum.

  A minimal non-bootable "liveimg.iso" is built (but currently not
  included within the BootCD). Its purpose will be to implement the
  "ReactOS Live" functionality as a RAMDISK.
  (We currently don't support other file formats apart from ISO and
  flat disk for a RAMDISK).

  The "ReactOS Live" (non-RAMDISK) is implemented by adding to the
  BootCD file tree the files from the LiveImage.
  These files add two root directories, "Profiles" and "reactos"
  (which is the SystemRoot for the non-ramdisk LiveImage).

- The minimal text-mode ReactOS installation used for the 1st-stage
  installer, including USETUP itself, and the executable for the
  1st-stage GUI installer and the reactos.cab (installation source),
  are moved to the root directory called "i386" (ideally, one directory
  per architecture).

- The "bootcdregtest" target, i.e. the ISOs we feed our testbots with,
  are left untouched, i.e. they are only constituted of the 1st-stage
  text-mode installation only, but placed in a per-architecture root
  directory ("i386", etc. as for the bootcd).

- Remove the ACPI APIC/SMP entries from bootcd.ini. They will be made
  available via the Advanced Boot Options F8 menu in Debug builds, for
  testing purposes only, in a subsequent commit.

This commit is based upon an older SVN one:
svn path=/branches/setup_improvements/; revision=75273
@HBelusca HBelusca force-pushed the hbelusca/all_in_one_bootlivecd branch from 75cf9a2 to b2e33f2 Compare April 28, 2026 21:13
@HBelusca HBelusca merged commit b2e33f2 into master Apr 28, 2026
67 checks passed
@HBelusca HBelusca deleted the hbelusca/all_in_one_bootlivecd branch April 28, 2026 21:15
HBelusca added a commit that referenced this pull request May 7, 2026
Kreijstal pushed a commit to Kreijstal/reactos that referenced this pull request May 13, 2026
…CD (reactos#7313)

CORE-9069, CORE-13525, RELEASE-11

This new BootCD contains the functionality of both the original bootcd
(text-mode 1st-stage installer) and the livecd (that will include the
1st-stage GUI installer later).
Our separate livecd ISOs become obsolete, and this completely removes
the need for the so-called "hybridcd" ISO.

Some details:

- The "hybridcd" build target is completely removed, since now the new
  BootCD *is* basically what we used to call "hybridcd".

- The "livecd" build target is kept so far (to minimize the code changes),
  but internally I start to refer to it as "LiveImage", and is reduced
  to a minimum.

  A minimal non-bootable "liveimg.iso" is built (but currently not
  included within the BootCD). Its purpose will be to implement the
  "ReactOS Live" functionality as a RAMDISK.
  (We currently don't support other file formats apart from ISO and
  flat disk for a RAMDISK).

  The "ReactOS Live" (non-RAMDISK) is implemented by adding to the
  BootCD file tree the files from the LiveImage.
  These files add two root directories, "Profiles" and "reactos"
  (which is the SystemRoot for the non-ramdisk LiveImage).

- The minimal text-mode ReactOS installation used for the 1st-stage
  installer, including USETUP itself, and the executable for the
  1st-stage GUI installer and the reactos.cab (installation source),
  are moved to the root directory called "i386" (ideally, one directory
  per architecture).

- The "bootcdregtest" target, i.e. the ISOs we feed our testbots with,
  are left untouched, i.e. they are only constituted of the 1st-stage
  text-mode installation only, but placed in a per-architecture root
  directory ("i386", etc. as for the bootcd).

- Remove the ACPI APIC/SMP entries from bootcd.ini. They will be made
  available via the Advanced Boot Options F8 menu in Debug builds, for
  testing purposes only, in a subsequent commit.

This commit is based upon an older SVN one:
svn path=/branches/setup_improvements/; revision=75273
Kreijstal pushed a commit to Kreijstal/reactos that referenced this pull request May 13, 2026
cbialorucki pushed a commit that referenced this pull request May 22, 2026
Addendum to commit b2e33f2 (PR #7313)

This is a cherry-pick of 8fa6679.
itcthienkhiem pushed a commit to itcthienkhiem/reactos that referenced this pull request Jun 1, 2026
…CD (reactos#7313)

CORE-9069, CORE-13525, RELEASE-11

This new BootCD contains the functionality of both the original bootcd
(text-mode 1st-stage installer) and the livecd (that will include the
1st-stage GUI installer later).
Our separate livecd ISOs become obsolete, and this completely removes
the need for the so-called "hybridcd" ISO.

Some details:

- The "hybridcd" build target is completely removed, since now the new
  BootCD *is* basically what we used to call "hybridcd".

- The "livecd" build target is kept so far (to minimize the code changes),
  but internally I start to refer to it as "LiveImage", and is reduced
  to a minimum.

  A minimal non-bootable "liveimg.iso" is built (but currently not
  included within the BootCD). Its purpose will be to implement the
  "ReactOS Live" functionality as a RAMDISK.
  (We currently don't support other file formats apart from ISO and
  flat disk for a RAMDISK).

  The "ReactOS Live" (non-RAMDISK) is implemented by adding to the
  BootCD file tree the files from the LiveImage.
  These files add two root directories, "Profiles" and "reactos"
  (which is the SystemRoot for the non-ramdisk LiveImage).

- The minimal text-mode ReactOS installation used for the 1st-stage
  installer, including USETUP itself, and the executable for the
  1st-stage GUI installer and the reactos.cab (installation source),
  are moved to the root directory called "i386" (ideally, one directory
  per architecture).

- The "bootcdregtest" target, i.e. the ISOs we feed our testbots with,
  are left untouched, i.e. they are only constituted of the 1st-stage
  text-mode installation only, but placed in a per-architecture root
  directory ("i386", etc. as for the bootcd).

- Remove the ACPI APIC/SMP entries from bootcd.ini. They will be made
  available via the Advanced Boot Options F8 menu in Debug builds, for
  testing purposes only, in a subsequent commit.

This commit is based upon an older SVN one:
svn path=/branches/setup_improvements/; revision=75273
itcthienkhiem pushed a commit to itcthienkhiem/reactos that referenced this pull request Jun 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1st stage GUI setup enhancement For PRs with an enhancement/new feature. freeldr Freeloader changes refactoring For refactoring changes. review pending For PRs undergoing review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants