並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 114件

新着順 人気順

自作OSの検索結果1 - 40 件 / 114件

  • 『ゼロからのOS自作入門』に込めた思い - uchan note

    2021 年 3 月 22 日に『ゼロからの OS 自作入門』を出版する予定です。 本書は OS を手作りする本で、現代のパソコンでちゃんと起動する点が特長です。 15 年前の 2006 年に出版された『30 日でできる!OS 自作入門』を読んで育った私(uchan)が その後継となるだろう本を書いたということで、執筆の裏話を記してみたいなと思います。 書籍の概要 タイトル:ゼロからの OS 自作入門 著者:内田公太(uchan) 出版予定日:2021 年 3 月 22 日 ページ数:768(最大。実際はもっと少なくなる予想) ISBN:978-4-8399-7586-9 出版社の書籍ページ:ゼロからのOS自作入門 | マイナビブックス 本書は OS 作りに関する知識がないところから始め、オリジナルの OS「MikanOS」を作る一通りの過程を説明します。 パソコンの電源を入れ、他の OS

      『ゼロからのOS自作入門』に込めた思い - uchan note
    • 電子工作のための電子回路基礎 - fumiLab

      お久しぶりです.Fumiです.最近作ったスライドを共有しておきます. 追記 たくさんのご覧いただきありがとうございます。勉強会や学校、会社で使っても良いかというお問い合わせをたくさん頂いています。出典を示していただければCC BY-SAで使っていただいて構いません。ただ、あくまで個人向けに作ったもので著作権的に微妙な写真やイラストが結構使ってあるのでこのまま商用利用しようとは思わない方が良いと思います。今見返すと真ん中ー後ろの方とかもう作るの疲れちゃって雑になってたり、これ微妙だなっていうところも結構あって作り直したいなという気持ちもあります。使った際にはぜひ作者@fumi_makerのリプライやDMにでも報告してもらえたら嬉しいです。このブログ(fumimake.net)も色々知識を公開しているので一緒に示してくださると嬉しいです。 このスライドは何? 研究会の輪講資料として電子回路に関

        電子工作のための電子回路基礎 - fumiLab
      • この個人サイトは自作OSで動いています

        追記 (2022 5/29): サーバ代をケチるべくVercelに移行しました。動いていたソースコードは ココ に置いてあります。 あなたの予想に反して、このページが見えているでしょうか?このWebサイトは自作OSのKerlaが提供しています。 これは自作OS Advent Calendar 2021の23日目の記事です。 自作OS「Kerla」の紹介 Kerla(かーら)はRustで書かれたLinux ABI互換モノリシックカーネルです。今年の春頃から作り始め、DropbearというSSHサーバが動作する程度には基本的なUNIXの機能が実装されています。具体的には、ファイルの読み書きやUDP/TCPソケット、fork/exec、シグナル、擬似端末といったものです。 カーネル実装の雰囲気を軽く紹介すると、Kerlaでは以下のようにシステムコールが実装されています。 /// write(2)

          この個人サイトは自作OSで動いています
        • はじめに - Writing an OS in 1,000 Lines

          本書では、小さなOSをゼロから少しずつ作っていきます。 OSと聞くと腰が引けるかもしれませんが、OS (特にカーネル) の基本機能は案外単純です。巨大なオープンソースソフトウェアとしてよく挙げられるLinuxでさえ、バージョン0.01はたった8413行でした。様々な要求に応えるために次第に肥大化していっただけで、当初は大変素朴な実装になっていました。 本書では素朴なコンテキストスイッチ、ページング、ユーザーモード、コマンドラインシェル、ディスクデバイスドライバ、ファイルの読み書きをC言語で実装します。これだけ様々な機能が詰め込まれているのに、コードは合計でたった1000行未満です。 「1000行なら1日でできそう」と思うかもしれませんが、初学者には少なくとも3日はかかるでしょう。OS自作のハマりポイントは「デバッグ」です。アプリケーション開発とは違うデバッグ手法・能力を習得する必要がありま

            はじめに - Writing an OS in 1,000 Lines
          • 1,000行で作るオペレーティングシステム

            「Writing an OS in 1,000 Lines」 というオンラインブックを書きました。ゼロから1,000行でOSを作るという内容です。 『自作OSで学ぶマイクロカーネルの設計と実装』 とは違い、最初の一歩の部分を重点的に解説しています。シンプルなモノリシックカーネル設計で、実装の解説だけでなくカーネルプログラミング特有の難しい部分、特に「カーネルをどうデバッグすれば良いか」をおさえた、初学者向きの内容になっています。 3日ほどあれば済むボリュームです。夏休みの自由研究がてら、ぜひチャレンジしてみてください。

              1,000行で作るオペレーティングシステム
            • VM環境のCPU仮想化はどうやって実現しているのか ハードウェア仮想化支援機構の仕組み

              Arm入門勉強会とは、macOSがArmに移行したこの機にArmアーキテクチャでのプログラミングについて入門するソフトウェアエンジニアのための会です。今回主催の@nullpo_head 氏が、Armの仮想化支援機構について、その仕組みから深く説明します。前半は「現代のハードウェア仮想化支援機構」について。全2回。 ハードウェア仮想化支援とは何か 佐伯 学哉氏:入門セッション3つ目は『Armの仮想化支援機構』についての入門セッションです。どうぞよろしくお願いします。 本発表のスタートとゴールです。VMwareとかQemuとか使ったことあるけど仮想マシンの仕組みなんも知らんというところがまずスタートになっています。 1個目のゴールは、最近のVMのざっくりした仕組みとハードウェア仮想化支援とは何かということがわかること。そしてその話のあとに実際にArmの仮想化支援機構の概要を説明し、Armの仮想

                VM環境のCPU仮想化はどうやって実現しているのか ハードウェア仮想化支援機構の仕組み
              • はじめに - Rustで始める自作組込みOS入門

                この本は組込みシステムやOSのような低レイヤーシステムの開発経験がないプログラマーのような人が、自作OSをはじめるため解説本です。 著者自身、本職はウェブプログラマーですが、趣味で組込みOSの自作をしています。この本はそのノウハウ集のようなものです。 このような低レイヤーシステムはC言語で開発されることが多いのですが、今回はRustを使います。 RustはC言語と比較して、様々なモダンな機能やツール郡を取り揃えている上に、C言語の長所である直接のメモリ制御ができ、パフォーマンスも高いとして組込みシステム開発でつかえるとして注目されています。 Rustそのもの解説は控えめですが、低レイヤーシステム開発特有のテクニックは必要に応じて解説します。 想定読者 ある程度はプログラミング経験があることを前提としています。 また、レジスタやメモリなどコンピュータアーキテクチャに関する基礎用語の説明もちゃ

                • 現代のコンピュータに�おける自作OS事情

                  現代のコンピュータにおける 自作OS事情 2019-06-29 hikalium @ Hackers Champloo #hcmpl

                    現代のコンピュータに�おける自作OS事情
                  • OSはどうやってP-coreとE-coreを使い分けているのか - Blog posts by @retrage

                    Alder Lake以降のIntel CPUでは、P-coreとE-coreの2種類のコアが搭載されている。 P-coreは性能重視、E-coreは省電力重視という位置づけで、OSがうまくこれらのコアを使い分けることで、消費電力と性能の両立が図られている。 ここまでの話は広く知られているが、実際にどのようにしてOSに対してコアの使い分けをさせているのかの実装レベルでの解説は (少なくとも日本語では) ほぼ存在しないようなので調べてみた。 OSから見たP-coreとE-core OSの役割の一つとしてプロセススケジューリングがあり、どのプロセスをいつどれぐらいの期間どのCPUコアで実行するかを決める。OSができるだけ効率よくプロセスをスケジューリングするためには、CPUコアの性能や消費電力の違いを考慮したスケジューリングが必要になる。そこで、Intel CPUではOSに対して次の2つの情報を

                      OSはどうやってP-coreとE-coreを使い分けているのか - Blog posts by @retrage
                    • 自作OSとかLinuxカーネルについて役立った本 - Qiita

                      はじめに なんらかの理由によってOSやOSカーネルに興味を持つ人は多々います。しかし、その次のステップとしてどんな本を読めばいいんだろうと思っている人はこれまたいっぱいいます。そこで、長年Linuxカーネルにかかわってきた筆者がこれまでに読んでよかったと思うものについてここの列挙しました。紹介するのは本だけであって、記事は省いています。もう一点、筆者が書いたものは省いています。 OSそのものに興味を持った人は、その後に興味の方向が次のような二つに分かれることが多いと筆者は考えています。 オレオレOSを作りたい 既存のOSを改造したい この仮説をもとに、それぞれについて筆者がかつて真面目に読んだ本の中から「自作OS」および「Linuxカーネル」というキーワードでよかったものを挙げておきます。Linux以外の既存OSについては語れるほどの知識はないので書いてません。 筆者について 本の良し悪し

                        自作OSとかLinuxカーネルについて役立った本 - Qiita
                      • キャリアハックの奇行 - Software Transactional Memo

                        エンジニアの奇行 嚢中の錐という言葉がある。有能な人物は自ずと傑出していくという意味だが、有能さとは例えば学歴の高さとは一致しない。 たとえMIT卒であろうとも大成するとは限らないし、ましてや入試の点数などで見れる人間の側面は限定的である。 企業などで採用する側からしてみたら当然ながら採用後の活躍を期待して雇用するのであり、入社をゴールとしてそれ以降働かなくなる人は望ましくないし、学歴や入試の点数によってそういう人かどうか判定する事はできない。 活躍という観点で言うと長いキャリアにおいてより重要となるのはキャリア開始時での能力の高さよりも、険しく長い道のりを自己メンテナンスしながら歩み続けられる根気の強さが重要とされている。その根気の源泉は執着だったり崇拝だったり妄信だったりトラウマだったり原体験だったり人によって様々だが、ここではひっくるめて「やる気」と簡略化して呼ぶことにする。 さて「

                          キャリアハックの奇行 - Software Transactional Memo
                        • パソコンを回路レベルで自作する (Intel x86 IA-32)

                          ~重要イベント一覧 (2019/06/22から)~ 06/22 作成開始 06/29 32bit加算だけ実行する状態機械が完成 07/17 UARTの送信機を作る 07/18 8bit加算ができるようになる 07/19 ModRM, SIB周りのアドレシングを作り込む 07/20 加算命令がIntel x86の仕様を完全に再現 07/25 加算以外の命令を、一気に48個作る 08/13 Hello Worldが動いた (writeシステムコールの作成) 08/21 自作CPU上で自作OSが動いた 08/27 自作CPU上の自作OSにシェルを実装 09/21 自作CPU上の自作OS上でテトリスが動いた

                            パソコンを回路レベルで自作する (Intel x86 IA-32)
                          • 年収1000万円を超えるエンジニアが知っておくべき最低限の各言語の特徴 - Qiita

                            初めに、そして結論 本当は冒頭にこういう言い訳がましいことを書くのは好きではないのだが、例によってディスり成分が多めなので、筆者はそういうキャラということでそこは目を瞑って欲しい。実体験に基づいて書くので業務上あまり触ってこなかった言語については記載が少ないが、読者のみなさんが詳しいことや私の記述で事実と異なる部分については謝罪して訂正したいのでプルリク、コメント等熱望している。あと筆者はサーバーサイドエンジニアであってフロントの事が全然わからんのでその辺はさっぴいて読んでほしい。結論から言うとRustを使え。 古生代 アセンブラ以外の高水準プログラム言語の歴史は1950年代から1であるが、筆者の実体験に基づいて話をするので'80年代まですっ飛ばす。 N88-BASIC N88といえばN88-BASIC(86)を思い浮かべる読者が多いと思うが、筆者はPC-8801mkIIユーザーだったので

                              年収1000万円を超えるエンジニアが知っておくべき最低限の各言語の特徴 - Qiita
                            • 「プログラマーのための CPU 入門 ― CPUは如何にしてソフトウェアを高速に実行するか」を読んだ - おしぼりの日常

                              年明けの暇な時間を利用して読んでみました。 書籍のリンク 技術書としての感想 良かった点 悪かった点 注意点 総評 技術書としての感想 良かった点 とにかく文章が分かりやすい 色々な用語の使い方に違和感がない 言葉にすると簡単ですが、本当に分かりやすかったです. 具体例が豊富 図が豊富 コード例が豊富 実験例が豊富 まず、「〇〇 な場合に命令の処理が詰まって遅くなります」といった説明の後に、「では、具体的にこういったケースを考えてみましょう」という具体例を持ってくる展開が多く、とても親切だと感じました.また、このような具体例の説明のときにほぼ必ず図が用いられています.特に全体を通して頻繁に出てくる命令流の図は非常に分かりやすかったです.また、コード例とそれを用いた実験も豊富でした.具体的には、キャシュの章では実際にキャッシュミスを意図的に起こすコード・キャッシュヒットを意図的に起こすコード

                                「プログラマーのための CPU 入門 ― CPUは如何にしてソフトウェアを高速に実行するか」を読んだ - おしぼりの日常
                              • 分散データシステム入門の決定版『データ指向アプリケーションデザイン』をたった30分で学んでみた #DataEngineeringStudy | DevelopersIO

                                基調講演「30分でわかるデータ指向アプリケーションデザイン」 ・ スピーカー 斉藤 太郎氏  Twitter:@taroleo / Github:@xerial Principal Software Engineer , Treasure Data 東京大学理学部情報科学科卒。情報理工学 Ph.D。データベース、大規模ゲノムデータ処理の研究に従事。その後、スタートアップであるTreasure Dataに加わり、アメリカ、シリコンバレーを拠点に活動中。日本データベース学会上林奨励賞受賞。OSSを中心にプログラミングやデータ処理を簡単にするためのプロダクトを作成している。 「30分でわかるデータ指向アプリケーションデザイン」最新の論文にも触れながら、分散データシステムの世界の魅力を伝えていきます。後半、@tagomoris https://t.co/TQ2TnsFIOT… — Taro L.

                                  分散データシステム入門の決定版『データ指向アプリケーションデザイン』をたった30分で学んでみた #DataEngineeringStudy | DevelopersIO
                                • Linux が動作する RISC-V CPU を自作した (2019 年度 CPU 実験 余興)

                                  私が所属する東京大学理学部情報科学科では三年の冬学期に CPU 実験という実験授業が開講されています。本稿ではその簡単な説明をした後、その実験の一環として約一ヶ月ほど取り組んだ「Linux が動作する RISC-V CPU を自作するプロジェクト」で何をしたか、またどのような成果を得たかについて紹介したいと思います。 本稿を読むその前に 弊学科では「XX 年度に教養学部から理学部情報科学科に進学してきた学生」を「XXer」と呼ぶ文化があります。本稿ではこの表現を断りなく用います1。また私は普段 Web が好きでもっぱら Web セキュリティに関することを追いかけているだけのしがない学部 3 年生なので (私についての情報は ここ に大体まとまっています)、こういう低いレイヤのことは未だによく分かっていません。あくまで素人の記事だとご理解いただけると嬉しいです。誤りの指摘や質問があれば、ここ

                                    Linux が動作する RISC-V CPU を自作した (2019 年度 CPU 実験 余興)
                                  • 自作OSとかLinuxカーネルについて役立ちそうな本

                                    はじめに なんらかの理由によってOSやOSカーネルに興味を持つ人は多々います。しかし、その次のステップとしてどんな本を読めばいいんだろうと思っている人はこれまたいっぱいいます。そこで、長年Linuxカーネルにかかわってきた筆者がこれまでに読んでよかったと思うものについてここの列挙しました。紹介するのは本だけであって、記事は省いています。 OSそのものに興味を持った人は、その後に興味の方向が次のような二つに分かれることが多いと筆者は考えています。 オレオレOSを作りたい 既存のOSを改造したい この仮説をもとに、それぞれについて筆者がかつて真面目に読んだ本の中から「自作OS」および「Linuxカーネル」というキーワードでよかったものを挙げておきます。Linux以外の既存OSについては語れるほどの知識はないので書いてません。 筆者について 本の良し悪しは人によってさまざまなので、筆者がどういう

                                      自作OSとかLinuxカーネルについて役立ちそうな本
                                    • ワイが理解出来ないのはApple信者では無いエンジニアなのにドヤ顔でMac使って..

                                      ワイが理解出来ないのはApple信者では無いエンジニアなのにドヤ顔でMac使ってるヤツと カーネルエンジニアやデストリでもWindows使ってるのにドヤ顔でデスクトップLinux使ってるヤツ デスクトップ環境周りのコミッターとか自作OSやドライバ作ってるとかなら納得だけど どーせ単なるユーザー利用でしょ?

                                        ワイが理解出来ないのはApple信者では無いエンジニアなのにドヤ顔でMac使って..
                                      • dockerで行う12ステップで作る組込みOS自作入門

                                        はじめに 冬休みに12ステップで作る 組込みOS自作入門を完走したをkozosを完走しました。 そのときの備忘録になります。 12STEPの各内容は以下のようになっています。 第1部 ブート・ローダーの作成 1stステップ 開発環境の作成 2ndステップ シリアル通信 3rdステップ 静的変数の読み書き 4thステップ シリアル経由でファイルを転送する 5thステップ ELFフォーマットの展開 6thステップ もう一度,Hello World 第2部 OSの作成 7thステップ 割込み処理を実装する 8thステップ スレッドを実装する 9thステップ 優先度スケジューリング 10thステップ OSのメモリ管理 11thステップ タスク間通信を実装する 12thステップ 外部割込みを実装する 1STEP、1commit単位でまとめて進めていきました。レポジトリは以下にあります。 環境構築 マ

                                          dockerで行う12ステップで作る組込みOS自作入門
                                        • マイクロカーネルとL4について (Yabaitech.tokyo, Writing a (micro)kernel in Rust in 12 days より) - 豆腐の豆腐和え

                                          怒田さん*1のこの記事、「CとRustで一から作るマイクロカーネルOS」のおかげで、マイクロカーネルとRustが今ホットです。そこで、技術書典6, 7に出展したYabaitech.tokyoにて連載している、"Writing a (micro)kernel in Rust in 12 days"から、マイクロカーネルとL4についての話を書いた"1日目"の記事の一部冒頭を、いい機会なので再編集してご紹介します。「マイクロカーネルってタネンバウム教授とリーナスの論争のあれだよね?」とか、「L4ってなに?」って方に読んでいただいて、L4ファミリーとマイクロカーネルについて簡単にご紹介できればなと思います。 ちなみに抜粋元の上述の記事は、僕が怒田さんと同じようにRustでマイクロカーネルを書いてみよう、という趣旨の企画です。なので、Yabaitech.tokyoの方もよろしくお願いします!ただし、

                                            マイクロカーネルとL4について (Yabaitech.tokyo, Writing a (micro)kernel in Rust in 12 days より) - 豆腐の豆腐和え
                                          • なぜ人は自作OSをするのか?自作OSとは何か? 〜自作OSのいまと昔 [第1回] | さくらのナレッジ

                                            みなさん、自作OSという言葉をご存知でしょうか? 自作PCという言葉には馴染みがあっても、自作OSという言葉は初めて聞いたという方も多くいらっしゃると思います。本連載では、そもそも自作OSとは何か、という基本的なところから、自作OSのこれまでの歴史、現代のコンピューターにおける自作OSの難しさ、そして自作OSの将来的な可能性について、筆者の実体験を踏まえながらご紹介したいと思います。 身近にあるOSの例 自作OSというのは、OS, つまりオペレーティングシステムを自分の手でつくりあげることを指します。といっても、そもそもOSとは何か知らない方も多くいらっしゃると思いますので、最初はそもそもOSとは一体何なのか見ていきましょう。 さて、みなさんの知っているOSにはどんなものがあるでしょうか?下記の図は、2019年5月の、日本国内におけるOSのシェアを示したグラフです。 最も多く使われているO

                                              なぜ人は自作OSをするのか?自作OSとは何か? 〜自作OSのいまと昔 [第1回] | さくらのナレッジ
                                            • NetBSDを手探りで移植したときの話 - Qiita

                                              この記事は自作OS Advent Calendar 2020 7日目の記事となります。 はじめに 現在のオープンソースOSは、たとえばLinux開発ボードであればボードベンダーから移植済みのLinux環境が提供されたり、たとえばNetBSDであればクロスコンパイル環境が整備済みでドキュメントも用意されていて、最低限の移植作業で移植が完了したりします。 ぼくがNetBSDを移植した当時(1993年)はそうではありませんでした。ドキュメントもなくいろいろ手探りで、それも一人でやらざるを得ませんでした。苦労話のことは置いておいて、技術的にどういう物が用意され何を調べてどういう手順で移植していったかを記録に残せればと思います。(って前置きした割に苦労話が多いような気がします、すみません) かなり昔の話なので、けっこう忘れてることも多く、微妙に記憶が間違っていたりすることも、順番が前後していることも

                                                NetBSDを手探りで移植したときの話 - Qiita
                                              • RISC-V OSを作ろう (1) ~ブート処理 - VA Linux エンジニアブログ

                                                はじめに 環境の用意 ブートプログラムを作る 動かしてみる コンパイル QEMU上で起動 GDBで制御 最後に おまけ 執筆者 : 高橋 浩和 はじめに RISC-VはMIPSアーキテクチャの流れを汲む正統派?のRISC CPUです。命令セットはシンプルですが、既存のメジャーなCPUのアーキテクチャと大きな違いがあるわけではありません。 Linux上で利用できるRISC-Vツール群も揃ってきたので、それらを使ってRISC-V用の小さなOSを実装してみようと思います。 最初は欲張らずに単純な実装を目指すことにします。 シングルコアのみサポート 64bitモードを使用 マルチタスキングを実現 タイムシェアリングスケジューリングを実装 割り込みネストは無し 保護機能は使わない 既存のBIOSやbootプログラムは利用せず、リセットエントリから全て作成する qemuの仮想マシン上で動作させる。ター

                                                  RISC-V OSを作ろう (1) ~ブート処理 - VA Linux エンジニアブログ
                                                • Linuxで動くNICドライバの開発をしている - BYB

                                                  概要 おことわり 流れ [前半]:NICドライバ実装に必要な作業 insmod/rmmod 時のエントリポイントとなる関数を用意 pci_diriver構造体を定義して、ドライバを登録 net_deviceとして登録 net_deviceハンドラ関数を用意してハンドラテーブルに登録 割り込みの定義(未動作確認) MMIOレジスタを適切に初期化して、実際にパケットを処理する部分を書いていく(未実装) ハンドラとスケジューリング [後半]:Linuxカーネル関連で詰まったところ insmod時のカーネルクラッシュ インターフェースのstateがUPにならない問題 ソースコード さいごに 概要 Linuxで動くe1000eドライバを開発しようとしており、ドライバと紐付けたNICのstateがupになるところまで進めました。 個人的に忙しくなった都合で一旦ここでプロジェクトを止めるため、備忘録とし

                                                  • 現代における自作OSの難しさ 〜自作OSのいまと昔 [第2回] | さくらのナレッジ

                                                    前回の記事では、自作OSとは何か、そしてこれまでの自作OSの歴史を紹介しました。しかし、近年になって自作OSを取り巻く状況は大きく変化してきています。そこで今回は、現代における自作OSでは、これまでと比べてどのような点が変化してきたのか、どのような難しい点があるのかについて紹介し、さらにそれらに対する解決策を、筆者の経験をもとに提案してゆきます。 自作OSをとりまく環境の変化 川合秀実氏著「30日でできる!OS自作入門」が出版された2006年頃と比べて、コンピュータをとりまく環境は大きく変化してきました。その変化には、CPUのコア数やビット幅からファームウェアの変遷、そしてデバイスの進化も含まれています。まず最初に、CPUのコア数について着目してみましょう。 CPUコア数の増加 上記の図は、1999年から2019年までにIntelから発売されたCPUのコア数の変化を示したグラフです。ご覧の

                                                      現代における自作OSの難しさ 〜自作OSのいまと昔 [第2回] | さくらのナレッジ
                                                    • ゼロからのOS自作入門 - ぱたへね

                                                      ゼロからのOS自作入門を1年かけて読みました。 book.mynavi.jp 長い時間かかりましたが、それだけの価値がある本です。 OSに限らずCPUや周辺デバイスの制御を手を動かしながら勉強したい人にお勧めです。 C++のソースコードが読みやすく、解説も詳しいです。ただ、扱っている内容が高度なのでちょっとよく分からないところがでてくるのはしょうがないと感じました。ただ、一回は動かしたという自信がつくので、今後何か必要な事が出てきたら、確実にこの本に戻ってこれます。 これからもずっと本棚に居続けるそんな本になりました。 本の内容 ブートローダーから始まって、GUI付きのOSを作っていきます。タスク(プロセス)の管理、入出力、ファイルシステム、GUIとパソコンっぽい機能が充実しています。最低限動くところをC++のソース付きで解説してあるのですが、その最低限の所がかなり上の方にありました。楽し

                                                        ゼロからのOS自作入門 - ぱたへね
                                                      • やってよかったbuild own x系(自作OSとか自作DBみたいな自作~)を紹介してみる

                                                        はじめに build own xってなに?という方がいらっしゃると思います。 下記ページにあるような自作~みたいなやつのことを指しています。 自作OSとかDBとかとにかく様々な種類があるんですが、僕がやってみて良かったなぁと感じたものだけ紹介します。(一部やってないけど良さそうなのも紹介します。) 難易度を星5を最高として書いていきます。 言語は日本語 or 英語です。 コンパイラ writing interpreter in go 形態:本 言語: 日本語、英語 コンパイラ系なら一番初めにおすすめなのは間違いなくこれ。 日本語版では「Go言語でつくるインタプリタ」という題で出版されています。 外部に依存するライブラリを一切使わないのが特徴でスクラッチで書きます。 語り口調も平易でわかりやすく、コンパイラ?インタープリタ?という方にもおすすめ。 Monkeyという言語を実装するのですが、既

                                                          やってよかったbuild own x系(自作OSとか自作DBみたいな自作~)を紹介してみる
                                                        • めくるめく粗挽きWebブラウザエンジンの世界 - Qiita

                                                          EDIT: DOjS はp5.jsサブセットを実行できる MuJS ベースのJavaScript環境だ。DOM-less。 https://github.com/SuperIlu/DOjS EDIT: SerenityOSを忘れてた: http://serenityos.org/happy/1st/ 自作OSに自前ブラウザというかなりヤバいプロジェクト。ブラウザ部分は最近Qtなクロスプラットフォーム版が出来た https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-project/ 。 EDIT: Geckoとか ServoとかMosaic系列は省いてしまった。まぁみんな知ってるよね多分。そもそも粗挽きというよりはかなりmature productだし。。 2020 Web Milestones という記事で

                                                            めくるめく粗挽きWebブラウザエンジンの世界 - Qiita
                                                          • 色々できるとおもわれがちな人ができないこと - 覚書

                                                            はじめに 以下記事の続きです。実例編といってもいいかもしれません。 satoru-takeuchi.hatenablog.com 完璧超人とまではいかないでしょうが、わたしも次の理由によりSNSなどでは「いろいろできるすごい人」「低レイヤに詳しい人」と思われがちです。 Linuxカーネルに詳しい。カーネルに詳しい人は無条件でなんでもわかっていると誤解されることが多々ある 自分あるいは自分が所属している組織の成果をよく宣伝する。このため、そういうことを好まない人に比べて「何かできる人」という印象がつきやすい twitter上でそれなりに認知されている、かつ、twitter上で様々なすごい人とよく話している。「すごい人と話しているとすごい」と思われがち。 本記事の趣旨は、その私が世の中で想像されるほどいろいろできるわけではない、できることは限られているということを書いてみようということです。自

                                                              色々できるとおもわれがちな人ができないこと - 覚書
                                                            • Rustで組込みプログラミングや自作OS作成をするには

                                                              これは以前からつくっていたErkOSという自作OSでの経験を元にして、どうやったらRustで自作組込みOSの最初の一歩を踏み出せるか、というものをドキュメントにしたものです。 このドキュメントはこの前の技術書展の告知が来たあたりから構想を練っていて、すきま時間にちまちまと書き進めていたものですが、とりあえず、プロセスの切り替えっぽいところまでの説明を終えることができたので公開しました。 組込みでRustをやる話や自作OSを書く話というのは先駆者がたくさんいて、僕自身もそれらの資料を参考にしつつ書き進めて来ました。 一応、それらの既存のものとは差別化はしているつもりではあるものの、既存のものを完全に上回るというものではないです。内容もまだまだ足りない。 以前、RustでOSを書くプロジェクトもろもろでいくつかOSを書く際に参考になりそうなプロジェクトをまとめましたが、情報も古くなってきたので

                                                                Rustで組込みプログラミングや自作OS作成をするには
                                                              • Mac で始める「ゼロからのOS自作入門」 - Qiita

                                                                Mac で「ゼロからのOS自作入門」の「8.7 メモリ管理に挑戦」まで進められたので、ひとまずそこまでの手順をメモとして残しておきます。この環境構築方法で本の最後まで進められるかどうかはまだわかりません。 環境は macOS BigSur(11.4), CPU は Intel でも Apple Silicon でも OK です。Homebrew はすでにインストールされているものとします。 PATH にいろいろ追加していきますが、適宜 .zshrc 等の PATH の設定にも追加してください。 EDK II の準備 後でインストールする binutils がすでにインストールされ PATH に追加されていると失敗するので注意してください。 $ cd $HOME $ git clone https://github.com/tianocore/edk2.git $ cd edk2 $ git

                                                                  Mac で始める「ゼロからのOS自作入門」 - Qiita
                                                                • カーネルことはじめ

                                                                  この記事は未踏ジュニアAdvent Calendar : 10日目です. カーネル, 書きたくないですか? こんにちは, horizon (@horizon2k38)です. 私は2023年の未踏ジュニアでA9Nというマイクロカーネルを作成していました. 人類なら誰しもがカーネルを書きたいと思ったことがあるはずです. そんな方のために, 未踏期間で得られた "0からカーネルを如何にして学び, 実装したか" という知見をより一般化して解説しようと思います. この記事の内容をすべて達成することで, あなたもきっとカーネルを書くことができるでしょう. やれば出来る きっと 絶対 私No.1 注: この記事はどちらかといえば初心者向けなので, 自信がある方は最下部の"参考文献"と, 私が書いた低レイヤー学習のロードマップのみ読むことをおすすめします. カーネル/OSとは そもそもカーネルとは, 所謂

                                                                    カーネルことはじめ
                                                                  • Keyball46組み立て日記 〜間違えてRP2040を買ったそこのあなたに〜 - /var/log/hikalium

                                                                    TL; DR Keyball46はいいぞ ProMicroにはAVR版とRP2040版がある ピン配置の互換性はあれど、命令セットは完全に異なるので「ファームウエアを書けとささやくのよ、私のゴーストが」という方以外はAVR版を間違えずに買いましょう まあ最悪間違えても一週間くらいでなんとかなる(当社調べ) みんな自作キーボードをやろう! はじまり みなさんは、Keyball46という素晴らしい自作キーボードキットをご存知ですか? そう、なんと、キーボードにトラックボールがついてるんです!最高ですよね! ということで、秋葉原にある自作キーボードのお店こと遊舎工房さんから速攻でポチりました。ちょうど安いキーボードを一個水没させたところですし、自作キーボードも本格的にやりたかったし、年末休みで暇を持て余していますからね。 役者は揃った。あとは作るだけ…。(キーキャップが想像以上に美味しそうでニヤ

                                                                      Keyball46組み立て日記 〜間違えてRP2040を買ったそこのあなたに〜 - /var/log/hikalium
                                                                    • QEMUとGDBの連携で起こっていた壊滅的なバグ OS自作中に逆ハイゼンバグに遭遇したのでパッチを送った話

                                                                      Kernel/VM探検隊は、カーネルやVM、およびその他なんでもIT技術の話題ジャンルについて誰でも何でも発表してワイワイ盛り上がろうという会です。だいみょーじん氏は、GDBでQEMUをデバッグした時に起きたバグとその解決法について発表しました。 趣味はOS自作、自動車業界でエンジニアをやっているだいみょーじん氏 だいみょーじん氏(以下、だいみょーじん):では、「QEMUのバグを見つけてパッチを送った話」をお話しします。今回の発表は、まず自己紹介をしてバグ発見の経緯をお話しして、その後にバグに関する考察と原因調査、そして修正パッチ、まとめという流れで発表をしていきます。 まずは自己紹介です。だいみょーじんと申します。自動車業界でエンジニアをやっていて、趣味はOS自作です。こんな感じのOSを作っています。最近のUEFI(Unified Extensible Firmware Interfac

                                                                        QEMUとGDBの連携で起こっていた壊滅的なバグ OS自作中に逆ハイゼンバグに遭遇したのでパッチを送った話
                                                                      • はじめに - Rustで始める自作組込みOS入門

                                                                        この本は組込みシステムやOSのような低レイヤーシステムの開発経験がないプログラマーのような人が、自作OSをはじめるため解説本です。 著者自身、本職はウェブプログラマーですが、趣味で組込みOSの自作をしています。この本はそのノウハウ集のようなものです。 このような低レイヤーシステムはC言語で開発されることが多いのですが、今回はRustを使います。 RustはC言語と比較して、様々なモダンな機能やツール郡を取り揃えている上に、C言語の長所である直接のメモリ制御ができ、パフォーマンスも高いとして組込みシステム開発でつかえるとして注目されています。 Rustそのもの解説は控えめですが、低レイヤーシステム開発特有のテクニックは必要に応じて解説します。 想定読者 ある程度はプログラミング経験があることを前提としています。 また、レジスタやメモリなどコンピュータアーキテクチャに関する基礎用語の説明もちゃ

                                                                        • ZigでWriting an OS in 1,000 Linesをやる

                                                                          ZigでWriting an OS in 1,000 Linesをやる #2023-11-21 自作 OS で学ぶマイクロカーネルの設計と実装(通称エナガ本)の補足資料として公開されているWriting an OS in 1,000 Linesを、できるだけZigでやってみることにした。 目次成果物 #repositoryは以下。 さいしょに #エナガ本は一通り読んでいたのだが、機能に対していくつかのOSの実装を眺める。という構成になっており、個人的には「同じような難易度でRV32を対象に 0->1 でシンプルなOSを作る書籍があるといいなあ」と思いながら読んでいたのだが、まさに欲していたものが公開されたので大喜びで実装を開始した。 自分はそのまま写経してしまうと頭に入らないため、異なる言語で書いてみたり、何らかの制約を課して実施することが多い。今回はZigで書いてみることにした。 概ね問

                                                                            ZigでWriting an OS in 1,000 Linesをやる
                                                                          • WasmOS: Wasmを実行する自作マイクロカーネル

                                                                            背景 WebAssembly(Wasm)をブラウザの外で活用するためにWASIの標準化が進められています。その目的は隔離され、制限されたWasmの実行環境を作ることですが、これは難しい挑戦です。WASMの安全性は外部APIの能力に依存するため、WASIの標準化は慎重に行う必要がありますが、これには多くの時間がかかります。私はこれがWASIXやWALIといった新しいシステムインタフェースが登場した原因の一つであると考えています。汎用だったはずのWasmバイナリは既にランタイム依存になりつつあります。 WASIでセキュリティを考え、苦労して「第二のOS」を作る必要があるという事実は、既存のOSが今の時代に即したものでないことを示唆します。ならばいっそ、新しいOSを作ってしまうのはどうでしょう? この記事ではWasmを実行する自作マイクロカーネルである、WasmOSを紹介します。 WasmOS

                                                                              WasmOS: Wasmを実行する自作マイクロカーネル
                                                                            • Rustで自作OSをしているときのデバッグ例 - syscall 命令と仲良くなりたい!前編 - /var/log/hikalium

                                                                              この記事は自作OS Advent Calendar 2022の17日目の記事です。他の記事も是非お楽しみください!(そして書ける方はぜひ参加してみてください!!) 前回(?)までのあらすじ hikaliumは自作OS上で動くアプリからsyscall命令を使ってシステムコールを呼べるようにしようと頑張っていたが、なぜか発生するトリプルフォルトによりQEMUが再起動してしまい、3時間のデバッグの末力尽きてしまった。一体なぜ例外が発生するのか、その謎を解くため、我々は数日の休息をとったのち、バイナリの森へと旅立った…。 前回(という名の配信アーカイブ): www.youtube.com 状況を整理しよう バイナリの森は危険だ。無闇に動きまわっては、x86の沼に足をとられて命を落としかねない。まずは我々の向かっていた先と、これまでに得た情報をまとめることにしよう。 どこへ向かっていたのか 我々のひ

                                                                                Rustで自作OSをしているときのデバッグ例 - syscall 命令と仲良くなりたい!前編 - /var/log/hikalium
                                                                              • uefi-rsを使わずにRustでMikanOSをやっていく話 - NTT Communications Engineers' Blog

                                                                                この記事は、 NTT Communications Advent Calendar 2022 6日目の記事です。 はじめに こんにちは、SDPF クラウド・仮想サーバチームの松下です。 普段は OpenStack の開発・運用をしているエンジニアで、今年から新入社員としてJOINしました。 今回は、細々と取り組んでいるOSを自作する個人的な活動についてお話ししつつ、ちょっと普通とは違う開発にチャレンジする同志を増やしたいなと思い執筆しております。 人の子であれば、一度は何か古くからある難しそうなソフトウェアの自作に取り組みたくなるものです(主語デカ発言) 私も例に漏れずその一人で、現在RustでOSを自作しようとしているところです。 自作するOSは、「ゼロからのOS自作入門」1(通称「MikanOS本」)のお題であるMikanOSです。 このMikanOS本は、言語としてC++を利用しOS

                                                                                  uefi-rsを使わずにRustでMikanOSをやっていく話 - NTT Communications Engineers' Blog
                                                                                • 雑文:Linuxとか低レイヤが好きで趣味で色々やってたら趣味が仕事になったのと、知識が足りないとこを勉強しようと思って学生にもなった件 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

                                                                                  このブロクで使ってるカテゴリは↓のようになっていて、こいつLinuxとかカーネル好きだなって感じなんですが、前まではLinux自体は使うけどそれくらいでガッツリとLinuxに絡んだりとかはしてませんでした。 前職はこんな感じのところでnodejsなんかのコード書いてわけですね。 web系っぽい記事もたまに書いてましたよw qiita.com とまあ、前職はweb系だったわけですが今はLinuxがっつりな仕事になってます。転職したのは去年の12月ですけどね。Linuxが好きでいろいろやってきて、そこでやったことをblogに書いたりしたわけですが、それも今の仕事で役立つことがあったりとまあ何が役立つかわからないものですね。メモリ管理に興味を持ったり自作OSに興味を持ったり、CTFだったりと低レイヤ周辺をウロウロしてたけど基本的な部分はブレなかったのが良かった気がします。 継続は力なりなんて格言

                                                                                    雑文:Linuxとか低レイヤが好きで趣味で色々やってたら趣味が仕事になったのと、知識が足りないとこを勉強しようと思って学生にもなった件 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ