diff options
feat: initial commit
Diffstat (limited to 'src')
33 files changed, 1838 insertions, 0 deletions
diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..e920bfb --- /dev/null +++ b/src/app.css @@ -0,0 +1,12 @@ +/* + Copyright (C) 2024 memdmp + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/src/app.d.ts b/src/app.d.ts new file mode 100644 index 0000000..743f07b --- /dev/null +++ b/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..f2d20ed --- /dev/null +++ b/src/app.html @@ -0,0 +1,31 @@ +<!-- +/** + * @generated + * @license AGPL-3.0-OR-LATER + * @copyright 2024 memdmp + * @upstream see https://[currentdomain]/upstream + * + * Copyright (C) 2024 memdmp + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + --> +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <link rel="icon" href="%sveltekit.assets%/favicon.png" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + %sveltekit.head% +</head> + +<body data-sveltekit-preload-data="hover"> + <div style="display: contents">%sveltekit.body%</div> +</body> + +</html>
\ No newline at end of file diff --git a/src/lib/fonts/Ac437_IBM_EGA_8x14.css b/src/lib/fonts/Ac437_IBM_EGA_8x14.css new file mode 100644 index 0000000..01a053b --- /dev/null +++ b/src/lib/fonts/Ac437_IBM_EGA_8x14.css @@ -0,0 +1,18 @@ +/* + Copyright (C) 2024 memdmp + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ +@font-face { + font-family: "Ac437 IBM EGA 8x14"; + src: + local("Ac437 IBM EGA 8x14"), + url("./Ac437_IBM_EGA_8x14.woff2") format("woff2"), + url("./Ac437_IBM_EGA_8x14.woff") format("woff"), + url("./Ac437_IBM_EGA_8x14.ttf") format("opentype"); + font-display: swap; +} diff --git a/src/lib/fonts/Ac437_IBM_EGA_8x14.ttf b/src/lib/fonts/Ac437_IBM_EGA_8x14.ttf Binary files differnew file mode 100644 index 0000000..d5b008b --- /dev/null +++ b/src/lib/fonts/Ac437_IBM_EGA_8x14.ttf diff --git a/src/lib/fonts/Ac437_IBM_EGA_8x14.woff b/src/lib/fonts/Ac437_IBM_EGA_8x14.woff Binary files differnew file mode 100644 index 0000000..2a9d6dc --- /dev/null +++ b/src/lib/fonts/Ac437_IBM_EGA_8x14.woff diff --git a/src/lib/fonts/Ac437_IBM_EGA_8x14.woff2 b/src/lib/fonts/Ac437_IBM_EGA_8x14.woff2 Binary files differnew file mode 100644 index 0000000..fa786e2 --- /dev/null +++ b/src/lib/fonts/Ac437_IBM_EGA_8x14.woff2 diff --git a/src/lib/fonts/Px437_DOS-V_re_JPN12.css b/src/lib/fonts/Px437_DOS-V_re_JPN12.css new file mode 100644 index 0000000..410e9de --- /dev/null +++ b/src/lib/fonts/Px437_DOS-V_re_JPN12.css @@ -0,0 +1,18 @@ +/* + Copyright (C) 2024 memdmp + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ +@font-face { + font-family: "Px437 DOS/V re. JPN12"; + src: + local("Px437 DOS/V re. JPN12"), + url("./Px437_DOS-V_re_JPN12.woff2") format("woff2"), + url("./Px437_DOS-V_re_JPN12.woff") format("woff"), + url("./Px437_DOS-V_re_JPN12.ttf") format("opentype"); + font-display: swap; +} diff --git a/src/lib/fonts/Px437_DOS-V_re_JPN12.ttf b/src/lib/fonts/Px437_DOS-V_re_JPN12.ttf Binary files differnew file mode 100644 index 0000000..6f4d616 --- /dev/null +++ b/src/lib/fonts/Px437_DOS-V_re_JPN12.ttf diff --git a/src/lib/fonts/Px437_DOS-V_re_JPN12.woff b/src/lib/fonts/Px437_DOS-V_re_JPN12.woff Binary files differnew file mode 100644 index 0000000..311517f --- /dev/null +++ b/src/lib/fonts/Px437_DOS-V_re_JPN12.woff diff --git a/src/lib/fonts/Px437_DOS-V_re_JPN12.woff2 b/src/lib/fonts/Px437_DOS-V_re_JPN12.woff2 Binary files differnew file mode 100644 index 0000000..12926c4 --- /dev/null +++ b/src/lib/fonts/Px437_DOS-V_re_JPN12.woff2 diff --git a/src/lib/fonts/PxPlus_IBM_EGA_8x14.css b/src/lib/fonts/PxPlus_IBM_EGA_8x14.css new file mode 100644 index 0000000..d1a3a97 --- /dev/null +++ b/src/lib/fonts/PxPlus_IBM_EGA_8x14.css @@ -0,0 +1,18 @@ +/* + Copyright (C) 2024 memdmp + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ +@font-face { + font-family: "PxPlus IBM EGA 8x14"; + src: + local("PxPlus IBM EGA 8x14"), + url("./PxPlus_IBM_EGA_8x14.woff2") format("woff2"), + url("./PxPlus_IBM_EGA_8x14.woff") format("woff"), + url("./PxPlus_IBM_EGA_8x14.ttf") format("opentype"); + font-display: swap; +} diff --git a/src/lib/fonts/PxPlus_IBM_EGA_8x14.ttf b/src/lib/fonts/PxPlus_IBM_EGA_8x14.ttf Binary files differnew file mode 100644 index 0000000..6dc1007 --- /dev/null +++ b/src/lib/fonts/PxPlus_IBM_EGA_8x14.ttf diff --git a/src/lib/fonts/PxPlus_IBM_EGA_8x14.woff b/src/lib/fonts/PxPlus_IBM_EGA_8x14.woff Binary files differnew file mode 100644 index 0000000..0763445 --- /dev/null +++ b/src/lib/fonts/PxPlus_IBM_EGA_8x14.woff diff --git a/src/lib/fonts/PxPlus_IBM_EGA_8x14.woff2 b/src/lib/fonts/PxPlus_IBM_EGA_8x14.woff2 Binary files differnew file mode 100644 index 0000000..c29e71a --- /dev/null +++ b/src/lib/fonts/PxPlus_IBM_EGA_8x14.woff2 diff --git a/src/lib/fonts/all-local-after-woff2.css b/src/lib/fonts/all-local-after-woff2.css new file mode 100644 index 0000000..9bc8d65 --- /dev/null +++ b/src/lib/fonts/all-local-after-woff2.css @@ -0,0 +1,36 @@ +/* + Copyright (C) 2024 memdmp + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ +@font-face { + font-family: "Ac437 IBM EGA 8x14"; + src: + url("./Ac437_IBM_EGA_8x14.woff2") format("woff2"), + local("Ac437 IBM EGA 8x14"), + url("./Ac437_IBM_EGA_8x14.woff") format("woff"), + url("./Ac437_IBM_EGA_8x14.ttf") format("opentype"); + font-display: swap; +} +@font-face { + font-family: "PxPlus IBM EGA 8x14"; + src: + url("./PxPlus_IBM_EGA_8x14.woff2") format("woff2"), + local("PxPlus IBM EGA 8x14"), + url("./PxPlus_IBM_EGA_8x14.woff") format("woff"), + url("./PxPlus_IBM_EGA_8x14.ttf") format("opentype"); + font-display: swap; +} +@font-face { + font-family: "Px437 DOS/V re. JPN12"; + src: + url("./Px437_DOS-V_re_JPN12.woff2") format("woff2"), + local("Px437 DOS/V re. JPN12"), + url("./Px437_DOS-V_re_JPN12.woff") format("woff"), + url("./Px437_DOS-V_re_JPN12.ttf") format("opentype"); + font-display: swap; +} diff --git a/src/lib/fonts/all.css b/src/lib/fonts/all.css new file mode 100644 index 0000000..7b30c9a --- /dev/null +++ b/src/lib/fonts/all.css @@ -0,0 +1,36 @@ +/* + Copyright (C) 2024 memdmp + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ +@font-face { + font-family: "Ac437 IBM EGA 8x14"; + src: + local("Ac437 IBM EGA 8x14"), + url("./Ac437_IBM_EGA_8x14.woff2") format("woff2"), + url("./Ac437_IBM_EGA_8x14.woff") format("woff"), + url("./Ac437_IBM_EGA_8x14.ttf") format("opentype"); + font-display: swap; +} +@font-face { + font-family: "PxPlus IBM EGA 8x14"; + src: + local("PxPlus IBM EGA 8x14"), + url("./PxPlus_IBM_EGA_8x14.woff2") format("woff2"), + url("./PxPlus_IBM_EGA_8x14.woff") format("woff"), + url("./PxPlus_IBM_EGA_8x14.ttf") format("opentype"); + font-display: swap; +} +@font-face { + font-family: "Px437 DOS/V re. JPN12"; + src: + local("Px437 DOS/V re. JPN12"), + url("./Px437_DOS-V_re_JPN12.woff2") format("woff2"), + url("./Px437_DOS-V_re_JPN12.woff") format("woff"), + url("./Px437_DOS-V_re_JPN12.ttf") format("opentype"); + font-display: swap; +} diff --git a/src/lib/index.ts b/src/lib/index.ts new file mode 100644 index 0000000..13c5889 --- /dev/null +++ b/src/lib/index.ts @@ -0,0 +1,10 @@ +/* + Copyright (C) 2024 memdmp + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ +export * as styles from "./styles.ts"; diff --git a/src/lib/license.ts b/src/lib/license.ts new file mode 100644 index 0000000..d9c8ffe --- /dev/null +++ b/src/lib/license.ts @@ -0,0 +1,7 @@ +import * as license from "$/../LICENSE?raw"; + +export default (typeof license === "string" + ? license + : "default" in license + ? license.default + : JSON.stringify(license, null, 2)) as string; diff --git a/src/lib/styles.ts b/src/lib/styles.ts new file mode 100644 index 0000000..fd361b4 --- /dev/null +++ b/src/lib/styles.ts @@ -0,0 +1,10 @@ +/* + Copyright (C) 2024 memdmp + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ +export const button = "bg-white bg-opacity-10 text-white p-4 rounded-xl"; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..53bd941 --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,11 @@ +<script lang="ts"> + import "../app.css"; + import "$lib/fonts/all-local-after-woff2.css"; + const { children } = $props(); +</script> + +<div + class="w-screen h-screen fixed top-0 left-0 bg-black text-white p-4 overflow-y-auto" +> + {@render children()} +</div> diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts new file mode 100644 index 0000000..2c01569 --- /dev/null +++ b/src/routes/+layout.ts @@ -0,0 +1,11 @@ +/* + Copyright (C) 2024 memdmp + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ +export const prerender = true; +export const trailingSlash = 'always'; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte new file mode 100644 index 0000000..701132b --- /dev/null +++ b/src/routes/+page.svelte @@ -0,0 +1,414 @@ +<!-- +/** + * @license AGPL-3.0-OR-LATER + * @copyright 2024 memdmp + * + * Copyright (C) 2024 memdmp + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + --> +<script lang="ts"> + import logo from "./boot-logo.png"; + import "./anim.css"; + import { architecture, hostname, tty, versions } from "./distro-info"; + import { login, ttyLines, type RenderBlock, type TTYText } from "./shared"; + import { onDestroy, onMount } from "svelte"; + + const initTagLine = `line flex flex-row flex-wrap gap-3 justify-between`; + + const fsckFileCount = Math.floor(Math.random() * 32768 + 6732); + const fsckTotalCount = Math.round( + (fsckFileCount / 6732) * 753664 + Math.random() * 10000, + ); + const blocksTotal = Math.floor(Math.random() * 8000000 + 4000000); + const blocksCount = Math.floor(Math.random() * 600000 + 200000); + + const lanLeastSignificantIPPart = Math.floor(Math.random() * 253 + 2); + + let isScripted = false; + onMount(() => (isScripted = true)); + onDestroy(() => (isScripted = false)); +</script> + +<svelte:head> + <title>mem.estrogen.zone</title> +</svelte:head> + +{#snippet tagLeft(colour: string)} + <span class="text-[{colour}]">*</span> +{/snippet} +{#snippet okTagLeft()} + {@render tagLeft("#51f051")} +{/snippet} +{#snippet tagRight(innerText: string, innerColour: string)} + <span class="text-[#5f5fff]">[</span> + <span class="text-[{innerColour}]">{innerText}</span> + <span class="text-[#5f5fff]">]</span> +{/snippet} +{#snippet okTagRight()} + {@render tagRight("ok", "#51f051")} +{/snippet} +{#snippet okLine(text: string, classes?: string, rightClass?: string)} + <div class="{initTagLine}{classes ? ' ' + classes : ''}"> + <div class="left"> + {@render okTagLeft()} + {text} + </div> + <div class="right{rightClass ? ' ' + rightClass : ''}"> + {@render okTagRight()} + </div> + </div> +{/snippet} +{#snippet ttyTextInnerRenderer(section: RenderBlock)} + <span + class="ttytext-block {section.colour + ? ` text-[${section.colour}]` + : ''}{section.bg ? ` bg-[${section.bg}]` : ''} {section.weight + ? ` ${['', 'font-thin', 'font-extralight', 'font-light', 'font-normal', 'font-medium', 'font-semibold', 'font-bold', 'font-extrabold', 'font-black'][section.weight / 100]}` + : ''}{typeof section.italic === 'undefined' + ? '' + : section.italic + ? ' italic' + : ' not-italic'}{typeof section.underlined === 'undefined' + ? '' + : section.underlined + ? ` underline` + : ' no-underline'} inline" + >{#if section.raw}{@html section.value}{:else}{#each section.value + .split("\n") + .map( (l, i, a) => (i === a.length - 1 ? [0, l] : [1, l]), ) as [nl, l]}{l}{#if nl}<br + />{/if}{/each}{/if}</span + > +{/snippet} +{#snippet ttyTextMiddleRenderer( + section: RenderBlock, + line: TTYText & { kind: "text" }, +)} + {#if section.url} + {#if typeof section.url === "string"} + {#if section.url.startsWith("newtab:")} + <a + href={section.url.substring(7)} + target="_blank" + rel="noopener noreferrer" + class="no-underline text-inherit" + download={section.dl}>{@render ttyTextInnerRenderer(section)}</a + > + {:else if section.url.startsWith("currenttab:")} + <a + href={section.url.substring(11)} + class="no-underline text-inherit" + download={section.dl}>{@render ttyTextInnerRenderer(section)}</a + > + {:else} + ERR: Unknown Link Format + {/if} + {:else} + <span + on:click={() => + typeof section.url !== "function" ? void 0 : section.url(line)} + on:keypress={() => + typeof section.url !== "function" ? void 0 : section.url(line)} + role="link" + tabindex="0">{@render ttyTextInnerRenderer(section)}</span + > + {/if} + {:else} + {@render ttyTextInnerRenderer(section)} + {/if} +{/snippet} +{#snippet ttyText(line: TTYText)} + {#if line.kind === "text"} + {#if (line.renderrestriction ?? "everywhere") === "everywhere" || line.renderrestriction === "noscript" || (line.renderrestriction === "js-only" && isScripted)} + {#if line.renderrestriction === "noscript"} + <noscript class="inline-block max-w-[100%] {line.classes.join(' ')}" + >{#each line.value as v}{@render ttyTextMiddleRenderer( + v, + line, + )}{/each}</noscript + > + {:else} + <span class="inline-block max-w-[100%] {line.classes.join(' ')}" + >{#each line.value as v}{@render ttyTextMiddleRenderer( + v, + line, + )}{/each}</span + > + {/if} + {/if} + {/if} +{/snippet} + +<div class="hidden"> + {#each ["inline-block", "block", "flex", "inline-flex", "max-w-full", "font-thin", "font-extralight", "font-light", "font-normal", "font-medium", "font-semibold", "font-bold", "font-extrabold", "font-black"] as c} + <span class={c}></span> + {/each} +</div> + +<div class="fixed top-0 left-0 w-screen h-screen font-mono" id="app"> + <div + id="bios" + class="flex flex-col items-center justify-between relative font-bios text-lg" + > + <div class="top flex items-center justify-center flex-col"> + <div class="inner text-[#999999]"> + <p class="leading-4 mt-8 -mb-8 max-w-[36rem]"> + <span class="bdsdxe-load" + >BdsDxe: loading Boot0002 "UEFI Misc Device" from PciRoot + (0x0)/Pci(0x2,0x4)/Pci(0x0,0x0)</span + ><br /> + <span class="bdsdxe-start" + >BdsDxe: starting Boot0002 "UEFI Misc Device" from PciRoot + (0x0)/Pci(0x2,0x4)/Pci(0x0,0x0)</span + > + </p> + </div> + </div> + <div class="middle"> + <img + src={logo} + alt="Bootloader Logo" + class="w-32 h-32 flex items-center justify-center" + /> + </div> + <div + class="bottom flex flex-col items-stretch justify-center text-center gap-0.5 w-full pb-4" + > + <div class="start-text">Start boot option</div> + <div + class="bar h-4" + style={`background-image: url("data:image/svg+xml,${encodeURIComponent(`<svg width="32" height="32" viewbox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> + <rect x="1" y="1" width="30" height="30" fill="white" stroke="black" stroke-width="2"/> +</svg> +`)}");background-size:contain;`} + ></div> + </div> + </div> + <div id="grub" class="font-grub text-sm"> + <div + class="relative p-4 flex items-stretch justify-stretch flex-col w-screen h-screen" + > + <p class="title text-[#a2a2a2] mb-4 h-4 text-center"> + GNU GRUB version 2.12 + </p> + <div + class="outer-border border-2 border-[#a8a8a8] border-solid h-full px-1 py-2 flex flex-col items-stretch" + > + <div class="entry bg-[#a8a8a8] text-[#000] text-left"> + *Alpine Linux {versions.alpine.number}, with {versions.kernel + .humanReadable} + </div> + <div class="entry text-[#a8a8a8] text-left"> + UEFI Firmware Setup + </div> + </div> + <p class="footer text-[#a2a2a2] my-4 text-left pl-2"> + <span class="block pl-6"> + Use the ↑ and ↓ keys to select which entry is highlighted.<br /> + Press enter to boot the selected OS, `e' to edit the commands before booting + or `c' for a command-line.<br /> + </span> + The highlighted entry will be executed automatically in + <span class="grub-2s inline-block">2</span><span + class="grub-1s inline-block">1</span + >s. + </p> + </div> + </div> + <div id="grub-term" class="font-grub text-sm text-left text-[#a2a2a2]"> + <p class="p-8"> + Booting `Alpine Linux {versions.alpine.number}, with {versions + .kernel.humanReadable}'<br /><br /><span class="load-kernel" + >Loading {versions.kernel.humanReadable} ...</span + ><br /><span class="load-ramdisk">Loading initial ramdisk ...</span> + </p> + </div> + <!-- + flex col reverse and mb auto are hacks for it to auto scroll to bottom(!) + flex col reverse only works due to nested inner (which would be at bottom of screen, if it wasnt for mb-auto div above it) + --> + <div id="openrc" class="overflow-y-auto flex flex-col-reverse"> + <div class="mb-auto"></div> + <div class="font-mono leading-4 text-[#b9b9b9] flex flex-col p-4"> + <div class="line"> + <span class="text-[#51f051]">OpenRC</span> + <span class="text-[#4bdfdf]">{versions.openrc}</span> + is starting up Linux + <span class="text-[#5f5fff]">{versions.kernel.id} ({architecture})</span + > + </div> + <div class="line">​</div> + {@render okLine("/proc/ is already mounted")} + {@render okLine("Mounting /run ...")} + {@render okLine("/run/openrc: creating directory")} + {@render okLine("/run/lock: creating directory", "openrc-boot-step-1")} + {@render okLine("/run/lock: correcting owner", "openrc-boot-step-1")} + {@render okLine("Caching service dependencies ...", "openrc-boot-step-1")} + {@render okLine("Remounting devtmpfs on /dev ...", "openrc-boot-step-2")} + {@render okLine("Mounting /dev/mqueue ...", "openrc-boot-step-3")} + {@render okLine("Mounting security filesystem ...", "openrc-boot-step-4")} + {@render okLine("Mounting debug filesystem ...", "openrc-boot-step-5")} + {@render okLine( + "Mounting persistent storage (pstore) filesystem ...", + "openrc-boot-step-5", + )} + {@render okLine("Mounting efivarfs filesystem ...", "openrc-boot-step-5")} + {@render okLine("Starting busybox mdev ...", "openrc-boot-step-6")} + {@render okLine("Scanning hardware for mdev ...", "openrc-boot-step-6")} + {@render okLine("Loading hardware drivers ...", "openrc-boot-step-7")} + {@render okLine("Loading modules ...", "openrc-boot-step-8")} + {@render okLine( + "Setting system clock using the hardware clock [UTC] ...", + "openrc-boot-step-9", + )} + {@render okLine("Checking local filesystems ...", "openrc-boot-step-10")} + <div class="line openrc-boot-step-11"> + /dev/mapper/bepis: clean, {fsckFileCount}/{fsckTotalCount} files, {blocksCount}/{blocksTotal} + blocks + </div> + {@render okLine( + "Remounting root filesystem read/write ...", + "openrc-boot-step-12", + )} + {@render okLine("Remounting filesystems ...", "openrc-boot-step-13")} + {@render okLine("Activating swap devices ...", "openrc-boot-step-14")} + {@render okLine("Mounting local filesystems ...", "openrc-boot-step-15")} + {@render okLine( + "Configuring kernel parameters ...", + "openrc-boot-step-16", + )} + {@render okLine("Creating user login records ...", "openrc-boot-step-17")} + {@render okLine("Setting hostname ...", "openrc-boot-step-18")} + {@render okLine("Setting keymap ...", "openrc-boot-step-19")} + {@render okLine("Starting networking ...", "openrc-boot-step-20")} + {@render okLine("\xa0\xa0lo ...", "openrc-boot-step-21")} + {@render okLine("\xa0\xa0eth0 ...", "openrc-boot-step-22")} + <div class="line openrc-boot-step-22">udhcpd: started</div> + <div class="line openrc-boot-step-23">udhcpd: broadcasting discover</div> + <!-- TODO: configurable subnet uwu --> + <div class="line openrc-boot-step-24"> + udhcpd: broadcasting select for 192.168.1.{lanLeastSignificantIPPart}, + server 192.168.1.1 + </div> + <div class="line openrc-boot-step-25"> + udhcpd: lease of 192.168.1.{lanLeastSignificantIPPart} obtained from 192.168.1.1, + lease time 3600 + </div> + {@render okLine( + "Seeding random number generator ...", + "openrc-boot-step-26", < |