問題タブ [bootloader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arm - ARM の起動プロセスとは何ですか?
ご存知のように、X86 アーキテクチャの場合: 電源ボタンを押すと、マシンは 0xFFFFFFF0 でコードの実行を開始し、ハードウェアの初期化を行うために BIOS でコードの実行を開始します。BIOS の実行後、ブートローダーを使用して OS イメージをメモリにロードします。最後に、OS コードの実行が開始されます。ARM アーキテクチャの場合、電源ボタンを押した後の起動プロセスは何ですか? ありがとう!
unix - バイナリ ファイルから起動可能な USB ドライブを作成しますか?
を介してASMソースからコンパイルしたbinファイルがありますnasm -f bin -o helloworld.bin helloworld.asm
。helloworld.bin
USBフラッシュドライブに書き込む方法を教えてください。フロッピーディスクに書きたくない!フロッピー ディスクではなく、 USB フラッシュ ドライブに書き込みを行う限り、Unix や MS-DOS、またはサードパーティのソフトウェアを使用してこれを行うことは問題ありません。
c - アセンブラ経由でブートローダー レベルで C プログラムを実行する
カスタム (非常に基本的な「Hello world!」) ブートローダーをアセンブラーで作成しました。その中で C プログラムを実行したいと考えています。C プログラムは動作しますか、それともファイルが失われたために失敗しstdio.h
ますか? また、C プログラムとブートローダーを単一の .bin ファイルにバンドルしdd
て、フラッシュ ドライブ/CD に保存するにはどうすればよいでしょうか?
windows - フラッシュ ドライブの MBR/VBR を読み書き (プログラム) するにはどうすればよいですか?
USB 大容量記憶装置のマスター ブート レコード (または VBR) を読み書き (実際にはプログラミング) する方法を探しています。実際には、MBR をプログラムしたいフラッシュ ドライブなので、それをコンピューターに接続するたびに、プログラム (ファイル内のフラッシュ ドライブに保存されている) が実行されます。
アセンブリについてはかなりの知識がありますが、MBR のプログラミング方法はわかりません。助けてください
ありがとう
kernel - カーネルをロードした後、syslinux は保護モードに切り替わりますか?
カーネルをロードした後、syslinux は保護モードに切り替わりますか? syslinux がカーネルを起動した後のマシンの状態は何ですか。
kernel - カーネルをメモリにロードする-ローダー自体を作成する方法は?
私はDで独自のブートローダーとカーネルの作成に取り組んでいますが、つまずきに遭遇しました。
バックグラウンド:
- 私はすべてを一から書いています。したがって、ブートセクターは組み立て中です。そして、私はGRUBを使用していません。
- テストにはQemuを使用しています。
- ブートセクターは、「ディスク」(現在はフラットバイナリファイルであり、最初のセクターはブートローダーで、残りはカーネルコード)から仮想アドレス0xC0000000にカーネルを読み取り
kmain()
、私のエントリポイントであるを呼び出します。カーネル。 - カーネルにPEファイル形式を使用しています。(Elfを使用するように言わないでください。私の選択はPEです。)
問題
PEファイルをロードできるようにすることはカーネルの仕事の一部です。では、最初にカーネル自体をメモリにロードして、実際に正しく実行できるようにするにはどうすればよいでしょうか。
(1)512バイトに収まらない、(2)アセンブリで行うのが面倒なので、ブートセクタからこれを行うことはできません。もちろん、カーネル自体でもそれを行うことはできません。では、これをどのように行う必要がありますか?
linux-kernel - ブートローダー (grub) 経由で渡されたカーネル パラメーターを取得する
の init スクリプトで (経由Grub
で渡された)カーネル パラメータにアクセスするにはどうすればよいですか? initramfs
いくつかのパラメーターを導入し、それを init のように使用するというアイデアがありますif(myparam == 0) {} else {}
c - stdioなしのC、何が可能ですか?
私はしばらくの間、オペレーティングシステムのプログラミングに興味を持っていました。いくつかの異なるサイトを調べてみると、(言い換えれば)興味深い概念に出くわしました。#includeを使用してブートローダーを書き始めた場合、すでに致命的な間違いを犯しています。
私はK&Rを経験しました、そして本全体が各レッスンを通してそれを含みます。Cの学習全体でそれを使用してきましたが、stdioを使用するものと使用しないものについて、何を学んだかわかりません。stdioなしでCで何ができますか?
linux - ARM Cortex M3ボードでLinuxを実行するにはどうすればよいですか?
私はLuminaryLM3s8962ARM Cortex M3開発ボードを持っており、Keil RTOSを使用してプログラムすることはできましたが、Linuxと組み込みlibcの上で開発することを強く望んでいます。私が知りたいのは、実際にLinuxカーネルとアプリケーションおよび依存関係をボードに取得するにはどうすればよいですか?SDスロットがありますが、ある種のファイルシステムイメージを作成して、ブートローダーでボードをプログラムすることはできますか?ブートローダーを自分で作成する必要がありますか?私はこれのどれから始めるべきか全く手がかりがありません。yoctoプロジェクトを調べましたが、マルチメガバイトのカーネルとファイルシステムのイメージファイルを実際に処理してボードで実行する方法がわかりません。
assembly - シンプルなNASM「ブートプログラム」がメモリに正しくアクセスしていませんか?
**ブート プログラムと言うとき、OS を起動するプログラムを意味するわけではないことに注意してください。つまり、コンピューターを起動して何かを実行するときに実行される単純なプログラムです。
私は Assembly/NASM に精通しているわけではありませんが、簡単なブート プログラムを作成するのに十分な知識があると思います。
まあ、私は十分に把握していると思いました。どうやらそうではありません。
オンラインで見つけた簡単なブートプログラムを試しました。正常に実行されました (文字 'A' が出力されます)。次に、メモリに保存されている手紙を印刷するように変更しました。失敗しました。'A' を印刷する代わりに、スマイリー フェイスを印刷します。(誓って、コンピューターは今私を笑っています。)
これはソース ファイルのコードです。
「 move al, [testChar]」を「move al, 65 」に置き換えると、文字「A」が正しく出力されます。メモリ宣言を動かしてみました。BITS と ORG を括弧で囲むか括弧なしですべての組み合わせを試しました。また、testChar のインクリメントとデクリメント (つまり [testChar+1]) も試しました。毎回、スマイリー、逆スマイリー (testChar をインクリメントしたとき)、または何も出力しません (おそらくコードが実行されていないため、コードの前にメモリ宣言を置いたとき =P)。私はいまいましいことを働かせることができません。
さて、仕様について(おそらく関連しているため):
Intel Pentium II プロセッサを搭載した Dell Latitude CPi を実行しています。これだけでテストする必要があるからです (通常のコンピュータでアセンブラをテストしているわけではありません。まったく違います)。Windows XP、Ubuntu、および Arch Linux を実行したので、プロセッサは x86 であると確信しています。
私は現在、NASM を使用して Arch Linux でプログラムを作成およびコンパイルしています。
ブート プログラムはフロッピー ディスクから実行されます。
「nasm -f bin FILENAME」を使用してコードをコンパイルします。
次に、AL の「mtools」パッケージの「mformat」コマンドを使用して、「mformat -f 1440 -B BOOTPROGRAM A:」を介してコンパイル済みのブート プログラムをフロッピー ディスクに転送します。
それで、今回は何を台無しにしたのですか?または、プロセッサ/BIOS に問題がありますか?