2007年10月21日日曜日

floppy imageの作成  - その3

やっと、floppy image 作成完了して、kernel bootできました。

忘れぬうちに、手順を書きとめておく。

(1) VMware Player の導入

  VMwareのWebサイトより、Windows用のVMware Playerをダウンロード、

  インストールします。

(2) QEMU の導入(VMware の Disk Image作成のため)

  qemu を ここ から取ってこよう。とってきたパッケージを適当なところへ

  解凍すると、中に qemu-img.exe があるはず。

(3) Ubuntu の導入

  日本語ローカライズされた VMwareイメージを ここ からダウンロードし、

  解凍すれば、 そのまま、VMware Player で実行できます。

(4) Floppy disk image の作成

  qemu-img create -f vmdk floppy0.bin 1440

  Ubuntu で FAT Formatする。

  mkdosfs /dev/fd0

(5) GRUBのインストール

  まずは Floppy diskをマウント。

  cd ~
  mkdir ./floppy
  sudo mount -t vfat /dev/fd0 ./floppy


  次に、Ubuntu の GRUB をそのまま使っちゃおう。

  mkdir ./floppy/boot
  mkdir ./floppy/boot/grub
  cp /boot/grub/stage1 /boot/grub/stage2 /boot/grub/menu.lst \\
    ./floppy/boot/grub/.
  /usr/sbin/grub

  grub> root (fd0)
  grub> setup (fd0)
  grub> quit

  最後に menu.lst の編集。
  Ubuntu用のエントリは全て削除して、下記エントリを追加。

  # For booting Sample Kernel
  title SampleKernel
  root (fd0)
  boot

(6) Sample Kernel のビルド

  ここ に書いてある、multiboot.h、boot.S、kernel.c がソース。

  Makefile が無いので、下記のように作成。

  TARGET= kernel
  MAPFILE= kernel.map
  START= 0x100000
  CC=/usr/bin/gcc
  CFLAGS= -ffreestanding -nostdinc -nostdlib -fno-stack-protector -I.
  LDFLAGS= -Ttext $(START) -e start -Map $(MAPFILE)
  OBJS= boot.o kernel.o
  
  .c.o:
   $(CC) $(CFLAGS) -c $*.c
  .S.o:
   $(CC) $(CFLAGS) -c $*.S

  all: $(TARGET)
  $(TARGET): $(OBJS)
   $(LD) $(LDFLAGS) -o $@ $(OBJS)

  clean::
   rm -f $(TARGET) $(OBJS) *~

  boot.o: Makefile boot.S multiboot.h
  kernel.o: Makefile kernel.c multiboot.h

(7) Sample Kernel を Floppy diskへコピー

  cp kernel ./floppy/boot/.

(8) Boot

  Boot画面はこんなかんじ。

0 件のコメント: