post
This commit is contained in:
81
my-blog/content/posts/2025-07-04-aios.md
Normal file
81
my-blog/content/posts/2025-07-04-aios.md
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
---
|
||||||
|
title: "aiosを作り直した"
|
||||||
|
slug: "aios"
|
||||||
|
date: 2025-07-05
|
||||||
|
tags: ["os"]
|
||||||
|
draft: false
|
||||||
|
---
|
||||||
|
|
||||||
|
`aios`とは自作osのことで、archlinuxをベースにしていました。
|
||||||
|
|
||||||
|
```sh
|
||||||
|
#!/bin/zsh
|
||||||
|
git clone https://gitlab.archlinux.org/archlinux/archiso
|
||||||
|
cp -rf ./cfg/profiledef.sh ./archiso/configs/releng/profiledef.sh
|
||||||
|
cp -rf ./cfg/profiledef.sh ./archiso/configs/baseline/profiledef.sh
|
||||||
|
cp -rf ./scpt/mkarchiso ./archiso/archiso/mkarchiso
|
||||||
|
./archiso/archiso/mkarchiso -v -o ./ ./archiso/configs/releng/
|
||||||
|
tar xf aios-bootstrap*.tar.gz
|
||||||
|
mkdir -p root.x86_64/var/lib/machines/arch
|
||||||
|
pacstrap -c root.x86_64/var/lib/machines/arch base
|
||||||
|
echo -e 'Server = http://mirrors.cat.net/archlinux/$repo/os/$arch
|
||||||
|
Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch' >> ./root.x86_64/etc/pacman.d/mirrorlist
|
||||||
|
sed -i s/CheckSpace/#CheckeSpace/ root.x86_64/etc/pacman.conf
|
||||||
|
arch-chroot root.x86_64 /bin/sh -c 'pacman-key --init'
|
||||||
|
arch-chroot root.x86_64 /bin/sh -c 'pacman-key --populate archlinux'
|
||||||
|
arch-chroot root.x86_64 /bin/sh -c 'pacman -Syu --noconfirm base base-devel linux'
|
||||||
|
tar -zcvf aios-bootstrap.tar.gz root.x86_64/
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh:./cfg/profiledef.sh
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
|
||||||
|
iso_name="aios"
|
||||||
|
iso_label="AI_$(date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y%m)"
|
||||||
|
iso_publisher="ai os <https://git.syui.ai/ai/os>"
|
||||||
|
iso_application="ai os Live/Rescue DVD"
|
||||||
|
iso_version="$(date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y.%m.%d)"
|
||||||
|
install_dir="ai"
|
||||||
|
#buildmodes=('iso')
|
||||||
|
buildmodes=('bootstrap')
|
||||||
|
bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito'
|
||||||
|
'uefi-ia32.grub.esp' 'uefi-x64.grub.esp'
|
||||||
|
'uefi-ia32.grub.eltorito' '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')
|
||||||
|
file_permissions=(
|
||||||
|
["/etc/shadow"]="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/Installation_guide"]="0:0:755"
|
||||||
|
["/usr/local/bin/livecd-sound"]="0:0:755"
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
## rust + unix
|
||||||
|
|
||||||
|
一からosを作りたいと思っていたので、rustでunixのosを作り始めました。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
名前は`Aios`にして、今回は`syui`のprojectとして作り始めました。
|
||||||
|
|
||||||
|
後に`ai/os`と統合するかもしれません。
|
||||||
|
|
||||||
|
1. [https://git.syui.ai/ai/os](https://git.syui.ai/ai/os)
|
||||||
|
2. [https://git.syui.ai/syui/aios](https://git.syui.ai/syui/aios)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
#!/bin/zsh
|
||||||
|
d=${0:a:h:h}
|
||||||
|
cd $d/kernel
|
||||||
|
cargo bootimage --release
|
||||||
|
BOOT_IMAGE="../target/x86_64-unknown-none/release/bootimage-aios-kernel.bin"
|
||||||
|
qemu-system-x86_64 -drive format=raw,file="$BOOT_IMAGE"
|
||||||
|
```
|
||||||
|
|
BIN
my-blog/static/img/aios_v0201.png
Normal file
BIN
my-blog/static/img/aios_v0201.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 263 KiB |
Reference in New Issue
Block a user