boot2dockerのisoからGCEのInstanceを起動するbash scriptを書けませんでした(WIP)

いつかはカーネルハッカーの高みに登るんだ・・・!
と胸に秘めた思いをせっかくの休日なのでこの思いを捧げようと思って、boot2dockerのイメージをそのままGCEで動かそう!と思ったけど、タイトル通り。とりあえずbash script書いてみたけどダメでしたー。マシンの起動はするけどBootloaderまで行けてない模様
うーむ。boot2dockerのisoをそのままrawイメージにして起動しようとしてるけど、そもそもboot2docker.isoがBootableなisoじゃないくて、自分でPXEブートとBootloaderを入れたisoを作れば行けるような気もする・・・
isoダウンロードとGCSにアップロード、GCEインスタンス起動まで書いちゃったから余計なコードが多いけど現状こんな感じ。これが動いたらpacker使って今風に書いたりもしてみたい。
一応の成果物:https://gist.github.com/mainyaa/8936794

使い方:

$ wget https://gist.github.com/mainyaa/8936794/raw/539b989139226aa8894b0d24536bda02f282dfc1/gce-boot2docker-image-boot.sh
$ chmod +x gce-boot2docker-image-boot.sh
$ ./gce-boot2docker-image-boot.sh <GCE_PROJECT_ID>

起動後のシリアルコンソールはこんな感じ。Bootloaderが見つかっていないという推測は合っているのだろうか。はたして。

+ gcutil getserialportoutput vm-boot2docker-1392134379
INFO: Zone for vm-boot2docker-1392134379 detected as us-central1-a.
Changing serial settings was 0/0 now 3/0
Start bios (version 1.7.2-20131007_152402-google)
No Xen hypervisor found.
Unable to unlock ram - bridge not found
Ram Size=0x26600000 (0x0000000000000000 high)
Relocating low data from 0x000e10a0 to 0x000ef780 (size 2161)
Relocating init from 0x000e1911 to 0x265d07a0 (size 63291)
CPU Mhz=2600
=== PCI bus & bridge init ===
PCI: pci_bios_init_bus_rec bus = 0x0
=== PCI device probing ===
Found 4 PCI devices (max PCI bus is 00)
=== PCI new allocation pass #1 ===
PCI: check devices
=== PCI new allocation pass #2 ===
PCI: map device bdf=00:03.0  bar 0, addr 0000c000, size 00000040 [io]
PCI: map device bdf=00:04.0  bar 0, addr 0000c040, size 00000020 [io]
PCI: init bdf=00:01.0 id=8086:7110
PIIX3/PIIX4 init: elcr=00 0c
PCI: init bdf=00:01.3 id=8086:7113
Using pmtimer, ioport 0xb008, freq 3579 kHz
PCI: init bdf=00:03.0 id=1af4:1004
PCI: init bdf=00:04.0 id=1af4:1000
Found 1 cpu(s) max supported 1 cpu(s)
MP table addr=0x000fdaf0 MPC table addr=0x000fdb00 size=240
SMBIOS ptr=0x000fdad0 table=0x000fd9c0 size=269
Memory hotplug not enabled. [MHPE=0xffffffff]
ACPI DSDT=0x265fe1f0
ACPI tables: RSDP=0x000fd990 RSDT=0x265fe1c0
Scan for VGA option rom
WARNING - Timeout at i8042_flush:68!
All threads complete.
Found 0 lpt ports
Found 0 serial ports
found virtio-scsi at 0:3
Searching bootorder for: /pci@i0cf8/*@3/*@0/*@0,0
Searching bootorder for: /pci@i0cf8/*@3/*@0/*@1,0
virtio-scsi vendor='Google' product='PersistentDisk' rev='1' type=0 removable=0
virtio-scsi blksize=512 sectors=20971520
Searching bootorder for: /pci@i0cf8/*@3/*@0/*@2,0
...省略
Searching bootorder for: /pci@i0cf8/*@3/*@0/*@255,0
Scan for option roms
Searching bootorder for: HALT
drive 0x000fd950: PCHS=0/0/0 translation=lba LCHS=1024/255/63 s=20971520
Space available for UMB: 000c0000-000eb800
Returned 122880 bytes of ZoneHigh
e820 map has 6 items:
  0: 0000000000000000 - 000000000009fc00 = 1 RAM
  1: 000000000009fc00 - 00000000000a0000 = 2 RESERVED
  2: 00000000000f0000 - 0000000000100000 = 2 RESERVED
  3: 0000000000100000 - 00000000265fe000 = 1 RAM
  4: 00000000265fe000 - 0000000026600000 = 2 RESERVED
  5: 00000000fffbc000 - 0000000100000000 = 2 RESERVED
Unable to lock ram - bridge not found
Changing serial settings was 3/2 now 3/0
enter handle_19:
  NULL
Booting from Hard Disk...
Booting from 0000:7c00

書いてから気づいた。CoreOSのLive ISO作るbash scriptを書きました CoreOSのこれが参考になりそう。あとでまた試す。