質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

QEMU

QEMU(キューエミュ)は、Fabrice Bellardが中心となって開発しているオープンソースのプロセッサエミュレータ

受付中

Ubuntu QEMUで出たエラー

Locu_______
Locu_______

総合スコア15

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

QEMU

QEMU(キューエミュ)は、Fabrice Bellardが中心となって開発しているオープンソースのプロセッサエミュレータ

0回答

0評価

0クリップ

564閲覧

投稿2021/09/19 04:29

Linux Ubuntuで「フルスクラッチで作る! x86_64自作OS」を見ながら、OSを作っているのですが、2.6のQEMUで実行今やっているのですが、本通りにやっていたのですが、警告が出てしまってQEMUが起動されません。

エラーメッセージ

WARNING: Image format was not specified for 'json:{"fat-type": 0, "dir": "fs", "driver": "vvfat", "floppy": false, "rw": false}' and probing guessed raw. Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. Specify the 'raw' format explicitly to remove the restrictions. qemu-system-x86_64: Initialization of device ide-hd failed: Block node is read-only

開発言語 : C ・ リンカスクリプト

開発環境

  • Linux Ubuntu 20.04 LTS

ソースコード
<main.c>

C

#define BG_RED 0 #define BG_GREEN 255 #define BG_BLUE 0 struct pixelformat { unsigned char b; unsigned char g; unsigned char r; unsigned char _reserved; }; struct framebuffer { struct pixelformat *base; unsigned long long size; unsigned int hr; unsigned int vr; }; void start_kernel(void *_t __attribute__ ((unused)), struct framebuffer *fb, void *_fs_start __attribute__ ((unused))) { unsigned int x, y; struct pixelformat *p; for (y = 0; y < fb->vr; y++) { for (x = 0; x < fb->hr; x++) { p = fb->base + (fb->hr * y) + x; p->r = BG_RED; p->g = BG_GREEN; p->b = BG_BLUE; } } while (1); }

<kernel.ld>

ld

OUTPUT_FORMAT("binary"); MEMORY { exec_file(r) : ORIGIN = 0x00000000, LENGTH = 1m ram(wx) : ORIGIN = 0x00110000, LENGTH = 960k } SECTIONS { .header : { QUAD(__bss_start) QUAD(__bss_end - __bss_start) } > exec_file .body : { *(.text) *(.rodata) *(.data) __bss_start = .; *(.bss) __bss_end = .; *(.eh_frame) } > ram AT> exec_file }

<Makefile>

make

TARGET = kernel.bin CFLAGS = -Wall -Wextra -nostdinc -nostdlib -fno-builtin -fno-common LDFLAGS = -Map kernel.map -s -x -T kernel.ld $(TARGET): main.o ld $(LDFLAGS) -o $@ $+ %.o: %.c gcc $(CFLAGS) -c -o $@ $< run: $(TARGET) cp $(TARGET) ../fs/ qemu-system-x86_64 -m 4G -bios OVMF.fd -hda fat:../fs clean: rm -f *~ *.o *.map $(TARGET) .PHONY: run clean

<ディレクトリ構成>

fs / kernel.bin fs / EFI / BOOT / BOOTX64.EFI

<ファイルの作成方法>
kernel.bin :

  • main.C
  • kernel.ld
  • Makefile

上記3つのファイルを作り、MakefileのあるディレクトリでTerminalに

Terminal

cd <Makefileのあるディレクトリパス> make

そうすると

  • kernel.bin
  • kernel.map
  • main.o

上記3つのファイルが生成されます。
そうしたら、kernel.binの作成は終わったので、ファイルをディレクトリ構成どおりにファイルを配置して、Terminalで

Terminal

qemu-system-x86_64 -bios OVMF.fd -hda fat:fs

を実行すると、一番最初のエラーが表示されます。

わかる人がいれば教えていただきたいです。

Teratailを初めて使うので、見にくかったりするかと思いますがご了承ください。

長文失礼しました。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

QEMU

QEMU(キューエミュ)は、Fabrice Bellardが中心となって開発しているオープンソースのプロセッサエミュレータ