Scripts and tools to generate the disk images used during installation (inst-sys) and the rescue disk images for openSUSE and SUSE.
To build a new image, you have to:
- be root
- put the installation-images directory on a local file system (ie. not NFS)
- have a valid ~/.oscrc or ~/.config/osc/oscrc
Then you must run make
once to build all parts.
The images will be stored in the 'image' directory, the contents of the images will be in the 'tmp' directory.
make install
will gather the images and put them into the 'instsys' dir.
For testing purposes there is a make target 'cd1' that builds a complete tree as it's used on our media.
make iso
will directly create the .iso file for CD1 (images/cd1.iso
file)
The exact behavior of make
can be influenced by several environment
variables. For a full description of these variables and how they affect each
image, check the configoptions.md file.
The default network repository location is product dependent and defined in
obs/installation-images.spec in the net_repo
macro.
Basically every new commit into the master branch of the repository will be auto-submitted to all current SUSE products. No further action is needed except accepting the pull request.
For details see here.
After a successful execution of make
the directory images/
will
contain several subdirectories and files. Follows a short description of the images:
images/base
is the build environment used for the other images.images/boot
is the image that contains the bootloader.images/cd1.iso
is a media used for testing purposes only; can be optionally generated by themake iso
command.images/initrd
contains all the files used at the initrd stage (check out our initrd implementation).images/rescue
contains the data for the rescue system.images/root
is mounted to provide the necessary files for YaST installation.images/gdb
is an extension containing the GNU GDB debugger (use theextend gdb
command to activate it in the inst-sys).images/libyui-rest-api
is an extension containing the LibYUI REST API packages (use theextend libyui-rest-api
command to activate it in the inst-sys).
-
How to make sure a driver is available in the installation/rescue system? Check the modules.md file.
-
How to add a package or one of its file to the image? Check the files.md file.
-
How the branding works? Check the branding.md file
-
How to remove a specific file from the initrd image?
If you can rebuild the image, the recommended way is to exclude the file from the package that contains it. To do so, you need to modify the .file_list of the image (see files.md ).
If you're looking for a quick hack with
mksusecd
please keep in mind that symlinks won't work; instead you'll need to overwrite the files with other, real files (even empty) thanks to the --initrd flag. -
After building an image from the master branch and installing it I get an error regarding "Wrong media".
This is because for some reason, your images have mismatching build IDs. To check a build id, you want to look at the content of the .config files.
find . -name "*.config"
will show a few of them, in general you'll be interested in .instsys.config and linuxrc.config. -
What happens if a package is included in two subsequent stages (e.g. initrd, root)?
Installation-images is smart enough to recognise this duplication and eliminate it. Please do not abuse of this feature because the .file_list files serve as a list of files included in the image (read: documentation) so polluting the files might cause confusion.
-
What is the control.xml used for?
This is a very important file! It gives YaST the instructions on how to (the sequence of steps) used to install a system.
-
How do I mount the built images?
The images are compressed using the squashfs file system, but you can normally mount them with the
mount
command.
TODO FAQ: compression algorithm, linemode, fonts