Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
初代プレステでuCLinuxその1 Linuxのinitで「Hello World」
Search
kazueda
February 08, 2025
90
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
初代プレステでuCLinuxその1 Linuxのinitで「Hello World」
kazueda
February 08, 2025
More Decks by kazueda
See All by kazueda
16ビットCPU用FUZIXを実機で動かす キー入力編
kazueda
0
11
初代プレステでuCLinuxその2「rootfsが公開されました」
kazueda
0
57
Raspberry pi 400をUSBキーボードとして使う
kazueda
0
370
「東海道らぐ」のブースで「USBガジェット三昧」の展示
kazueda
0
43
Raspberry Pi Pico WでRNDIS-Wifiブリッジ
kazueda
0
110
Raspberry pi pico2の亜種で Risc-V用Linux-nommuを起動する話
kazueda
1
540
PythonのソースファイルをLLMで修正した話
kazueda
0
130
M5Stackサーバーを使って初代プレイステーションでuClinuxのカーネルを起動
kazueda
0
170
ChatGPTを使ってWebmsx上でFuzix
kazueda
0
120
Featured
See All Featured
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
220
A Modern Web Designer's Workflow
chriscoyier
698
190k
WENDY [Excerpt]
tessaabrams
11
38k
Facilitating Awesome Meetings
lara
57
7k
New Earth Scene 8
popppiees
3
2.4k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Designing Experiences People Love
moore
143
24k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Transcript
初代プレステでuCLinuxその1 Linuxのinitで「Hello World」 小江戸らぐ10月のオフな集まり(第271回) 2025. 2. 8 1 kazueda か
ず え だ
PlayStation(プレイステーション、略称: PS, PS1) • ソニー・コンピュータエンタテインメント(略: SCE)が 1994年12月3日に発売した家庭用ゲーム機 • CPU:MIPS R3000A
ベース • 32ビット RISCプロセッサ (R3051) • メインメモリ: 2 MB EDO DRAM 2 https://ja.wikipedia.org/wiki/PlayStation_(%E3%82%B2%E3%83%BC%E3%83%A0%E6%A9%9F)
OSC2025大阪の展示 3 • M5Stack用のプログラ ムは、LLMで作成 • 初代プレステ側では unirom8というユー ティリティを起動 •
M5Stackでボタン操作 して、ファイル転送 • Kernelの起動に成功
RUnix on PlayStation 1 • MIPS-NOMMUなので、uClinux 2.4.x kernel • RS232
SIO経由のシリアルコンソール • プレイステーションのGPU経由の仮想コンソール • 保存メディアとしてマルチプルメモリーカード • SL811を使って、USBキーボードやマウスを接続 • 上記の環境が構築されるらしい。。。 4 https://en.wikipedia.org/wiki/PSXLinux
RUnix on PlayStation 1 • MIPS-NOMMUなので、uClinux 2.4.x kernel • RS232
SIO経由のシリアルコンソール • プレイステーションのGPU経由の仮想コンソール • 保存メディアとしてマルチプルメモリーカード • SL811を使って、USBキーボードやマウスを接続 • 上記の環境が構築されるらしい。。。 5 https://en.wikipedia.org/wiki/PSXLinux • 1枚のメモリーカードの容量:112 kB (8 kB x 14) • 複数のカードを切り替えて使用? • カードへの書き込みフォーマットは? <-ブロックデバイスとして利用?
RUnix on PlayStation 1 • MIPS-NOMMUなので、uClinux 2.4.x kernel • RS232
SIO経由のシリアルコンソール • プレイステーションのGPU経由の仮想コンソール • 保存メディアとしてマルチプルメモリーカード • SL811を使って、USBキーボードやマウスを接続 • 上記の環境が構築されるらしい。。。 6 https://en.wikipedia.org/wiki/PSXLinux • 1枚のメモリーカードの容量:112 kB (8 kB x 14) • 複数のカードを切り替えて使用? • カードへの書き込みフォーマットは? <-ブロックデバイスとして利用? • カード上のinitファイルを読み込めるようにする。 <-ファイル名「init」のHello Wolrdを作成し、 「Hello World」表示後にKernel panicを。
進め方 7 1. Qemu-x86_64上で、initの「Hello World」 2. Qemu-system-mipsel上で、initの「Hello World」 3. 初代プレステのエミュレータ上で、
initの「Hello World」 4. 初代プレステ本体上で、 initの「Hello World」 5. Rootfsの作成 6. ログインプロンプトの表示
Qemu-x86_64上で、initの「Hello World」 1. Linuxカーネルのソースからのビルド git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git 2. Busyboxのビルド git://github.com/mirror/busybox.git 3. Linuxの起動確認
4. Linuxのinitファイルの入れ替え 5. 「Hello, Kernel!」表示後のカーネルパニック観察 8 https://medium.com/@chienhaotan/compiling-and-running-a-minimal-kernel-with-busybox-bfc45a991017
「Hello world」の後のKernel panic 9
「Hello world」の後のKernel panic 10
Mipsel用「Hello World」 • MIPS32ビット、リトルエンディアン 1. クロスコンパイラの準備 2. Qemu-mipselでの動作確認 11 https://noobient.com/2020/12/22/mips-cross-compilation-crash-course/#Toolchain
Mipsel用「Hello World」 • MIPS32ビット、リトルエンディアン 1. クロスコンパイラの準備 $ sudo apt -y
install gcc-mipsel-linux-gnu ¥ g++-mipsel-linux-gnu qemu qemu-user 2. Qemu-mipselでの動作確認 $ mipsel-linux-gnu-gcc -static hello.c -o hello $ qemu-mipsel hello 12 https://noobient.com/2020/12/22/mips-cross-compilation-crash-course/#Toolchain
Mipsel用「Hello World」 • MIPS32ビット、リトルエンディアン 1. クロスコンパイラの準備 $ sudo apt -y
install gcc-mipsel-linux-gnu ¥ g++-mipsel-linux-gnu qemu qemu-user 2. Qemu-mipselでの動作確認 $ mipsel-linux-gnu-gcc -static hello.c -o hello $ qemu-mipsel hello 13 https://noobient.com/2020/12/22/mips-cross-compilation-crash-course/#Toolchain
Mipsel用「Hello World」 • MIPS32ビット、リトルエンディアン 1. クロスコンパイラの準備 $ sudo apt -y
install gcc-mipsel-linux-gnu ¥ g++-mipsel-linux-gnu qemu qemu-user 2. Qemu-mipselでの動作確認 $ mipsel-linux-gnu-gcc -static hello.c -o hello $ qemu-mipsel hello 14 https://noobient.com/2020/12/22/mips-cross-compilation-crash-course/#Toolchain
Mipsel用「Hello World」 • MIPS32ビット、リトルエンディアン 1. クロスコンパイラの準備 $ sudo apt -y
install gcc-mipsel-linux-gnu ¥ g++-mipsel-linux-gnu qemu qemu-user 2. Qemu-mipselでの動作確認 $ mipsel-linux-gnu-gcc -static hello.c -o hello $ qemu-mipsel hello 15 https://noobient.com/2020/12/22/mips-cross-compilation-crash-course/#Toolchain
まとめ • Qemu-x86_64上で、initの「Hello World」を表示 • Qemu-system-mipsel上で、initの「Hello World」 • 初代プレステのエミュレータ上で、 initの「Hello
World」 • 初代プレステ本体上で、 initの「Hello World」 16 今後の展開 おわり