Hi, everybody.

Please help me, I would really appreciate it

I want to make a custom version of an OS (I chose Ubuntu), and the most important part, create an image or ISO with everything needed to put it on a USB, which will install the OS on a target computer.
Later I'll want to make changes to this OS, but for now, I just want to accomplish this goal and learn about bootloading. I chose a bootstrapped Ubuntu to try this with, and I am targetting an x64 computer.

So far my understanding is this:

1. I need to have some base to work with. I have tried using debootstrap, and I believe it gives me the base I want, like so:

Code:
sudo debootstrap --variant-minbase --arch=amd64 focal my-ubuntu http://archive.ubuntu.com/ubuntu/
This give me a system directory structure but the boot directory is empty.

2. In my boot directory I will need these files:
a) initrd.img (the scheme for loading a temporary root fs into memory)
b) vmlinuz (the linux kernel executable)
c) config-generic (what module and kernel settings are available)
d) system.map (map between kernel and hardware addresses)

3. Once I have all the files in my directory, I need to create an image or ISO from it and embed it on the USB.

4. Shortly after the computer starts the BIOS will recognize the USB as a bootable medium the OS will be installed onto the computer.

Does this make sense or am I missing some huge insight?