Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions PACKAGING.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,13 @@ flows in the upcoming 2.7 release](https://openbuildservice.org/2016/04/08/new_g

The ISO is built in
[YaST:Head:D-Installer/d-installer-live](https://build.opensuse.org/package/show/YaST:Head:D-Installer/d-installer-live).
Once the rest of the packages are ready, it is just a matter of bumping the version in the
`preferences` section of the
[kiwi](https://build.opensuse.org/package/view_file/YaST:Head:D-Installer/d-installer-live/d-installer-live.kiwi?expand=1)
file.

```xml
<version>0.4</version>
```
Once a package is rebuilt, the ISO image gets refreshed too. If you want to release
a new version, follow these steps:

1. Bump the version in the `preferences` section of the [kiwi](./image/d-installer-live.kiwi) file
through a pull request.
2. Once the pull request is merged, checkout (or branch) the OBS package.
3. Run `osc service manualrun` in your checkout to update the sources.
4. Commit the changes.

See [image/README.md](./image/README.md) for more details about how the Live ISO is built.
34 changes: 34 additions & 0 deletions image/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Live ISO

## Contents

This directory contains a set of files that are used to build the Live ISO image.

* The `_service` file defines the OBS services to fetch the required files from the Git repository.
* `d-installer-live.kiwi` (and `config.sh`) are used by [kiwi](https://github.com/OSInside/kiwi/) to
build the image.
* The `extrastuff` directory contains a set of configuration files that are placed in the ISO but
not taken from any RPM package.

## Configuration files

* SSH connectivity: `/etc/ssh/sshd_config.d/10_root_login.conf` allows root login
* Autologin and gfx startup:
- `/etc/systemd/system/x11-autologin.service` uses startx to start an x11 session.
- startx runs icewm via `/root/.xinitrc`.
- icewm autostarts Firefox via `/root/.icewm/startup`.
- icewm uses usual YaST2 installation config from `/etc/icewm/preferences.yast2`.
* Firefox profile is defined in `/root/.mozilla/firefox/profile`.

## OBS services

The idea is to keep OBS sources and the Git repository in sync. So when any change is needed, it is
expected to open a pull request and rely on OBS services to sync them once they are merged.

```
osc service manualrun
osc commit -m "Describe the changes..."
```

If you need to try your changes in a temporary branch, you can adjust the `_service` file to point
to such a branch.
29 changes: 29 additions & 0 deletions image/_service
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<services>
<service name="obs_scm" mode="manual">
<param name="url">https://github.com/yast/d-installer.git</param>
<param name="scm">git</param>
<param name="revision">master</param>
<param name="without-version">enable</param>
<param name="filename">d-installer</param>
</service>
<service mode="buildtime" name="tar">
<param name="obsinfo">d-installer.obsinfo</param>
<param name="subdir">image/extrastuff/root</param>
<param name="filename">root</param>
</service>
<service mode="buildtime" name="tar">
<param name="obsinfo">d-installer.obsinfo</param>
<param name="subdir">image/extrastuff/etc</param>
<param name="filename">etc</param>
</service>
<service mode="buildtime" name="tar">
<param name="obsinfo">d-installer.obsinfo</param>
<param name="subdir">image</param>
<param name="filename">image</param>
</service>
<service mode="buildtime" name="extract_file">
<param name="archive">image.tar</param>
<param name="file">image/d-installer-live.kiwi</param>
<param name="file">image/config.sh</param>
</service>
</services>
21 changes: 21 additions & 0 deletions image/config.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#! /bin/bash

# KIWI functions
test -f /.kconfig && . /.kconfig
test -f /.profile && . /.profile

# greeting
echo "Configure image: [$kiwi_iname]..."

# setup baseproduct link
suseSetupProduct

# activate services
systemctl enable sshd.service
systemctl enable NetworkManager.service
systemctl enable d-installer.service
systemctl enable x11-autologin.service
systemctl enable spice-vdagent.service

# default target
systemctl set-default graphical.target
107 changes: 107 additions & 0 deletions image/d-installer-live.kiwi
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- OBS-ExclusiveArch: aarch64 x86_64 -->

<image schemaversion="7.5" name="d-installer-live">
<description type="system">
<author>YaST Team</author>
<contact>yast2-maintainers@suse.de</contact>
<specification>D-Installer Live ISO</specification>
</description>
<preferences>
<version>0.5</version>
<packagemanager>zypper</packagemanager>
<locale>en_US</locale>
<keytable>us</keytable>
<timezone>Europe/Berlin</timezone>
<rpm-excludedocs>true</rpm-excludedocs>
<rpm-check-signatures>false</rpm-check-signatures>
<bootsplash-theme>bgrt</bootsplash-theme>
<bootloader-theme>openSUSE</bootloader-theme>
<type image="iso" flags="overlay" firmware="efi" hybridpersistent_filesystem="ext4" hybridpersistent="true" mediacheck="true">
<bootloader name="grub2" timeout="10"/>
</type>
</preferences>
<users>
<user password="$1$wYJUgpM5$RXMMeASDc035eX.NbYWFl0" home="/root" name="root" groups="root"/>
</users>
<repository type="rpm-md">
<source path="obsrepositories:/"/>
</repository>
<packages type="image">
<package name="bind-utils"/>
<package name="patterns-openSUSE-base"/>
<package name="systemd"/>
<package name="grub2-branding-openSUSE"/>
<package name="iputils"/>
<package name="vim"/>
<package name="grub2"/>
<package name="grub2-arm64-efi" arch="aarch64"/>
<package name="grub2-x86_64-efi" arch="x86_64"/>
<package name="grub2-i386-pc" arch="x86_64"/>
<package name="syslinux" arch="x86_64"/>
<package name="lvm2"/>
<package name="fontconfig"/>
<package name="fonts-config"/>
<package name="tar"/>
<package name="parted"/>
<package name="openssh"/>
<package name="iproute2"/>
<package name="less"/>
<package name="bash-completion"/>
<package name="dhcp-client"/>
<package name="which"/>
<package name="kernel-default"/>
<package name="shim"/>
<package name="timezone"/>
<package name="dracut-kiwi-live"/>
<package name="xauth"/>
<package name="patterns-base-x11"/>
<namedCollection name="x11"/>
<package name="patterns-yast-yast2_basis"/>
<namedCollection name="yast2_basis"/>
<package name="yast2-bootloader"/>
<package name="yast2-country"/>
<package name="yast2-hardware-detection"/>
<package name="yast2-installation"/>
<package name="yast2-network"/>
<package name="yast2-proxy"/>
<package name="yast2-storage-ng"/>
<package name="yast2-users"/>
<package name="snapper"/>
<package name="MozillaFirefox"/>
<package name="MozillaFirefox-branding-openSUSE"/>
<package name="libpwquality-tools"/>
<package name="btrfsprogs"/>
<package name="NetworkManager"/>
<package name="cockpit"/>
<package name="cockpit-d-installer"/>
<package name="cockpit-networkmanager"/>
<package name="cockpit-packagekit"/>
<package name="cockpit-storaged"/>
<package name="cockpit-system"/>
<package name="cockpit-ws"/>
<package name="ruby3.1-rubygem-d-installer"/>
<package name="ruby3.1-rubygem-d-installer-cli"/>
<package name="openSUSE-build-key"/>
<package name="staging-build-key"/>
<package name="ALP-build-key"/>
<package name="icewm-lite"/>
<package name="xinit"/>
<package name="psmisc"/>
<package name="joe"/>
<package name="checkmedia"/>
<package name="spice-vdagent"/>
<archive name="root.tar"/>
<archive name="etc.tar"/>
</packages>
<packages type="bootstrap">
<package name="udev"/>
<package name="filesystem"/>
<package name="glibc-locale"/>
<package name="cracklib-dict-full"/>
<package name="ca-certificates"/>
<package name="ca-certificates-mozilla"/>
<package name="openSUSE-release"/>
<package name="openSUSE-release-ftp"/>
</packages>
</image>
1 change: 1 addition & 0 deletions image/extrastuff/etc/ssh/sshd_config.d/10_root_login.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PermitRootLogin yes
24 changes: 24 additions & 0 deletions image/extrastuff/etc/systemd/system/x11-autologin.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
[Unit]
Description=X11 session
After=graphical.target systemd-user-sessions.service

[Service]
User=root
WorkingDirectory=~

PAMName=login
Environment=XDG_SESSION_TYPE=x11
TTYPath=/dev/tty7
StandardInput=tty
UnsetEnvironment=TERM

UtmpIdentifier=tty7
UtmpMode=user

StandardOutput=journal
ExecStartPre=/usr/bin/chvt 7
ExecStart=/usr/bin/startx -- vt7 -keeptty -verbose 3 -logfile /dev/null
Restart=no

[Install]
WantedBy=graphical.target
3 changes: 3 additions & 0 deletions image/extrastuff/root/.icewm/startup
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#! /bin/sh

BROWSER="firefox --kiosk --profile $HOME/.mozilla/firefox/profile" /usr/libexec/cockpit-desktop /cockpit/@localhost/d-installer/index.html
6 changes: 6 additions & 0 deletions image/extrastuff/root/.mozilla/firefox/profile/user.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// Mozilla User Preferences

// do not remember or generate passwords
user_pref("signon.management.page.breach-alerts.enabled", false);
user_pref("signon.rememberSignons", false);
user_pref("signon.generation.enabled", false);
1 change: 1 addition & 0 deletions image/extrastuff/root/.xinitrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
icewm-session -c /etc/icewm/preferences.yast2