(open)SUSE installation images
Scripts and tools to generate the disk images used during installation (inst-sys) and the rescue disk images for openSUSE and SUSE.
Generating the images locally
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)
Configuring the generation of images
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.
Setting the default network repository
The default network repository location is product dependent and defined in
obs/installation-images.spec in the net_repo
macro.
Committing changes to (open)SUSE
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.
Anatomy of the images
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).
FAQ
-
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
Troubleshooting and Hacks
- 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