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のこれが参考になりそう。あとでまた試す。