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
OS Developer として Rustを使ってみる/using-rust-for-os-d...
Search
kotetu (kotetuco)
November 21, 2016
Programming
0
630
OS Developer として Rustを使ってみる/using-rust-for-os-developer
Rust入門者の集い (2016.11.21)でLT発表を行った際に使った資料です。
kotetu (kotetuco)
November 21, 2016
Tweet
Share
More Decks by kotetu (kotetuco)
See All by kotetu (kotetuco)
STORES決済iOSアプリの決済端末2対応リリースフロー / ebisu.mobile-12-kotetu
kotetuco
0
21
CryptoKit ではじめる暗号技術 - メッセージ認証コード編 / iosdcjapan-2025-cryptokit
kotetuco
1
240
認証体験向上のために passkeys (パスキー) に対応する 〜 メリット・対応方法について / iosdcjapan-2023-passkeys
kotetuco
3
2.2k
着信時氏名表示させたいエンジニア vs 簡単には着信時氏名表示できない電話番号 (iOS13対応版) / iosdcjapan-2020-lt-calldirectory
kotetuco
2
1.4k
UIImage and CIImage for Image Processing
kotetuco
9
7k
Metal for data-parallel computations
kotetuco
1
1.8k
Preparing for Swift 5 Ownership
kotetuco
0
5k
プログラミング言語RustとOS開発/rust-os-develop-introduction
kotetuco
0
1.7k
Sansan iOSアプリと R&Dとの共同研究について/sansan-ios-and-reearch
kotetuco
0
650
Other Decks in Programming
See All in Programming
nilとは何か 〜interfaceの構造とnil!=nilから理解する〜
kuro_kurorrr
3
1.6k
エージェント開発初心者の僕がエージェントを作った話と今後やりたいこと
thasu0123
0
230
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
1
140
Beyond the Basics: Signal Forms
manfredsteyer
PRO
0
110
Claude Codeセッション現状確認 2026福岡 / fukuoka-aicoding-00-beacon
monochromegane
3
380
朝日新聞のデジタル版を支えるGoバックエンド ー価値ある情報をいち早く確実にお届けするために
junkiishida
1
330
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
330
CSC307 Lecture 15
javiergs
PRO
0
210
ご飯食べながらエージェントが開発できる。そう、Agentic Engineeringならね。
yokomachi
1
280
AWS Infrastructure as Code の新機能 2025 総まとめ 〜SA 4人による怒涛のデモ祭り〜
konokenj
10
3.1k
TROCCOで実現するkintone+BigQueryによるオペレーション改善
ssxota
0
120
PJのドキュメントを全部Git管理にしたら、一番喜んだのはAIだった
nanaism
0
230
Featured
See All Featured
Making Projects Easy
brettharned
120
6.6k
Code Review Best Practice
trishagee
74
20k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
How GitHub (no longer) Works
holman
316
140k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
KATA
mclloyd
PRO
35
15k
Typedesign – Prime Four
hannesfritz
42
3k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
200
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
63
53k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
80
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
110
Transcript
OS Developer ͱͯ͠ RustΛͬͯΈΔ Rustೖऀͷू͍ (2016.11.21) @kotetu
܀ࢁ ప (@kotetu) • Github : kotetuco • SansanגࣜձࣾͰiOSΞϓϦ࡞ͬͯ·͢ •
໊ཧΞϓϦͷձࣾ • ʮͦΕɺૣ͘ݴͬͯΑ͒ʯͷCMͰ͓ͳ͡Έ
͔͜͜Β iOS OS ͷͰ͢ɻ
ࣗ࡞OS • ֶੜ࣌ʹগ͍ͬͯͨ͠ • ʮ30ͰͰ͖ΔOSࣗ࡞ೖʯ(໊ஶ) Ͱݴ͏ͱ 23͘Β͍·Ͱ
Rustͱͷग़ձ͍ • OS͕ॻ͚Δݴޠ͕͋Δͧ • SwiftͬΆ͍ॻ͖ํ͕ग़དྷΔͬΆ͍ͧɹɹɹɹ (ྺ࢙తʹRustͷํ͕ઌͰ͚͢Ͳɾɾ) • ੲॻ͍͍ͯͨOSΛRustͰॻ͖ͯ͠ΈΔʁ
ͱ͍͏Θ͚Ͱɺ࢝ΊͯΈͨ • ructiss • https://github.com/kotetuco/ructiss • OSͱͯ͠·ͩԿͰ͖͍ͯͳ͍ (ٽ • Rust΄ͱΜͲॻ͍͍ͯͳ͍
(ٽ
ը໘ΛനృΓͰ͖ͳ͍ (ٽ
։ൃڥʁ
DockerfileίϯςφԽ͠·ͨ͠ • rust-baremetal • https://github.com/kotetuco/rust- baremetal • ΤϛϡϨʔλʹ͍ͭͯผ్QEMUͳͲΛ ༻ҙ͍ͯͩ͘͠͞
RustͰOSΛॻ͘ϝϦοτ(1/2) • ҆શੑɺϝϞϦཧ • ඪ४͕Πϛϡʔλϒϧͳͷྑ͍ͳ • “unsafe”ϒϩοΫͰΞϯηʔϑίʔυΛݶఆ • ιϑτΣΞͷ҆શੑ͕ٻΊΒΕΔʹ ͑ΔͷͰʁ
RustͰOSΛॻ͘ϝϦοτ(2/2) • OS meets ؔܕݴޠ (ͬͯΈ͍ͨ) • OS meets Reactive
Programing ɹɹɹɹ (RxRustͬͯΈ͍ͨ) • Cargo(ϏϧυɾύοέʔδϚωʔδϟ)ͷଘࡏ • C/C++ͱͷI/F
RustͰOSΛॻ͘ࡍͷཹҙ • NightlyϏϧυͰ͔͠։ൃͰ͖ͳ͍ • IntelΞʔΩςΫνϟҎ֎ͷϓϥοτϑΥʔϜ ʹ͍֤ͭͯίϛϡχςΟʹґଘ
ϓϥοτϑΥʔϜαϙʔτঢ়گ (Getting StartedΑΓ) • 1ڃ(Ϗϧυग़དྷ͔ͭಈ͘͜ͱΛอূ͢Δ) • IntelΞʔΩςΫνϟ(32/64bit, Win/Mac/Linux) • ARMܥAndroid,
iOSͳͲ3ڃ (αϙʔτର ͕ͩɺެࣜͰมߋཧߦ͍ͬͯͳ͍)
·ͱΊ • ͜Ε·ͰC/C++͡Όͳ͍ͱॻ͚ͳ͔ͬͨ ʹ͍ͭͯɺ༗ྗͳผͳબࢶ͕Ͱ͖ͨ • ίϛϡχςΟΛΓ্͍͛ͯͬͯɺC/C++Έ ͍ͨʹ༷ʑͳͰΘΕͯ΄͍͠ͳ
͓·͚ɿനృΓࣦഊίʔυ(ൈਮ) fn write_mem8(addr:u32, data:u8) { unsafe { asm!("mov BYTE PTR
[$0], $1" : : "r"(addr), "r"(data) : : "intel"); } } pub extern fn init_os() { let vram_address = 0x000a0000; for offset in 0x00000000..0x00010000 { let vram: *mut u8 = 0x000a0000 as *mut u8; write_mem8(vram_address + offset, 0x0f); } }
༨ஊɿࣗ࡞OSͷํͷʹ͍ͭͯ • ʮࣗ࡞OS͘͘ձʯʹࢀՃ͍ͯ͠·͢ • ࣍ճ 11/26() ։࠵ • https://atnd.org/events/82288