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
110
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を実機で動かす「X68000でrootfsマウント編」
kazueda
1
8
16ビットCPU用FUZIXを実機で動かす USBキーボード接続編
kazueda
0
23
16ビットCPU用FUZIXを実機で動かす キー入力編
kazueda
0
26
初代プレステでuCLinuxその2「rootfsが公開されました」
kazueda
0
67
Raspberry pi 400をUSBキーボードとして使う
kazueda
0
460
「東海道らぐ」のブースで「USBガジェット三昧」の展示
kazueda
0
55
Raspberry Pi Pico WでRNDIS-Wifiブリッジ
kazueda
0
130
Raspberry pi pico2の亜種で Risc-V用Linux-nommuを起動する話
kazueda
1
610
PythonのソースファイルをLLMで修正した話
kazueda
0
130
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.5k
Evolving SEO for Evolving Search Engines
ryanjones
0
260
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
450
A better future with KSS
kneath
240
18k
The Language of Interfaces
destraynor
162
27k
Code Reviewing Like a Champion
maltzj
528
40k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
470
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
So, you think you're a good person
axbom
PRO
2
2.1k
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 今後の展開 おわり