v0.1.0: Initial SamiOS archiso profile

- Basic archiso profile with CLI-only system
- Custom 'samios' CLI tool for system management
- BIOS (syslinux) and UEFI (grub) boot support
- System configuration (hostname, locale, network)
- Automated script for first boot
- Mirror selection utility
- Documentation (README, installation guide, roadmap)
- Font policy: excludes fonts with '7777' in name

Next: automated installer, desktop environment, testing
This commit is contained in:
Sami Ahmed
2026-08-11 01:12:07 -07:00
commit 970177482b
23 changed files with 613 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
# SamiOS - A Custom Arch Linux Distribution
## Overview
SamiOS is a custom Linux distribution based on Arch Linux, designed as a Windows replacement for personal use.
## Features
- Rolling release (Arch-based)
- Custom CLI tool (`samios`) for system management
- Automated installation scripts
- Custom branding and configuration
- Font policy: excludes fonts with "7777" in the name
## Building from Source
### Prerequisites
```bash
# On Arch Linux
sudo pacman -S archiso git
```
### Clone and Build
```bash
git clone https://git.sami/sami7777/samios.git
cd samios/packaging/archiso
sudo ./build.sh
```
## Installation
### From ISO
1. Boot from the generated ISO
2. Run the automated installer:
```bash
samios install
```
### Manual Installation
See `docs/installation.md` for detailed instructions.
## CLI Tool
The `samios` command provides system management:
```bash
samios status # Show system status
samios update # Update system
samios install # Install packages
samios fonts # Manage fonts
samios help # Show all commands
```
## Font Policy
SamiOS excludes any fonts with "7777" in the filename as these are personal branding fonts.
## Development
This project is under active development. See `docs/roadmap.md` for planned features.
## License
TBD
+100
View File
@@ -0,0 +1,100 @@
# SamiOS Installation Guide
## Prerequisites
- SamiOS ISO (built from source or downloaded)
- USB drive (2GB+) or CD/DVD
- Target machine with at least 2GB RAM
- 20GB+ storage space
## Creating Bootable Media
### Linux
```bash
# Find your USB device
lsblk
# Write ISO to USB (replace /dev/sdX with your device)
sudo dd if=samios-*.iso of=/dev/sdX bs=4M status=progress oflag=sync
```
### Windows
Use Rufus or Etcher to write the ISO to USB.
## Installation Process
### 1. Boot from Media
- Insert USB/CD and boot the target machine
- Select "SamiOS Live" from the boot menu
### 2. Connect to Network (if needed)
```bash
# WiFi
iwctl
[iwd]# device list
[iwd]# station wlan0 scan
[iwd]# station wlan0 get-networks
[iwd]# station wlan0 connect YOUR_SSID
[iwd]# exit
# Ethernet (auto-connects)
```
### 3. Run Installer
```bash
samios install
```
The installer will:
- Partition the disk
- Install base system
- Configure bootloader
- Set up user account
### 4. Reboot
```bash
reboot
```
Remove installation media and boot into SamiOS.
## Post-Installation
### Update System
```bash
samios update
```
### Install Additional Packages
```bash
samios install firefox
samios install vim
```
### Configure System
```bash
samios status
samios fonts
```
## Troubleshooting
### Boot Issues
- Try "Copy to RAM" option from boot menu
- Check BIOS/UEFI settings (Secure Boot may need to be disabled)
### Network Issues
```bash
# Check network status
ip addr
ping -c 3 archlinux.org
# Restart NetworkManager
systemctl restart NetworkManager
```
### Installation Fails
- Check disk space: `df -h`
- Check logs: `journalctl -xe`
## Support
For issues and questions, please open an issue on the SamiOS repository.
+67
View File
@@ -0,0 +1,67 @@
# SamiOS Roadmap
## Phase 1: Foundation (Current)
- [x] Basic archiso profile
- [x] CLI tool (`samios`)
- [x] Boot configuration (BIOS + UEFI)
- [x] System configuration files
- [ ] Automated installer
- [ ] Font management system
- [ ] Build automation
## Phase 2: Desktop Environment
- [ ] KDE Plasma integration
- [ ] Display manager (SDDM)
- [ ] Graphics drivers (NVIDIA/AMD/Intel)
- [ ] Audio setup (PipeWire)
- [ ] Network management GUI
- [ ] System settings GUI
## Phase 3: Applications
- [ ] Web browser (Firefox/Chromium)
- [ ] File manager (Dolphin)
- [ ] Terminal emulator (Konsole)
- [ ] Text editor (Kate)
- [ ] Office suite (LibreOffice)
- [ ] Media player (VLC)
- [ ] Image viewer (Gwenview)
## Phase 4: System Tools
- [ ] Package manager GUI (Pamac)
- [ ] System monitor
- [ ] Backup tool
- [ ] Firewall configuration
- [ ] User management GUI
## Phase 5: Polish
- [ ] Custom themes
- [ ] SamiOS branding
- [ ] Documentation
- [ ] Testing suite
- [ ] Release automation
## Phase 6: Advanced Features
- [ ] Dual-boot setup tool
- [ ] System recovery tools
- [ ] Snapshot/rollback (Btrfs)
- [ ] Container support (Docker/Podman)
- [ ] Virtual machine support
## Long-term Goals
- [ ] Custom kernel with optimizations
- [ ] SamiOS-specific packages
- [ ] Community repository
- [ ] Hardware certification
- [ ] Enterprise features
## Timeline
- Phase 1: Q4 2024
- Phase 2: Q1 2025
- Phase 3: Q2 2025
- Phase 4-6: Ongoing
## Notes
- Prioritize stability over features
- Keep system lightweight
- Maintain Arch compatibility
- Focus on daily-driver usability
+26
View File
@@ -0,0 +1,26 @@
# SamiOS Build System
## Overview
This directory contains the archiso profile for building SamiOS ISO images.
## Structure
- `profiledef.sh` - ISO profile definition
- `packages.x86_64` - Package list for x86_64 architecture
- `build.sh` - Build script
- `airootfs/` - Files to overlay on the live system
- `syslinux/` - Syslinux bootloader configuration
- `grub/` - GRUB bootloader configuration
- `efiboot/` - EFI boot configuration
## Building
```bash
./build.sh
```
## Requirements
- Arch Linux (or compatible)
- archiso package
- Root privileges
## Output
ISO files are generated in the `out/` directory.
+2
View File
@@ -0,0 +1,2 @@
# SamiOS fstab (live system uses tmpfs)
# tmpfs /tmp tmpfs nodev,nosuid,mode=1777 0 0
+2
View File
@@ -0,0 +1,2 @@
# SamiOS hostname
samios
+4
View File
@@ -0,0 +1,4 @@
# SamiOS /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 samios.localdomain samios
+2
View File
@@ -0,0 +1,2 @@
# SamiOS issue (login banner)
SamiOS \r (\l)
@@ -0,0 +1,2 @@
# SamiOS locale
LANG=en_US.UTF-8
+4
View File
@@ -0,0 +1,4 @@
# SamiOS motd
Welcome to SamiOS!
Type 'samios help' for available commands.
+2
View File
@@ -0,0 +1,2 @@
# SamiOS root password (empty for live system, user sets during install)
root::14871::::::
@@ -0,0 +1,2 @@
# SamiOS keymap
KEYMAP=us
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
# SamiOS automated script - runs on first boot
# Set up locale
locale-gen
localectl set-locale LANG=en_US.UTF-8
# Enable NetworkManager
systemctl enable NetworkManager
# Show welcome message
echo "SamiOS is ready!"
echo "Type 'samios help' to get started"
+38
View File
@@ -0,0 +1,38 @@
#!/bin/bash
# SamiOS mirror selection script
if [ -t 0 ]; then
echo "Select a mirror country:"
select country in "United States" "United Kingdom" "Germany" "Japan" "Australia" "All"; do
case $country in
"United States" )
reflector --country "United States" --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
break
;;
"United Kingdom" )
reflector --country "United Kingdom" --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
break
;;
"Germany" )
reflector --country "Germany" --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
break
;;
"Japan" )
reflector --country "Japan" --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
break
;;
"Australia" )
reflector --country "Australia" --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
break
;;
"All" )
reflector --latest 20 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
break
;;
esac
done
echo "Mirror list updated!"
else
echo "This script requires an interactive terminal"
exit 1
fi
+140
View File
@@ -0,0 +1,140 @@
#!/bin/bash
# SamiOS CLI - System management tool
set -e
VERSION="0.1.0"
CONFIG_DIR="/etc/samios"
LOG_FILE="/var/log/samios.log"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE"
}
cmd_help() {
cat << EOF
SamiOS CLI v${VERSION}
Usage: samios <command> [options]
Commands:
version Show version
status Show system status
update Update system packages
install <pkg> Install a package
remove <pkg> Remove a package
services List services
fonts Manage fonts
help Show this help
Examples:
samios version
samios status
samios update
samios install firefox
EOF
}
cmd_version() {
echo "SamiOS v${VERSION}"
echo "Kernel: $(uname -r)"
echo "Architecture: $(uname -m)"
}
cmd_status() {
echo "=== SamiOS System Status ==="
echo "Version: ${VERSION}"
echo "Hostname: $(hostname)"
echo "Kernel: $(uname -r)"
echo "Uptime: $(uptime -p)"
echo
echo "=== Disk Usage ==="
df -h / | tail -n 1
echo
echo "=== Memory ==="
free -h | grep "Mem:"
echo
echo "=== Network ==="
ip -br addr show | grep -v "lo"
}
cmd_update() {
log "Starting system update"
pacman -Syu --noconfirm
log "Update complete"
}
cmd_install() {
if [ -z "$1" ]; then
echo "Usage: samios install <package>"
exit 1
fi
log "Installing $1"
pacman -S --noconfirm "$1"
}
cmd_remove() {
if [ -z "$1" ]; then
echo "Usage: samios remove <package>"
exit 1
fi
log "Removing $1"
pacman -R --noconfirm "$1"
}
cmd_services() {
systemctl list-units --type=service --state=running
}
cmd_fonts() {
echo "=== Installed Fonts ==="
fc-list | wc -l
echo "fonts installed"
echo
echo "=== Font Policy ==="
echo "Excluded: fonts with '7777' in name (personal branding)"
echo
# Check for forbidden fonts
if fc-list | grep -i "7777" > /dev/null; then
echo "WARNING: Found fonts with '7777' in name:"
fc-list | grep -i "7777"
else
echo "✓ No forbidden fonts detected"
fi
}
# Main command dispatcher
case "${1:-}" in
version)
cmd_version
;;
status)
cmd_status
;;
update)
cmd_update
;;
install)
shift
cmd_install "$@"
;;
remove)
shift
cmd_remove "$@"
;;
services)
cmd_services
;;
fonts)
cmd_fonts
;;
help|--help|-h|"")
cmd_help
;;
*)
echo "Unknown command: $1"
echo "Run 'samios help' for usage"
exit 1
;;
esac
+23
View File
@@ -0,0 +1,23 @@
#!/bin/bash
# SamiOS ISO build script
set -e
PROFILE_DIR="$(dirname "$0")"
WORK_DIR="${WORK_DIR:-/tmp/samios-build}"
OUT_DIR="${OUT_DIR:-$PROFILE_DIR/out}"
echo "Building SamiOS ISO..."
echo "Profile: $PROFILE_DIR"
echo "Work directory: $WORK_DIR"
echo "Output directory: $OUT_DIR"
# Clean previous build
rm -rf "$WORK_DIR"
mkdir -p "$WORK_DIR" "$OUT_DIR"
# Build the ISO using archiso
mkarchiso -v -w "$WORK_DIR" -o "$OUT_DIR" "$PROFILE_DIR"
echo "Build complete!"
echo "ISO location: $OUT_DIR/samios-*.iso"
@@ -0,0 +1,4 @@
title SamiOS Live
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%
@@ -0,0 +1,3 @@
default samios.conf
timeout 5
editor 0
+14
View File
@@ -0,0 +1,14 @@
# SamiOS GRUB configuration
set default=0
set timeout=5
menuentry "SamiOS Live" {
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
}
menuentry "SamiOS Live (Copy to RAM)" {
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
}
+42
View File
@@ -0,0 +1,42 @@
# SamiOS minimal CLI packages
# Core system
base
base-devel
linux
linux-firmware
# Bootloader
grub
efibootmgr
# Essential utilities
bash
coreutils
filesystem
util-linux
shadow
sudo
# Networking
networkmanager
dhclient
openssh
curl
wget
# Filesystem tools
dosfstools
e2fsprogs
btrfs-progs
gptfdisk
# System tools
systemd-sysvcompat
arch-install-scripts
pacman-contrib
# SamiOS branding
samios-branding
# Excluded: fonts with 7777 in name (personal branding)
# Excluded: desktop environment (CLI-only for now)
+18
View File
@@ -0,0 +1,18 @@
# SamiOS pacman configuration for ISO build
# Based on Arch Linux pacman.conf
[options]
HoldPkg = pacman glibc
Architecture = auto
CheckSpace
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[multilib]
Include = /etc/pacman.d/mirrorlist
+28
View File
@@ -0,0 +1,28 @@
#!/usr/bin/env bash
# shellcheck disable=SC2034
# SamiOS archiso profile definition
# Minimal CLI-based Arch Linux with SamiOS branding
iso_name="samios"
iso_label="SAMIOS_$(date +%Y%m)"
iso_publisher="Sami Ahmed <sami@sami-ahmed.net>"
iso_application="SamiOS Live/Rescue CD"
iso_version="0.1.0"
install_dir="arch"
buildmodes=('iso')
bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito' 'uefi-x64.grub.esp' 'uefi-x64.grub.eltorito')
arch="x86_64"
pacman_conf="pacman.conf"
airootfs_image_type="squashfs"
airootfs_image_tool_options=('-comp' 'xz' '-Xbcj' 'x86' '-b' '1M' '-Xdict-size' '1M')
bootstrap_tarball_compression=('zstd' '-c' '-T0' '--ultra' '-20')
file_permissions=(
["/etc/shadow"]="0:0:400"
["/etc/gshadow"]="0:0:400"
["/root"]="0:0:750"
["/root/.automated_script.sh"]="0:0:755"
["/root/.gnupg"]="0:0:700"
["/usr/local/bin/choose-mirror"]="0:0:755"
["/usr/local/bin/samios"]="0:0:755"
)
+20
View File
@@ -0,0 +1,20 @@
DEFAULT samios
SERIAL 0 115200
LABEL samios
TEXT HELP
Boot SamiOS live system
ENDTEXT
MENU LABEL SamiOS Live
LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux
INITRD /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%
LABEL samios
TEXT HELP
Boot SamiOS live system with copy-to-RAM
ENDTEXT
MENU LABEL SamiOS Live (Copy to RAM)
LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux
INITRD /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram