From e8fb93649bbceb314c691493dbc1cda2e7a0ffa6 Mon Sep 17 00:00:00 2001 From: Nippy Date: Sat, 18 Jul 2026 09:31:11 +0200 Subject: new btrfs --- README.md | 16 ++ plymouth-assets/dot-dim.png | Bin 0 -> 178 bytes plymouth-assets/dot-lit.png | Bin 0 -> 178 bytes plymouth-assets/generate_text_assets.py | 114 +++++++++ plymouth-assets/preview.html | 278 +++++++++++++++++++++ plymouth-assets/raveos-installed.script | 70 ++++++ plymouth-assets/raveos-owl.png | Bin 0 -> 302684 bytes plymouth-assets/raveos.plymouth | 8 + plymouth-assets/raveos.script | 127 ++++++++++ plymouth-assets/status-01.png | Bin 0 -> 1809 bytes plymouth-assets/status-02.png | Bin 0 -> 3811 bytes plymouth-assets/status-03.png | Bin 0 -> 3481 bytes plymouth-assets/status-04.png | Bin 0 -> 3465 bytes plymouth-assets/status-05.png | Bin 0 -> 3639 bytes plymouth-assets/status-06.png | Bin 0 -> 2462 bytes plymouth-assets/status-installed.png | Bin 0 -> 3684 bytes plymouth-assets/tagline.png | Bin 0 -> 8392 bytes plymouth-assets/wordmark.png | Bin 0 -> 8800 bytes releng/airootfs/etc/mkinitcpio.conf.d/archiso.conf | 2 +- releng/airootfs/etc/motd | 11 - releng/airootfs/etc/plymouth/plymouthd.conf | 2 + releng/airootfs/root/.config/openbox/autostart | 3 + .../calamares/kernel-install/95-raveos.install | 33 ++- .../usr/share/plymouth/themes/raveos/dot-dim.png | Bin 0 -> 178 bytes .../usr/share/plymouth/themes/raveos/dot-lit.png | Bin 0 -> 178 bytes .../share/plymouth/themes/raveos/raveos-owl.png | Bin 0 -> 302684 bytes .../share/plymouth/themes/raveos/raveos.plymouth | 8 + .../usr/share/plymouth/themes/raveos/raveos.script | 127 ++++++++++ .../usr/share/plymouth/themes/raveos/status-01.png | Bin 0 -> 1809 bytes .../usr/share/plymouth/themes/raveos/status-02.png | Bin 0 -> 3811 bytes .../usr/share/plymouth/themes/raveos/status-03.png | Bin 0 -> 3481 bytes .../usr/share/plymouth/themes/raveos/status-04.png | Bin 0 -> 3465 bytes .../usr/share/plymouth/themes/raveos/status-05.png | Bin 0 -> 3639 bytes .../usr/share/plymouth/themes/raveos/status-06.png | Bin 0 -> 2462 bytes .../efiboot/loader/entries/01-archiso-linux.conf | 2 +- releng/packages.x86_64 | 3 + releng/syslinux/archiso_sys-linux.cfg | 2 +- 37 files changed, 788 insertions(+), 18 deletions(-) create mode 100644 plymouth-assets/dot-dim.png create mode 100644 plymouth-assets/dot-lit.png create mode 100644 plymouth-assets/generate_text_assets.py create mode 100644 plymouth-assets/preview.html create mode 100644 plymouth-assets/raveos-installed.script create mode 100644 plymouth-assets/raveos-owl.png create mode 100644 plymouth-assets/raveos.plymouth create mode 100644 plymouth-assets/raveos.script create mode 100644 plymouth-assets/status-01.png create mode 100644 plymouth-assets/status-02.png create mode 100644 plymouth-assets/status-03.png create mode 100644 plymouth-assets/status-04.png create mode 100644 plymouth-assets/status-05.png create mode 100644 plymouth-assets/status-06.png create mode 100644 plymouth-assets/status-installed.png create mode 100644 plymouth-assets/tagline.png create mode 100644 plymouth-assets/wordmark.png create mode 100644 releng/airootfs/etc/plymouth/plymouthd.conf create mode 100644 releng/airootfs/usr/share/plymouth/themes/raveos/dot-dim.png create mode 100644 releng/airootfs/usr/share/plymouth/themes/raveos/dot-lit.png create mode 100644 releng/airootfs/usr/share/plymouth/themes/raveos/raveos-owl.png create mode 100644 releng/airootfs/usr/share/plymouth/themes/raveos/raveos.plymouth create mode 100644 releng/airootfs/usr/share/plymouth/themes/raveos/raveos.script create mode 100644 releng/airootfs/usr/share/plymouth/themes/raveos/status-01.png create mode 100644 releng/airootfs/usr/share/plymouth/themes/raveos/status-02.png create mode 100644 releng/airootfs/usr/share/plymouth/themes/raveos/status-03.png create mode 100644 releng/airootfs/usr/share/plymouth/themes/raveos/status-04.png create mode 100644 releng/airootfs/usr/share/plymouth/themes/raveos/status-05.png create mode 100644 releng/airootfs/usr/share/plymouth/themes/raveos/status-06.png diff --git a/README.md b/README.md index a3eb581..78d1e4a 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,22 @@ Arch Linux alapú egyedi disztribúció tőbb asztali környezettel, automatizá ## Változásnapló +## Build 2026-07-18 + +#### `[boot]` Plymouth boot splash bevezetve +- Egyedi RaveOS téma (bagoly logó, zöld pöttyök, időalapú fázis-szövegváltás) élő ISO-n és telepített rendszeren is +- `HOOKS+=plymouth` mind az élő ISO, mind a célrendszer `mkinitcpio.conf`-jában + +#### `[calamares]` Hiányzó `root=` javítva a boot-bejegyzésben +- `95-raveos.install` (kernel-install hook) `findmnt`-alapú root-detektálása üresen térhetett vissza a pacstrap chroot kontextusban → `root=` nélküli, nem bootolható bejegyzés jött létre +- Tartalék detektálás hozzáadva: `/proc/mounts`, majd `/etc/fstab` +- Záró biztonsági háló a telepítés végén (`calamares-fix-bootentry.sh`): ha valamelyik bejegyzésből mégis hiányozna a `root=`, az `/etc/fstab`-ból pótolja + +#### `[calamares]` Btrfs subvolume-elrendezés bevezetve +- Eddig `erase` módban egyetlen lapos `@` subvolume jött létre — nincs elkülönítve semmi +- Mostantól archinstall-stílusú elrendezés (`partition.conf`): `@` → `/`, `@home` → `/home`, `@log` → `/var/log`, `@pkg` → `/var/cache/pacman/pkg`, `@snapshots` → `/.snapshots` +- Előfeltétele a snapshot-alapú eszközöknek (`grub-btrfs`, Snapper) + ## Build 2026-07-06 #### `[security]` GPG csomag-aláírás bevezetve diff --git a/plymouth-assets/dot-dim.png b/plymouth-assets/dot-dim.png new file mode 100644 index 0000000..f95ae69 Binary files /dev/null and b/plymouth-assets/dot-dim.png differ diff --git a/plymouth-assets/dot-lit.png b/plymouth-assets/dot-lit.png new file mode 100644 index 0000000..a429367 Binary files /dev/null and b/plymouth-assets/dot-lit.png differ diff --git a/plymouth-assets/generate_text_assets.py b/plymouth-assets/generate_text_assets.py new file mode 100644 index 0000000..1b6ee4a --- /dev/null +++ b/plymouth-assets/generate_text_assets.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 +"""Wordmark + tagline + status PNG-k generalasa a Plymouth temahoz. +Placeholder fontokkal (nincs Bebas Neue a rendszeren): Noto Sans Condensed +ExtraBold a wordmarkhoz, Ubuntu Mono a tagline/status szoveghez. +""" +from PIL import Image, ImageDraw, ImageFont + +SCALE = 3 # 3x render, majd a Plymouth script kicsinyiti - crisp marad + +WORDMARK_FONT = "/usr/share/fonts/noto/NotoSans-CondensedExtraBold.ttf" +MONO_FONT = "/usr/share/fonts/ubuntu/Ubuntu-B.ttf" +MONO_FONT_REGULAR = "/usr/share/fonts/ubuntu/Ubuntu-R.ttf" + +RAVE_COLOR = (232, 232, 230, 255) # #e8e8e6 +OS_COLOR = (98, 160, 82, 255) # #62a052 +MUTED_COLOR = (122, 125, 130, 255) # #7a7d82 + + +def draw_tracked_text(draw, xy, text, font, fill, tracking): + """Szoveg rajzolasa kezi betukoz-nyujtassal (PIL-nek nincs natix tracking).""" + x, y = xy + for ch in text: + draw.text((x, y), ch, font=font, fill=fill) + w = draw.textlength(ch, font=font) + x += w + tracking + + +def measure_tracked(draw, text, font, tracking): + total = 0 + for ch in text: + total += draw.textlength(ch, font=font) + tracking + return total - tracking if text else 0 + + +def make_wordmark(): + font_size = 46 * SCALE + tracking = 4 * SCALE + font = ImageFont.truetype(WORDMARK_FONT, font_size) + + tmp = Image.new("RGBA", (10, 10)) + d = ImageDraw.Draw(tmp) + w_rave = measure_tracked(d, "RAVE", font, tracking) + w_os = measure_tracked(d, "OS", font, tracking) + gap = tracking # a ket szo kozott is annyi hely mint a betukoz + total_w = int(w_rave + gap + w_os) + 20 + ascent, descent = font.getmetrics() + total_h = ascent + descent + 10 + + img = Image.new("RGBA", (total_w, total_h), (0, 0, 0, 0)) + d = ImageDraw.Draw(img) + draw_tracked_text(d, (10, 5), "RAVE", font, RAVE_COLOR, tracking) + draw_tracked_text(d, (10 + w_rave + gap, 5), "OS", font, OS_COLOR, tracking) + + bbox = img.getbbox() + img = img.crop(bbox) + img.save("wordmark.png") + print("wordmark.png", img.size) + + +def make_tagline(): + font_size = 13 * SCALE + tracking = 1 * SCALE + font = ImageFont.truetype(MONO_FONT_REGULAR, font_size) + text = "RAVEOS FINOMHANGOLÁS, KULCSRA KÉSZ ÁLLAPOT!" + + tmp = Image.new("RGBA", (10, 10)) + d = ImageDraw.Draw(tmp) + w = measure_tracked(d, text, font, tracking) + ascent, descent = font.getmetrics() + h = ascent + descent + 6 + + img = Image.new("RGBA", (int(w) + 10, h), (0, 0, 0, 0)) + d = ImageDraw.Draw(img) + draw_tracked_text(d, (5, 3), text, font, MUTED_COLOR, tracking) + bbox = img.getbbox() + img = img.crop(bbox) if bbox else img + img.save("tagline.png") + print("tagline.png", img.size) + + +def make_status_stage(name, text): + font_size = 11 * SCALE + tracking = 1 * SCALE + font = ImageFont.truetype(MONO_FONT_REGULAR, font_size) + + tmp = Image.new("RGBA", (10, 10)) + d = ImageDraw.Draw(tmp) + w = measure_tracked(d, text, font, tracking) + ascent, descent = font.getmetrics() + h = ascent + descent + 6 + + img = Image.new("RGBA", (int(w) + 10, h), (0, 0, 0, 0)) + d = ImageDraw.Draw(img) + draw_tracked_text(d, (5, 3), text, font, MUTED_COLOR, tracking) + bbox = img.getbbox() + img = img.crop(bbox) if bbox else img + img.save(f"status-{name}.png") + print(f"status-{name}.png", img.size) + + +STAGES = [ + ("01", "starting..."), + ("02", "loading kernel modules..."), + ("03", "mounting filesystems..."), + ("04", "starting network..."), + ("05", "preparing live environment..."), + ("06", "almost there..."), +] + +if __name__ == "__main__": + make_wordmark() + make_tagline() + for name, text in STAGES: + make_status_stage(name, text) diff --git a/plymouth-assets/preview.html b/plymouth-assets/preview.html new file mode 100644 index 0000000..6fa4faf --- /dev/null +++ b/plymouth-assets/preview.html @@ -0,0 +1,278 @@ +RaveOS Boot Splash — Preview + + +
+

RaveOS boot splash — élő előnézet

+

Ez pontosan azt a réteg-elrendezést szimulálja, amit a raveos.script Plymouth-szkript csinál: a logó középen, alatta a boot-fázis szövege, ami a haladással változik.

+
+ +
+
+
+ RaveOS owl +
+
+ status +
+
+ +
+
+
+ +
+
+ + + 0% + +
+
+ +
+ Megjegyzés: csak a raveos-icon2.png (480×480, teljes kép, az "OS" felirattal együtt, változatlanul) látszik, semmi más szöveg/wordmark mellette. A 6 boot-fázis üzenet még placeholder — szólj mi legyen a végleges szöveg. +
+ + diff --git a/plymouth-assets/raveos-installed.script b/plymouth-assets/raveos-installed.script new file mode 100644 index 0000000..90ee177 --- /dev/null +++ b/plymouth-assets/raveos-installed.script @@ -0,0 +1,70 @@ +// RaveOS Plymouth boot splash script (installed system) + +Window.SetBackgroundTopColor(0.102, 0.106, 0.114); +Window.SetBackgroundBottomColor(0.075, 0.078, 0.086); + +screen_width = Window.GetWidth(); +screen_height = Window.GetHeight(); + +// --- logo: owl icon, centered --- + +owl_image = Image("raveos-owl.png"); +owl_width = owl_image.GetWidth(); +owl_height = owl_image.GetHeight(); + +logo_scale = 0.36; +owl_width = owl_width * logo_scale; +owl_height = owl_height * logo_scale; +owl_image = owl_image.Scale(owl_width, owl_height); + +owl_sprite = Sprite(owl_image); + +owl_x = screen_width / 2 - owl_width / 2; +owl_y = screen_height / 2 - owl_height / 2 - 20; +owl_sprite.SetPosition(owl_x, owl_y, 10); + +// --- status text: single static message --- + +status_image = Image("status-installed.png"); +status_scale = 0.5; +status_image = status_image.Scale(status_image.GetWidth() * status_scale, + status_image.GetHeight() * status_scale); +status_sprite = Sprite(status_image); +status_sprite.SetX(screen_width / 2 - status_image.GetWidth() / 2); +status_sprite.SetY(owl_y + owl_height + 40); +status_sprite.SetZ(10); + +Plymouth.SetBootProgressFunction(fun(duration, progress) +{ +}); + +// --- password prompt (LUKS unlock) --- + +fun display_password_callback(prompt, bullets) +{ + local.text = prompt; + if (local.text == "") + local.text = "Enter passphrase to unlock disk"; + + prompt_image = Image.Text(local.text, 0.9, 0.9, 0.9, 1, "Ubuntu Mono 11"); + bullets_image = Image.Text(bullets, 0.36, 0.66, 0.32, 1, "Ubuntu Mono 11"); + + prompt_sprite = Sprite(prompt_image); + bullets_sprite = Sprite(bullets_image); + + prompt_sprite.SetPosition(screen_width / 2 - prompt_image.GetWidth() / 2, + screen_height / 2 + 80, 20); + bullets_sprite.SetPosition(screen_width / 2 - bullets_image.GetWidth() / 2, + screen_height / 2 + 110, 20); +} +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +fun display_normal_callback() +{ +} +Plymouth.SetDisplayNormalFunction(display_normal_callback); + +fun quit_callback() +{ +} +Plymouth.SetQuitFunction(quit_callback); diff --git a/plymouth-assets/raveos-owl.png b/plymouth-assets/raveos-owl.png new file mode 100644 index 0000000..9903765 Binary files /dev/null and b/plymouth-assets/raveos-owl.png differ diff --git a/plymouth-assets/raveos.plymouth b/plymouth-assets/raveos.plymouth new file mode 100644 index 0000000..478b7f0 --- /dev/null +++ b/plymouth-assets/raveos.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=RaveOS +Description=RaveOS boot splash +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/raveos +ScriptFile=/usr/share/plymouth/themes/raveos/raveos.script diff --git a/plymouth-assets/raveos.script b/plymouth-assets/raveos.script new file mode 100644 index 0000000..70ee581 --- /dev/null +++ b/plymouth-assets/raveos.script @@ -0,0 +1,127 @@ +// RaveOS Plymouth boot splash script (live install medium) + +Window.SetBackgroundTopColor(0.102, 0.106, 0.114); +Window.SetBackgroundBottomColor(0.075, 0.078, 0.086); + +screen_width = Window.GetWidth(); +screen_height = Window.GetHeight(); + +// --- logo: owl icon, centered --- + +owl_image = Image("raveos-owl.png"); +owl_width = owl_image.GetWidth(); +owl_height = owl_image.GetHeight(); + +logo_scale = 0.36; +owl_width = owl_width * logo_scale; +owl_height = owl_height * logo_scale; +owl_image = owl_image.Scale(owl_width, owl_height); + +owl_sprite = Sprite(owl_image); + +owl_x = screen_width / 2 - owl_width / 2; +owl_y = screen_height / 2 - owl_height / 2 - 20; +owl_sprite.SetPosition(owl_x, owl_y, 10); + +// --- status text: pre-rendered PNG cycling by boot progress --- + +status_count = 6; +status_images[0] = Image("status-01.png"); +status_images[1] = Image("status-02.png"); +status_images[2] = Image("status-03.png"); +status_images[3] = Image("status-04.png"); +status_images[4] = Image("status-05.png"); +status_images[5] = Image("status-06.png"); + +status_sprite = Sprite(); +status_sprite.SetZ(10); +status_scale = 0.5; +status_y = owl_y + owl_height + 40; + +seconds_per_stage = 1.2; + +// --- progress dots --- + +dot_lit_image = Image("dot-lit.png"); +dot_dim_image = Image("dot-dim.png"); +dot_scale = 0.35; +dot_size = dot_lit_image.GetWidth() * dot_scale; +dot_gap = 10; +dots_width = status_count * dot_size + (status_count - 1) * dot_gap; +dots_y = status_y + 34; + +for (i = 0; i < status_count; i++) +{ + dot_sprites[i] = Sprite(); + dot_sprites[i].SetZ(10); + dot_sprites[i].SetX(screen_width / 2 - dots_width / 2 + i * (dot_size + dot_gap)); + dot_sprites[i].SetY(dots_y); +} + +fun update_dots(index) +{ + for (i = 0; i < status_count; i++) + { + if (i <= index) + img = dot_lit_image.Scale(dot_size, dot_size); + else + img = dot_dim_image.Scale(dot_size, dot_size); + dot_sprites[i].SetImage(img); + } +} + +fun update_status(index) +{ + if (index >= status_count) + index = status_count - 1; + + img = status_images[index].Scale(status_images[index].GetWidth() * status_scale, + status_images[index].GetHeight() * status_scale); + status_sprite.SetImage(img); + status_sprite.SetX(screen_width / 2 - img.GetWidth() / 2); + status_sprite.SetY(status_y); + + update_dots(index); +} + +update_status(0); + +# "duration" a valos eltelt masodperc a boot ota - ez mindig pontos, +# ellentetben a "progress" becslessel (ami elozo boot-idomeresre tamaszkodik, +# es elso/friss elo boot-nal megbizhatatlan / gyakorlatilag 0-n ragad). +Plymouth.SetBootProgressFunction(fun(duration, progress) +{ + index = Math.Int(duration / seconds_per_stage); + update_status(index); +}); + +// --- password prompt (LUKS unlock) --- + +fun display_password_callback(prompt, bullets) +{ + local.text = prompt; + if (local.text == "") + local.text = "Enter passphrase to unlock disk"; + + prompt_image = Image.Text(local.text, 0.9, 0.9, 0.9, 1, "Ubuntu Mono 11"); + bullets_image = Image.Text(bullets, 0.36, 0.66, 0.32, 1, "Ubuntu Mono 11"); + + prompt_sprite = Sprite(prompt_image); + bullets_sprite = Sprite(bullets_image); + + prompt_sprite.SetPosition(screen_width / 2 - prompt_image.GetWidth() / 2, + screen_height / 2 + 80, 20); + bullets_sprite.SetPosition(screen_width / 2 - bullets_image.GetWidth() / 2, + screen_height / 2 + 110, 20); +} +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +fun display_normal_callback() +{ +} +Plymouth.SetDisplayNormalFunction(display_normal_callback); + +fun quit_callback() +{ +} +Plymouth.SetQuitFunction(quit_callback); diff --git a/plymouth-assets/status-01.png b/plymouth-assets/status-01.png new file mode 100644 index 0000000..734fd58 Binary files /dev/null and b/plymouth-assets/status-01.png differ diff --git a/plymouth-assets/status-02.png b/plymouth-assets/status-02.png new file mode 100644 index 0000000..338a3e1 Binary files /dev/null and b/plymouth-assets/status-02.png differ diff --git a/plymouth-assets/status-03.png b/plymouth-assets/status-03.png new file mode 100644 index 0000000..14ec3e6 Binary files /dev/null and b/plymouth-assets/status-03.png differ diff --git a/plymouth-assets/status-04.png b/plymouth-assets/status-04.png new file mode 100644 index 0000000..11b3d6a Binary files /dev/null and b/plymouth-assets/status-04.png differ diff --git a/plymouth-assets/status-05.png b/plymouth-assets/status-05.png new file mode 100644 index 0000000..b515bec Binary files /dev/null and b/plymouth-assets/status-05.png differ diff --git a/plymouth-assets/status-06.png b/plymouth-assets/status-06.png new file mode 100644 index 0000000..c801dc3 Binary files /dev/null and b/plymouth-assets/status-06.png differ diff --git a/plymouth-assets/status-installed.png b/plymouth-assets/status-installed.png new file mode 100644 index 0000000..216ff34 Binary files /dev/null and b/plymouth-assets/status-installed.png differ diff --git a/plymouth-assets/tagline.png b/plymouth-assets/tagline.png new file mode 100644 index 0000000..1901621 Binary files /dev/null and b/plymouth-assets/tagline.png differ diff --git a/plymouth-assets/wordmark.png b/plymouth-assets/wordmark.png new file mode 100644 index 0000000..c6f1964 Binary files /dev/null and b/plymouth-assets/wordmark.png differ diff --git a/releng/airootfs/etc/mkinitcpio.conf.d/archiso.conf b/releng/airootfs/etc/mkinitcpio.conf.d/archiso.conf index 5c008e5..e53d079 100644 --- a/releng/airootfs/etc/mkinitcpio.conf.d/archiso.conf +++ b/releng/airootfs/etc/mkinitcpio.conf.d/archiso.conf @@ -1,3 +1,3 @@ -HOOKS=(base udev microcode modconf kms memdisk archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs block filesystems keyboard) +HOOKS=(base udev plymouth microcode modconf kms memdisk archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs block filesystems keyboard) COMPRESSION="xz" COMPRESSION_OPTIONS=(-9e) diff --git a/releng/airootfs/etc/motd b/releng/airootfs/etc/motd index 4d9eda1..e69de29 100644 --- a/releng/airootfs/etc/motd +++ b/releng/airootfs/etc/motd @@ -1,11 +0,0 @@ -To install Arch Linux follow the installation guide: -https://wiki.archlinux.org/title/Installation_guide - -For Wi-Fi, authenticate to the wireless network using the iwctl utility. -For mobile broadband (WWAN) modems, connect with the mmcli utility. -Ethernet, WLAN and WWAN interfaces using DHCP should work automatically. - -After connecting to the internet, the installation guide can be accessed -via the convenience script Installation_guide. - -                                           diff --git a/releng/airootfs/etc/plymouth/plymouthd.conf b/releng/airootfs/etc/plymouth/plymouthd.conf new file mode 100644 index 0000000..288041e --- /dev/null +++ b/releng/airootfs/etc/plymouth/plymouthd.conf @@ -0,0 +1,2 @@ +[Daemon] +Theme=raveos diff --git a/releng/airootfs/root/.config/openbox/autostart b/releng/airootfs/root/.config/openbox/autostart index b1180b2..a69fa50 100755 --- a/releng/airootfs/root/.config/openbox/autostart +++ b/releng/airootfs/root/.config/openbox/autostart @@ -4,5 +4,8 @@ xset s off xset -dpms xset s noblank +# X mar atvette a kepernyot, a Plymouth-quit itt mar zokkenomentes +plymouth quit & + # Launch Calamares fullscreen calamares & diff --git a/releng/airootfs/usr/share/calamares/kernel-install/95-raveos.install b/releng/airootfs/usr/share/calamares/kernel-install/95-raveos.install index fc31285..316204c 100755 --- a/releng/airootfs/usr/share/calamares/kernel-install/95-raveos.install +++ b/releng/airootfs/usr/share/calamares/kernel-install/95-raveos.install @@ -32,11 +32,36 @@ MICROCODE="" # -------------------------------------------------- # Root device detection # -------------------------------------------------- -ROOT_SRC="$(findmnt -no SOURCE /)" -ROOT_FS="$(findmnt -no FSTYPE /)" -ROOT_OPTS="$(findmnt -no OPTIONS /)" +# findmnt can come back empty depending on the chroot/mount-namespace +# context this hook runs in (e.g. during pacstrap). Fall back to +# /proc/mounts, and finally /etc/fstab (once it exists), before giving up. +ROOT_SRC="$(findmnt -no SOURCE / || true)" +ROOT_FS="$(findmnt -no FSTYPE / || true)" +ROOT_OPTS="$(findmnt -no OPTIONS / || true)" -OPTIONS="rw quiet" +if [ -z "$ROOT_SRC" ]; then + ROOT_SRC="$(awk '$2 == "/" {print $1; exit}' /proc/mounts)" + ROOT_FS="$(awk '$2 == "/" {print $3; exit}' /proc/mounts)" + ROOT_OPTS="$(awk '$2 == "/" {print $4; exit}' /proc/mounts)" +fi + +if [ -z "$ROOT_SRC" ] && [ -f /etc/fstab ]; then + ROOT_SRC="$(awk '$2 == "/" {print $1; exit}' /etc/fstab)" + ROOT_FS="$(awk '$2 == "/" {print $3; exit}' /etc/fstab)" + ROOT_OPTS="$(awk '$2 == "/" {print $4; exit}' /etc/fstab)" +fi + +# /proc/mounts and /etc/fstab may give "UUID=xxxx"/"PARTUUID=xxxx" directly +# instead of a /dev/ path -- resolve to an actual device node so the blkid +# lookups below work either way. +case "$ROOT_SRC" in + UUID=*|PARTUUID=*|LABEL=*) + RESOLVED="$(blkid -t "$ROOT_SRC" -o device 2>/dev/null || true)" + [ -n "$RESOLVED" ] && ROOT_SRC="$RESOLVED" + ;; +esac + +OPTIONS="rw quiet splash" # LUKS if [[ "$ROOT_SRC" == /dev/mapper/* ]]; then diff --git a/releng/airootfs/usr/share/plymouth/themes/raveos/dot-dim.png b/releng/airootfs/usr/share/plymouth/themes/raveos/dot-dim.png new file mode 100644 index 0000000..f95ae69 Binary files /dev/null and b/releng/airootfs/usr/share/plymouth/themes/raveos/dot-dim.png differ diff --git a/releng/airootfs/usr/share/plymouth/themes/raveos/dot-lit.png b/releng/airootfs/usr/share/plymouth/themes/raveos/dot-lit.png new file mode 100644 index 0000000..a429367 Binary files /dev/null and b/releng/airootfs/usr/share/plymouth/themes/raveos/dot-lit.png differ diff --git a/releng/airootfs/usr/share/plymouth/themes/raveos/raveos-owl.png b/releng/airootfs/usr/share/plymouth/themes/raveos/raveos-owl.png new file mode 100644 index 0000000..9903765 Binary files /dev/null and b/releng/airootfs/usr/share/plymouth/themes/raveos/raveos-owl.png differ diff --git a/releng/airootfs/usr/share/plymouth/themes/raveos/raveos.plymouth b/releng/airootfs/usr/share/plymouth/themes/raveos/raveos.plymouth new file mode 100644 index 0000000..478b7f0 --- /dev/null +++ b/releng/airootfs/usr/share/plymouth/themes/raveos/raveos.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=RaveOS +Description=RaveOS boot splash +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/raveos +ScriptFile=/usr/share/plymouth/themes/raveos/raveos.script diff --git a/releng/airootfs/usr/share/plymouth/themes/raveos/raveos.script b/releng/airootfs/usr/share/plymouth/themes/raveos/raveos.script new file mode 100644 index 0000000..70ee581 --- /dev/null +++ b/releng/airootfs/usr/share/plymouth/themes/raveos/raveos.script @@ -0,0 +1,127 @@ +// RaveOS Plymouth boot splash script (live install medium) + +Window.SetBackgroundTopColor(0.102, 0.106, 0.114); +Window.SetBackgroundBottomColor(0.075, 0.078, 0.086); + +screen_width = Window.GetWidth(); +screen_height = Window.GetHeight(); + +// --- logo: owl icon, centered --- + +owl_image = Image("raveos-owl.png"); +owl_width = owl_image.GetWidth(); +owl_height = owl_image.GetHeight(); + +logo_scale = 0.36; +owl_width = owl_width * logo_scale; +owl_height = owl_height * logo_scale; +owl_image = owl_image.Scale(owl_width, owl_height); + +owl_sprite = Sprite(owl_image); + +owl_x = screen_width / 2 - owl_width / 2; +owl_y = screen_height / 2 - owl_height / 2 - 20; +owl_sprite.SetPosition(owl_x, owl_y, 10); + +// --- status text: pre-rendered PNG cycling by boot progress --- + +status_count = 6; +status_images[0] = Image("status-01.png"); +status_images[1] = Image("status-02.png"); +status_images[2] = Image("status-03.png"); +status_images[3] = Image("status-04.png"); +status_images[4] = Image("status-05.png"); +status_images[5] = Image("status-06.png"); + +status_sprite = Sprite(); +status_sprite.SetZ(10); +status_scale = 0.5; +status_y = owl_y + owl_height + 40; + +seconds_per_stage = 1.2; + +// --- progress dots --- + +dot_lit_image = Image("dot-lit.png"); +dot_dim_image = Image("dot-dim.png"); +dot_scale = 0.35; +dot_size = dot_lit_image.GetWidth() * dot_scale; +dot_gap = 10; +dots_width = status_count * dot_size + (status_count - 1) * dot_gap; +dots_y = status_y + 34; + +for (i = 0; i < status_count; i++) +{ + dot_sprites[i] = Sprite(); + dot_sprites[i].SetZ(10); + dot_sprites[i].SetX(screen_width / 2 - dots_width / 2 + i * (dot_size + dot_gap)); + dot_sprites[i].SetY(dots_y); +} + +fun update_dots(index) +{ + for (i = 0; i < status_count; i++) + { + if (i <= index) + img = dot_lit_image.Scale(dot_size, dot_size); + else + img = dot_dim_image.Scale(dot_size, dot_size); + dot_sprites[i].SetImage(img); + } +} + +fun update_status(index) +{ + if (index >= status_count) + index = status_count - 1; + + img = status_images[index].Scale(status_images[index].GetWidth() * status_scale, + status_images[index].GetHeight() * status_scale); + status_sprite.SetImage(img); + status_sprite.SetX(screen_width / 2 - img.GetWidth() / 2); + status_sprite.SetY(status_y); + + update_dots(index); +} + +update_status(0); + +# "duration" a valos eltelt masodperc a boot ota - ez mindig pontos, +# ellentetben a "progress" becslessel (ami elozo boot-idomeresre tamaszkodik, +# es elso/friss elo boot-nal megbizhatatlan / gyakorlatilag 0-n ragad). +Plymouth.SetBootProgressFunction(fun(duration, progress) +{ + index = Math.Int(duration / seconds_per_stage); + update_status(index); +}); + +// --- password prompt (LUKS unlock) --- + +fun display_password_callback(prompt, bullets) +{ + local.text = prompt; + if (local.text == "") + local.text = "Enter passphrase to unlock disk"; + + prompt_image = Image.Text(local.text, 0.9, 0.9, 0.9, 1, "Ubuntu Mono 11"); + bullets_image = Image.Text(bullets, 0.36, 0.66, 0.32, 1, "Ubuntu Mono 11"); + + prompt_sprite = Sprite(prompt_image); + bullets_sprite = Sprite(bullets_image); + + prompt_sprite.SetPosition(screen_width / 2 - prompt_image.GetWidth() / 2, + screen_height / 2 + 80, 20); + bullets_sprite.SetPosition(screen_width / 2 - bullets_image.GetWidth() / 2, + screen_height / 2 + 110, 20); +} +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +fun display_normal_callback() +{ +} +Plymouth.SetDisplayNormalFunction(display_normal_callback); + +fun quit_callback() +{ +} +Plymouth.SetQuitFunction(quit_callback); diff --git a/releng/airootfs/usr/share/plymouth/themes/raveos/status-01.png b/releng/airootfs/usr/share/plymouth/themes/raveos/status-01.png new file mode 100644 index 0000000..734fd58 Binary files /dev/null and b/releng/airootfs/usr/share/plymouth/themes/raveos/status-01.png differ diff --git a/releng/airootfs/usr/share/plymouth/themes/raveos/status-02.png b/releng/airootfs/usr/share/plymouth/themes/raveos/status-02.png new file mode 100644 index 0000000..338a3e1 Binary files /dev/null and b/releng/airootfs/usr/share/plymouth/themes/raveos/status-02.png differ diff --git a/releng/airootfs/usr/share/plymouth/themes/raveos/status-03.png b/releng/airootfs/usr/share/plymouth/themes/raveos/status-03.png new file mode 100644 index 0000000..14ec3e6 Binary files /dev/null and b/releng/airootfs/usr/share/plymouth/themes/raveos/status-03.png differ diff --git a/releng/airootfs/usr/share/plymouth/themes/raveos/status-04.png b/releng/airootfs/usr/share/plymouth/themes/raveos/status-04.png new file mode 100644 index 0000000..11b3d6a Binary files /dev/null and b/releng/airootfs/usr/share/plymouth/themes/raveos/status-04.png differ diff --git a/releng/airootfs/usr/share/plymouth/themes/raveos/status-05.png b/releng/airootfs/usr/share/plymouth/themes/raveos/status-05.png new file mode 100644 index 0000000..b515bec Binary files /dev/null and b/releng/airootfs/usr/share/plymouth/themes/raveos/status-05.png differ diff --git a/releng/airootfs/usr/share/plymouth/themes/raveos/status-06.png b/releng/airootfs/usr/share/plymouth/themes/raveos/status-06.png new file mode 100644 index 0000000..c801dc3 Binary files /dev/null and b/releng/airootfs/usr/share/plymouth/themes/raveos/status-06.png differ diff --git a/releng/efiboot/loader/entries/01-archiso-linux.conf b/releng/efiboot/loader/entries/01-archiso-linux.conf index 0b6cc5a..b657b08 100644 --- a/releng/efiboot/loader/entries/01-archiso-linux.conf +++ b/releng/efiboot/loader/entries/01-archiso-linux.conf @@ -2,4 +2,4 @@ title RaveOS install medium (%ARCH%, UEFI) sort-key 01 linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img -options archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% cow_spacesize=75% copytoram=n +options archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% cow_spacesize=75% copytoram=n quiet splash diff --git a/releng/packages.x86_64 b/releng/packages.x86_64 index a4e2596..c084439 100644 --- a/releng/packages.x86_64 +++ b/releng/packages.x86_64 @@ -101,3 +101,6 @@ raveos-keyring # Terminal greeting fastfetch + +# Boot splash +plymouth diff --git a/releng/syslinux/archiso_sys-linux.cfg b/releng/syslinux/archiso_sys-linux.cfg index d945c7a..5615abd 100644 --- a/releng/syslinux/archiso_sys-linux.cfg +++ b/releng/syslinux/archiso_sys-linux.cfg @@ -6,7 +6,7 @@ ENDTEXT MENU LABEL Arch Linux install medium (%ARCH%, BIOS) LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux INITRD /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img -APPEND archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% +APPEND archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% quiet splash # Accessibility boot option LABEL archspeech -- cgit v1.3