Skip to content

Commit

Permalink
Merge branch 'main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
nothingneko authored Jun 26, 2024
2 parents 8091643 + 5b307d6 commit 9fae3b4
Show file tree
Hide file tree
Showing 93 changed files with 4,341 additions and 232 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout your repository using git
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Install, build, and upload your site
uses: withastro/action@v1
uses: withastro/action@v2
with:
package-manager: pnpm@latest

Expand All @@ -34,4 +34,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
uses: actions/deploy-pages@v4
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,5 @@ pnpm-debug.log*

# macOS-specific files
.DS_Store

bun.lockb
24 changes: 13 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
# Ultramarine Linux Wiki

This wiki is meant to be the extended documentation for both end users and developers, so it is separated in those two categories. Made with Astro and a modification of the default blog template.
Welcome to the source repository behind the [Ultramarine Wiki]! We welcome any contributions and
you may freely send pull requests to this repository if you would like to modify any of the
content here!

## 🧞 Commands
## Translations

All commands are run from the root of the project, from a terminal:
If you'd like to translate for a new language:

| Command | Action |
| :---------------------- | :----------------------------------------------- |
| `pnpm install` | Installs dependencies |
| `pnpm run dev` | Starts local dev server at `localhost:3000` |
| `pnpm run build` | Build your production site to `./dist/` |
| `pnpm run preview` | Preview your build locally, before deploying |
| `pnpm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `pnpm run astro --help` | Get help using the Astro CLI |
1. Go to `src/consts.ts` to add a new language into `KNOWN_LANGUAGES`
2. Copy everything from `src/content/docs/en` to `src/content/docs/<your_language_code>`[^1]
3. Add pages into `SIDEBAR` in `src/consts.ts`
4. Start translating!

[^1]: We encourage you to use a generic language code without limiting the region.

[Ultramarine Wiki]: https://wiki.ultramarine-linux.org
Binary file added bun.lockb
Binary file not shown.
Binary file added public/assets/gparted/apply.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/gparted/checkwork.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/gparted/disk.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/gparted/done.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/gparted/fillwhole.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/gparted/gpt.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/gparted/part.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/gparted/progress.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/gparted/resizemenu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/welcome-window.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/og-image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
83 changes: 81 additions & 2 deletions src/consts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export const OPEN_GRAPH = {
export const KNOWN_LANGUAGES = {
English: "en",
Deutsch: "de",
正體中文: "zh_hant",
} as const;
export const KNOWN_LANGUAGE_CODES = Object.values(KNOWN_LANGUAGES);

Expand All @@ -36,7 +37,19 @@ export const SIDEBAR: Sidebar = {
Installation: [
{ text: "Getting Ultramarine", link: "en/installation/getting" },
{ text: "Installation", link: "en/installation/installation" },
// {
// text: "Installation with Readymade",
//link: "en/installation/readymade",
//},
{
text: "Installation on Raspberry Pi",
link: "en/installation/rpi",
},
{ text: "Post-Installation", link: "en/installation/postinstall" },
{
text: "Advanced Post-Install Steps",
link: "en/installation/post-advanced",
},
],
Contributing: [
{ text: "Overview", link: "en/contributing/contributorguide" },
Expand All @@ -54,16 +67,20 @@ export const SIDEBAR: Sidebar = {
{ text: "BIOS Keys", link: "en/hardware/bioskeys" },
],
"Linux Concepts": [
{ text: "Concepts Overview", link: "en/linux/overview" },
{ text: "What is Linux?", link: "en/linux/overview" },
{ text: "The File System", link: "en/linux/filesystem" },
{ text: "Device Files", link: "en/linux/devicefiles" },
{ text: "Permissions", link: "en/linux/permissions" },
{ text: "Software and Package Management", link: "en/linux/software" },
{ text: "The Shell", link: "en/linux/shell" },
{ text: "SSH", link: "en/linux/ssh"}
{ text: "Security and Privacy", link: "en/linux/securityprivacy" },
],

Usage: [{ text: "Gaming on Ultramarine", link: "en/usage/gaming" }],
Usage: [
{ text: "Gaming on Ultramarine", link: "en/usage/gaming" },
{ text: "Localization", link: "en/usage/l10n" },
],

"Release Notes": [{ text: "Errata", link: "en/release/errata" }],
// Chromebook: [
Expand Down Expand Up @@ -110,4 +127,66 @@ export const SIDEBAR: Sidebar = {
{ text: "Developing for Ultramarine", link: "de/release/errata" },
],
},
zh_hant: {
介紹: [{ text: "歡迎", link: "zh_hant/welcome" }],
社羣: [
{ text: "參與社羣", link: "zh_hant/community/community" },
{ text: "行為準則", link: "zh_hant/community/codeofconduct" },
],
安裝: [
{ text: "取得 Ultramarine", link: "zh_hant/installation/getting" },
{ text: "安裝過程", link: "zh_hant/installation/installation" },
// {
// text: "Installation with Readymade",
//link: "zh_hant/installation/readymade",
//},
{
text: "Raspberry Pi 安裝過程",
link: "zh_hant/installation/rpi",
},
{ text: "安裝之後…", link: "zh_hant/installation/postinstall" },
{
text: "進階安裝後步驟",
link: "zh_hant/installation/post-advanced",
},
],
貢獻: [
{ text: "貢獻指南", link: "zh_hant/contributing/contributorguide" },
{ text: "原碼貢獻", link: "zh_hant/contributing/hacking" },
],
硬件: [
{ text: "系統要求", link: "zh_hant/hardware/requirements" },
{ text: "Ultramarine Anywhere", link: "zh_hant/hardware/anywhere" },
{ text: "NVIDIA", link: "zh_hant/hardware/nvidia" },
{ text: "Microsoft Surface", link: "zh_hant/hardware/surface" },
{
text: "Broadcom and Realtek Networking",
link: "zh_hant/hardware/broadcom-realtek",
},
{ text: "BIOS Keys", link: "zh_hant/hardware/bioskeys" },
],
"關於 Linux": [
{ text: "何謂 Linux?", link: "zh_hant/linux/overview" },
{ text: "檔案系統", link: "zh_hant/linux/filesystem" },
{ text: "裝置檔案", link: "zh_hant/linux/devicefiles" },
{ text: "權限", link: "zh_hant/linux/permissions" },
{ text: "軟件及安裝包管理", link: "zh_hant/linux/software" },
{ text: "The Shell", link: "zh_hant/linux/shell" },
{ text: "安全及私隱", link: "zh_hant/linux/securityprivacy" },
],

用途: [
{ text: "電子遊戲", link: "zh_hant/usage/gaming" },
{ text: "本地化", link: "zh_hant/usage/l10n" },
],

發佈版本通知: [{ text: "勘誤表", link: "zh_hant/release/errata" }],

開發: [
{
text: "為 Ultramarine 開發",
link: "zh_hant/development/developing-for-ultramarine",
},
],
},
};
2 changes: 1 addition & 1 deletion src/content/docs/en/anywhere/android.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Alert from "../../../../components/Docs/Alert.astro";
page is subject to change
</Alert>

Android Devices are very common, and (most of the time) extremely customiseable. We do not have a target release or full plan at this time.
Android Devices are very common, and (most of the time) extremely customiseable. We do not have a target release or full plan at this time, but we will support in the (hopefully) near future.

## Implementation

Expand Down
6 changes: 5 additions & 1 deletion src/content/docs/en/anywhere/applesilicon.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,8 @@ import Alert from "../../../../components/Docs/Alert.astro";
page is subject to change
</Alert>

We plan to use the Asahi patches from upstream. This will happen sometime in the near future.
We plan to use the Asahi script/patches from upstream. This will happen sometime in the near future.

## Implementation

- Potential GUI installer (Readymade from inside macOS)
35 changes: 17 additions & 18 deletions src/content/docs/en/anywhere/chromebook.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ import Alert from "../../../../components/Docs/Alert.astro";
</Alert>

Chromebooks were an obvious target for Ultramarine Anywhere, despite being mostly
standard hardware, they have custom EC and strange firmware. We began development
in Ultramarine 39, and are preparing to launch midcycle.
standard hardware, they have custom EC and strange firmware.

Chromebook support in Ultramarine Linux is provided in partnership with the [Chrultrabook Project](https://chrultrabook.com).

Expand All @@ -27,9 +26,9 @@ Ultramarine Chromebook Edition uses a special bootloader called [Submarine](http

Under the hood, Submarine is an incredibly minimal Linux OS based on [u-root](https://github.com/u-root/u-root), it's only really usable for debug and booting a full distribution. Once Submarine is loaded, we use [LinuxBoot](https://www.linuxboot.org/) to boot a full copy of Ultramarine (and hopefully more distros in the future).

Now for the big question, how do we do this without modifying the firmware? We take advantage of the way Depthcharge (the ChromeOS firmware) works. We store Submarine in a 16MB partition on disk, this is normally used by ChromeOS to store a full ChromeOS Kernel and initramfs. Depthcharge doesn't actually check if the contents of the partition are a valid kernel, it just checks for a GPT Header and runs whatever code is found in the partition, in our case, Submarine.
Now for the big question, how do we do this without modifying the firmware? We take advantage of the way Depthcharge (the ChromeOS firmware) works. We store Submarine in a 16MiB partition on disk, this is normally used by ChromeOS to store a full ChromeOS Kernel and initramfs. Depthcharge doesn't actually check if the contents of the partition are a valid kernel, it just checks for a GPT Header and runs whatever code is found in the partition, in our case, Submarine.

By default, Depthcharge will only boot code with Google's signing keys, we get around this by enabling the built-in developer mode.
By default, Depthcharge will only boot code with Google's signing keys, we get around this by enabling the built-in ChromeOS developer mode.

To summarise, we boot a tiny Linux distribution (Submarine) and use it to launch Ultramarine's vmlinuz and initramfs using kexec.

Expand All @@ -43,7 +42,7 @@ We use WeirdTreeThing's [audio script](https://github.com/WeirdTreeThing/chromeb

### Default Partitions

On Chromebooks, we use f2fs (in lieu of Btrfs) and disable swap to extend the life of the EMMC found in many Chromebooks. We also create one 16MiB partition containing [Submarine](https://developer.fyralabs.com/submarine) at the start of the disk instead of `/boot/EFI`.
On Chromebooks, we use F2FS (in lieu of Btrfs) and disable swap to extend the life of the eMMC storage found in many Chromebooks. We also create one 16MiB partition containing [Submarine](https://developer.fyralabs.com/submarine) at the start of the disk instead of `/boot/EFI`.

### Keyboard Mapping

Expand Down Expand Up @@ -75,19 +74,19 @@ We use [keyd](https://github.com/rvaiya/keyd) to map keys on Chromebooks.

## Unsupported Devices

| Device | Reason |
| --------- | -------------------- |
| Mario | Firmware Limitations |
| Alex | Firmware Limitations |
| ZGB | Firmware Limitations |
| Stumpy | Firmware Limitations |
| Lumpy | Firmware Limitations |
| Parrot | Firmware Limitations |
| Butterfly | Firmware Limitations |
| Link | Firmware Limitations |
| Stout | Firmware Limitations |

These computers are from the first generation of Chromebooks, and use a different firmware than modern ones.
| Device | Reason |
| --------- | ----------------------------------------------------------------------------------------- |
| Mario | Firmware Limitations |
| Alex | Firmware Limitations |
| ZGB | Firmware Limitations |
| Stumpy | Boot Partition Size Limitation (This can be [Corebooted](https://docs.chrultrabook.com/)) |
| Lumpy | Boot Partition Size Limitation (This can be [Corebooted](https://docs.chrultrabook.com/)) |
| Parrot | Boot Partition Size Limitation (This can be [Corebooted](https://docs.chrultrabook.com/)) |
| Butterfly | Boot Partition Size Limitation (This can be [Corebooted](https://docs.chrultrabook.com/)) |
| Link | Boot Partition Size Limitation (This can be [Corebooted](https://docs.chrultrabook.com/)) |
| Stout | Boot Partition Size Limitation (This can be [Corebooted](https://docs.chrultrabook.com/)) |

These are among the first few generations of Chromebooks, and either use an unsupported proprietary firmware, or have firmware limitations which prevents booting a partition large enough to fit submarine (newer Chromebooks have larger size limitations).

## Installation

Expand Down
16 changes: 14 additions & 2 deletions src/content/docs/en/anywhere/enterprise.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,20 @@ description: "Data Centre, Enterprise, and HPC in the Ultramarine Anywhere Initi
import Alert from "../../../../components/Docs/Alert.astro";

<Alert type="info">
This device type is still in the **Wishlist Phase**. All information on this
This device type is still in the **Planning Phase**. All information on this
page is subject to change.
</Alert>

If you'd like to suggest a platform, drop us a line in [our chats](/en/community/community).
We plan on making server images, GUI and CLI. These images will be built for constant runtime, and include/exclude fitting packages for server usecases. If you'd like to suggest a platform, drop us a line in [our chats](/en/community/community).

## Implementation

- Refined OOTB cockpit excperience
- CLI only option
- Advanced installer features
- Advanced networking options
- Package suite more attuned to a server usecase
- Default filesystem changed to ZFS
- Potential improved RAID and non-RAID architecture implementation...
- Cluster support
- A whole lot more...
2 changes: 1 addition & 1 deletion src/content/docs/en/anywhere/ott.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ import Alert from "../../../../components/Docs/Alert.astro";

Smart TV boxes often run Android, which means we can use Halium to port Ultramarine to the unlockable ones.

This may be limited to FireOS devices as many of them are vulnerable to [mtk-su](https://xdaforums.com/t/amazing-temp-root-for-mediatek-armv8-2020-08-24.3922213/)
This may be limited to FireOS devices as many of them are vulnerable to [mtk-su](https://xdaforums.com/t/amazing-temp-root-for-mediatek-armv8-2020-08-24.3922213/). If you are knowledgable about Smart TV modding/running alternative operating systems, please reach out [here](/en/community/community).
2 changes: 1 addition & 1 deletion src/content/docs/en/anywhere/riscv.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ import Alert from "../../../../components/Docs/Alert.astro";
page is subject to change.
</Alert>

If you are a hardware vendor producing RISC-V devices or have a spare RISC-V device, please [reach out](mailto:[email protected]) if you'd like Ultramarine Support.
We plan to port to RISC-V architecture as soon as we can get the hardware. If you are a hardware vendor producing RISC-V devices or have a spare RISC-V device, please [reach out](mailto:[email protected]) if you'd like to support the Ultramarine RISC-V port.
70 changes: 70 additions & 0 deletions src/content/docs/en/anywhere/rpi.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
title: "Raspberry Pi (Anywhere)"
description: "Raspberry Pi in the Ultramarine Anywhere Initiative"
---

import Alert from "../../../../components/Docs/Alert.astro";

Raspberry Pi is a very popular series of SBCs. They are cheap, easy to get, run Linux well, and have a large ecosystem of expansion cards (Hats and Bonnets) and accessories.

Fedora has upstream support for the Pi 4, 400, and 3. Ultramarine Anywhere intends to extend support to the Zero 2 and 5.

## Raspberry Pi 5

<Alert type="info">
This device type is still in the **Planning Phase**. All information on this
page is subject to change.
</Alert>

The Raspberry Pi 5 is not currently supported in Fedora. We intend to package the official Raspberry Pi kernel (which should also provide a better experience on the other Pi models.)

## Raspberry Pi 4 and 400

The Raspberry Pi 4 and 400 have had support in Ultramarine Linux since UM39, and desktop images since UM40. We use the Fedora kernels and boot proccess.

### Notes

- RPi4B has a 1GB and 2GB model, we suggest against running a desktop environment on these (Xfce may be alright.)
- RPi400 does not have support for WiFi in Ultramarine, this is an upstream issue.
- The Pi 4 series has native USB boot support. Your experience may be better with a fast USB Drive or SSD connected through an adapter. See [this article](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#usb-mass-storage-boot) for more info.
- If using a microSD card, we reccomend using a Class 10 microSD card, your experience will be signifcantly better than lower classes.
- If using a USB drive, ensure it's USB 3.0 or newer, 2.0 will be a signifcantly worse experience than a microSD.
- Your storage device will need to be larger than 9GB (the image is 8.59GB) We suggest 16GB so you have space for software.

### Installing

1. Install [Raspberry Pi Imager](https://flathub.org/apps/org.raspberrypi.rpi-imager).
2. Simply select "Other General Purpose OS" then your Ultramarine Edition of choice.
3. Insert the storage device into your Pi and boot up! The root filesystem will automatically be expanded.
4. You will be prompted to set up a user, do this and you're done!.

## Raspberry Pi 3

The Raspberry Pi 3 has had support in Ultramarine Linux since UM39, and desktop images since UM40. We use the Fedora kernels and boot proccess.

### Notes

- RPi3B has only 1GB of RAM, and the 3A only has 512MB, we suggest against running a desktop environment (Xfce may be alright.)
- Your microSD card will need to be larger than 9GB (the image is 8.59GB) We suggest 16GB so you have space for software.
- We reccomend using a Class 10 microSD card, your experience will be signifcantly better than lower classes.

### Installing

1. Grab any aarch64 [Raw Image](https://images.fyralabs.com/images/ultramarine/40/) from our downloads page.
2. Flash it to your microSD card with [balenaEtcher](https://etcher.io) or [Raspberry Pi Imager](https://flathub.org/apps/org.raspberrypi.rpi-imager)
3. Insert the storage device into your Pi and boot up! The root filesystem will automatically be expanded.
4. You will be prompted to set up a user, do this and you're done!.

## Raspberry Pi Zero 2

<Alert type="info">
This device type is still in the **Planning Phase**. All information on this
page is subject to change.
</Alert>

## Raspberry Pi 1, 2, and Zero

<Alert type="info">
These devices are **Not Supported** due to 32bit CPUs. We include them in this
page to avoid questions.
</Alert>
2 changes: 1 addition & 1 deletion src/content/docs/en/anywhere/steamdeck.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ import Alert from "../../../../components/Docs/Alert.astro";
page is subject to change.
</Alert>

Would be fun to port UM to the Steam Deck, maybe a custom UI is in order...
We plan to make Steam Deck images, as well as other handhelds and HTPCs. Work will begin once we have the hardware needed. Maybe a custom UI is in order...
21 changes: 21 additions & 0 deletions src/content/docs/en/anywhere/thin.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
title: "Thin Clients (Anywhere)"
description: " Ultramarine Anywhere Initiative"
---

import Alert from "../../../../components/Docs/Alert.astro";

<Alert type="info">
This device type is still in the **Wishlist Phase**. All information on this
page is subject to change.
</Alert>

Thin client images would be fun, and frankly pretty easy.

## Implementation

Very minimal environment with only required packages. OOTB connection protocols (ICA, RDP/VNC, SNMP...) and easy to use installer with connection options built in.

Minimal login screen with an option for branding, might include device managment software.

Tools and encouragment for enthusiasts.
Loading

0 comments on commit 9fae3b4

Please sign in to comment.