Archive:Making an openSUSE based distribution

Jump to: navigation, search
This is about making your own openSUSE based distribution. It should be seen as a general guide. It does not describe in detail what packages should be added or removed. That is left to the reader. It is also assumed that you are generally familiar with installing openSUSE. Notice that it might make sense to use SUSE Studio in most cases as that is far easier to do! Another option is to use OBS with KIWI

Overview

This guide can be used to make a personalized distribution for several cases

  1. Include software that is not included by default
  2. Remove software that is included by default
  3. Modify settings
  4. Personalize the distribution
  5. Standard settings for your country, company, LUG, ...
  6. Fix problems

This guide lets you build an openSUSE based distribution entirely from scratch. Using SUSE Studio or KIWI and OBS would be far easier!

Prerequisites

Be sure to install the following package:

Obsoleted:


Short version

This short instruction is outdated. Using rembrand for the debranding step is obsolete. Please see the debranding instructions in the long version below.

  • Download the ISOs you desire
  • If you need extra RPM's, download them
  • Run makeSUSEdvd -i [any other parameter]
  • Run rembrand -b "#FF00FF" -R /tmp/pink_rpms *.rpm
  • Browse through Artwork brand and check for any left-overs.
  • Edit, remove and change anything you desire.
  • Run makeSUSEdvd -C

Long version

It is step 4 in the short version that is the most important step. Here I will go into more detail into each and every step.

Download

You can download any version ISOs you like to an empty directory. e.g. when using 10.1 as a base, you can download the first CD for minimal installation, the first 3 for standard German and English KDE or GNOME installation, the 5 CDs for other languages and extra software, or the 6CDs or the DVD.

If you want to add extra software that is not available from openSUSE, you need to have a working RPM. Download it to e.g. /usr/src/packages/RPMS/* or make a directory with the same sub-directories athlon i386 i486 i586 i686 noarch.
Do not forget extra RPMs that might be needed to prevent a dependency hell later.

No content change

If you just want to add RPMs, you can just do the following from the directory where the RPMs are.
makeSUSEdvd [-a /usr/src/packages/RPMS] [any other parameter]
This will leave you with your own personalized distribution. During the installation, you can select software and can select Personal selection or any RPM in that Personal selection.

Please read COPYING, COPYRIGHT and LICENCE.TXT on the ISO you just made to see if you are allowed to distribute it.

Changing the content

  • Now you run makeSUSEdvd -i [-a /usr/src/packages/RPMS] [any other parameter] from the directory where the ISOs are. This will make a directory CD_DIR, unless you specified differently. CD_DIR is the directory you need to change.
  • Next you can remove any RPM that you do not want to be on your own distribution. You can leave anything you like. The RPMs are in CD_ROM/suse
  • Then you can edit CD_DIR/control.xml There is more information about this file on this page from Novell. A lot can be changed and thus broken here, so be sure to test it before you distribute your distribution.
  • According to the changes, you can change any and all CD_DIR/suse/setup/desc/*sel files.
    • Especially look at default*.sel If you have added RPMs, makeSUSEdvd has made a makeSUSEdvd.sel.
    • If you want programs to be installed by default, add them to default*
    • When adding your own *.sel file, see that it has a different =Ord: inside then any of the other *.sel files have. The lower the number, the higher it will be in the list. Negative numbers do work.
    • Add or remove any *.sel from /suse/setup/desc/selections as well as any *.sel, although it is just as easy to leave it.
  • To further personalize it, you can edit the following files. In most files you need to remove the openSUSE references and add your own.
/COPYRIGHT*		Different languages.
/LICENCE.txt		Put in your own licence
/README*
/LIESMICH*
/SuSEgo.ico		Remove and add your own *.ico
/autorun.inf		Change SuSEgo.ico to your own
/content		Change VENDOR
			Change RELNOTESURL to your own RPM if desired

/docu/RELEASE		Remove SUSE and Novell reference

/boot/*/LIESMICH*
/boot/*/README*
/boot/*/loader/* 	Several files. Mainly removing openSUSE name and change some JPGs

/media.1/info.txt	This is placed there by makeSUSEdvd.
                        Edit it in makeSUSEdvd, or comment it out completely.
/media.1/licence.zip	Look inside and edit any or all different licences to your own.
/media.1/media	

/suse/setup/README	
/suse/setup/LIESMISCH
/suse/setup/slide/*	Here you can realy personalize your distribution. These are the slides that are shown during the installation.
  • Some packages need an End User Licence Agreement (EULA) before installation, or a warning when you select them to install so that people can decide wether or not to install them. They are in packages.$LANG and written in basic HTML. For examples, look in /suse/setup/descr/packages.en
EULA stuff:
+Eul:
-Eul:

Install warning:
+Ins:
-Ins:
  • Some packages have restricted licensing if you embed or base your product on the OS. You may want to remove these packages.
ckermit  -- the pre-amble 'embedded' conflicts with conditions for REDISTRIBUTION (A).
frink    -- you need written permission to redistribute this package.
mirror   -- redistribution contingent on not modifying the content.
mmv      -- depends on if you charge for your product.
myodbc   -- mysql is GPL not LGPL.  Linking with your non-GPL product may convert it to GPL.
vlna     -- review the language with respect to 'sell'.

Debranding

Many packages contain openSUSE trademarks and images. Most of these are contained in packages PACKAGE_NAME-branding-openSUSE. For some packages, you can replace the PACKAGE_NAME-branding-openSUSE with the PACKAGE_NAME-branding-upstream package from the repository. Some packages you need to remake.

  • Packages you need to create
YOURBRAND-release
branding-YOURBRAND
desktop-data-YOURBRAND
gconf2-branding-YOURBRAND
release-notes-YOURBRAND
yast2-branding-YOURBRAND
yast2-installation
yast2-theme
xdmbgrd
  • Packages to add from the repository
bootsplash-branding-upstream
gdm-branding-upstream
gimp-branding-upstream
glib2-branding-upstream
gnome-menus-branding-upstream
gnome-session-branding-upstream
gtk2-branding-upstream
kde4-kdm-branding-upstream
kdebase4-workspace-branding-upstream
MozillaFirefox-branding-upsteam
OpenOffice_org-branding-upstream
xfce4-desktop-branding-upstream
  • Packages to delete
suse/noarch/OpenOffice_org-branding-openSUSE-<version>.noarch.rpm
suse/noarch/branding-openSUSE-<version>.noarch.rpm
suse/noarch/desktop-data-openSUSE-<version>.noarch.rpm
suse/noarch/desktop-data-openSUSE-extra-gnome-<version>.noarch.rpm
suse/noarch/epiphany-branding-openSUSE-<version>.noarch.rpm
suse/noarch/gconf2-branding-openSUSE-<version>.noarch.rpm
suse/noarch/gdm-branding-openSUSE-<version>.noarch.rpm
suse/noarch/gimp-branding-openSUSE-<version>.noarch.rpm
suse/noarch/glib2-branding-openSUSE-<version>.noarch.rpm
suse/noarch/gnome-menus-branding-openSUSE-<version>.noarch.rpm
suse/noarch/gtk2-branding-openSUSE-<version>.noarch.rpm
suse/noarch/gtk2-theme-openSUSE-<version>.noarch.rpm
suse/noarch/pidgin-branding-openSUSE-<version>.noarch.rpm
suse/noarch/release-notes-openSUSE-<version>.noarch.rpm
suse/noarch/release-notes-openSUSE-<version>.noarch.rpm
suse/noarch/yast2-branding-openSUSE-<version>.noarch.rpm
suse/noarch/yast2-installation-<version>.noarch.rpm
suse/noarch/yast2-registration-<version>.noarch.rpm
suse/noarch/yast2-registration-branding-openSUSE-<version>.noarch.rpm
suse/noarch/yast2-theme-openSUSE-<version>.noarch.rpm
suse/noarch/yast2-theme-openSUSE-Crystal-<version>.noarch.rpm
suse/noarch/yast2-theme-openSUSE-Oxygen-<version>.noarch.rpm
suse/x86_64/MozillaFirefox-branding-openSUSE-<version>.x86_64.rpm
suse/x86_64/bootsplash-branding-openSUSE-<version>.x86_64.rpm
suse/x86_64/compiz-<version>.x86_64.rpm
suse/x86_64/compiz-branding-openSUSE-<version>.x86_64.rpm
suse/x86_64/gfxboot-branding-openSUSE-<version>.x86_64.rpm
suse/x86_64/install-initrd-branding-openSUSE-<version>.x86_64.rpm
suse/x86_64/kde4-kdm-branding-openSUSE-<version>.x86_64.rpm
suse/x86_64/kde4-kio_sysinfo-branding-openSUSE-<version>.x86_64.rpm
suse/x86_64/kdebase3-SUSE-<version>.x86_64.rpm
suse/x86_64/kdebase3-SuSE-<version>.x86_64.rpm
suse/x86_64/kdebase3-SuSE-branding-openSUSE-<version>.x86_64.rpm
suse/x86_64/kdebase4-openSUSE-<version>.x86_64.rpm
suse/x86_64/kdebase4-workspace-branding-openSUSE-<version>.x86_64.rpm
suse/x86_64/openSUSE-release-<version>.x86_64.rpm
suse/x86_64/openSUSE-release-dvd-<version>.x86_64.rpm
suse/x86_64/splashy-branding-openSUSE-<version>.x86_64.rpm
suse/x86_64/xfce4-desktop-branding-openSUSE-<version>.x86_64.rpm 
[ 11.3 ] suse/x86_64/kupdateapplet-<version>.x86_64.rpm
  • Edit or rebuild the pattern file suse/setup/descr/dvd-*
s/branding-openSUSE/branding-YOURBRAND/
s/bootsplash-branding-openSUSE/bootsplash-branding/
s/gconf2-branding-openSUSE/gconf2-branding-YOURBRAND/
s/gtk2-branding-openSUSE/gtk2-branding/
s/desktop-data-openSUSE/desktop-data-YOURBRAND/
s/yast2-theme-openSUSE/yast2-theme-YOURBRAND/
/kdebase3-SuSE/d
/yast2-registration/d
  • 11.3 patterns

openSUSE 11.3 and newer added patterns-* packages which reference the above debranded packages. You will need to make your own patterns-YOURBRAND package.

Customizing or adding YaST modules

The control.xml file controls the YaST modules that will be run in order to install or configure your system. Moreover, this modules can be modified or implemented from scratch. YaST modules are located into the boot/arch/root file at the DVD (or first CD). You can extract the root file system into a temporal directory by entering:

mkdir oldroot
mount root oldroot -o loop 
mkdir newroot
rsync -av oldroot/* newroot/

and then do the changes there. YaST modules are located into /usr/share/YaST2/. You can add or edit them. Then you have to compile them :

ycpc -c module_path

and redo the root filesystem by:

umount oldroot
/sbin/mkfs.cramfs newroot/ root

You can find more info on the YaST portal.

Making the distribution

First copy or backup CD_DIR as it will be deleted at the end. When all your editing is done for all files and/or RPMs, you can make the iso with makeSUSEdvd -C which will give you an ISO that you can burn. Don't forget to test it first, so use a re-writable disk, if possible.

If all is well, you can make your final ISO and start using it.

Icon-warning.png
Warning: Please pay attention to the software licenses. Proprietary packages have their own license agreements (non GPL).
The trademarks are generally protected by law and it is not allowed to use them without prior written consent of trademark owner.