ミラー環境でマスター外して起動したらGRUBはちゃんとブートしてくれるかテスト

昨日の段階では、まだ不安なとこがあったので、継続テスト。
これの続き。
http://d.hatena.ne.jp/kinneko/20110526/p36
http://d.hatena.ne.jp/kinneko/20110526/p37


GRUB2で両方のストレージに同じ設定で書き込みをした。
理屈ではどちらのドライブだけになっても、ちゃんと起動できるようになったのだけど、実際にそうなってしまったときに起動してこないとイヤなのでテスト。


一旦落として、右のドライブを外して起動。
ちゃんと起動してきた。
mdはこんなステイトに。

root@redmine:~# cat /proc/mdstat 
Personalities : [raid1] 
md1 : active (auto-read-only) raid1 sda5[1]
      5998528 blocks [2/1] [_U]
      
md0 : active raid1 sda1[1]
      482384832 blocks [2/1] [_U]
      
unused devices: <none>

当然ながら、右ドライブが起動時からは存在しないので、ドライブ名のマップはくりあがって、sdaになっている。

root@redmine:~# ls -d /sys/bus/scsi/devices/?\:0\:0\:0/block/* | awk 'BEGIN { FS="/"} {print $8 "\t" $6}'
sda 3:0:0:0

バイス名のマッピングがIFで固定できないのは、台数が増えるとやっかいな問題。
UUIDで呼ぶようにしておいたほうがいいのか。


ドライブを挿入する。

[  648.765078] ata3: exception Emask 0x10 SAct 0x0 SErr 0x4050000 action 0xe frozen
[  648.765194] ata3: irq_stat 0x00400040, connection status changed
[  648.765278] ata3: SError: { PHYRdyChg CommWake DevExch }
[  648.765365] ata3: hard resetting link
[  658.780021] ata3: softreset failed (device not ready)
[  658.780107] ata3: hard resetting link
[  660.060022] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[  660.080665] ata3.00: ATA-8: SAMSUNG HA500LJ, CW300-11, max UDMA7
[  660.080672] ata3.00: 976773168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA
[  660.082803] ata3.00: configured for UDMA/133
[  660.082817] ata3: EH complete
[  660.083003] scsi 2:0:0:0: Direct-Access     ATA      SAMSUNG HA500LJ  CW30 PQ: 0 ANSI: 5
[  660.083744] sd 2:0:0:0: [sdb] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[  660.083903] sd 2:0:0:0: [sdb] Write Protect is off
[  660.083911] sd 2:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[  660.083979] sd 2:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[  660.084399]  sdb: sdb1 sdb2 < sdb5 >
[  660.121426] sd 2:0:0:0: [sdb] Attached SCSI disk
root@redmine:~# ls -d /sys/bus/scsi/devices/?\:0\:0\:0/block/* | awk 'BEGIN { FS="/"} {print $8 "\t" $6}'
sdb	2:0:0:0
sda	3:0:0:0

IFとデバイス名のマッピングが逆転した。


RAIDを再構成しておく。

root@redmine:~# mdadm --manage --add /dev/md1 /dev/sdb5
mdadm: re-added /dev/sdb5
root@redmine:~# mdadm --manage --add /dev/md0 /dev/sdb1
mdadm: re-added /dev/sdb1


再起動するとマッピングが入れ替わっているのが確認できる。

root@redmine:~#  ls -d /sys/bus/scsi/devices/?\:0\:0\:0/block/* | awk 'BEGIN { FS="/"} {print $8 "\t" $6}'
sdb	2:0:0:0
sda	3:0:0:0
root@redmine:~#  ls -d /sys/bus/scsi/devices/?\:0\:0\:0/block/* | awk 'BEGIN { FS="/"} {print $8 "\t" $6}'
sda	2:0:0:0
sdb	3:0:0:0

IF名とデバイス名を一致させる(解決法なし)

2ドライブのミラー構成では、実用上はまったく問題がないのだけど、昨日のように抜くドライブを間違えるようなドジはふみたくない。
そこで、IF名とデバイス名は固定しておきたい。
たしか、kernelのboot=オプションで指定する方法があったような。

Kernel Boot Command-Line Parameter Reference
http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_pdf/ch09.pdf
ここには見当たらない。2006年だと古すぎか。
http://www.kernel.org/doc/Documentation/kernel-parameters.txt
libata.force=あたり?
違うなぁ...

起動時にIF名とデバイス名を一意にすることできるのって、特殊なataドライバだけだったかな...
探しても一般的な方法を見つけられない。

by-idで管理すると、場所ではなく、個体のドライブになるし。

/dev/disk/by-id/scsi-SATA_SAMSUNG_HA500LJS0ZBJ1FPC05095
/dev/disk/by-id/scsi-SATA_SAMSUNG_HA500LJS0ZBJ1FPC21565

by-pathで管理したらいいのかな?

/dev/disk/by-path/pci-0000:00:1f.2-scsi-2:0:0:0
/dev/disk/by-path/pci-0000:00:1f.2-scsi-3:0:0:0

これでmdとか認識できるのだろうか。

ミラー環境でマスターの先頭潰して起動したらGRUBはちゃんとブートしてくれるかテスト

さて、最初のインターフェイスにドライブがない場合は、ドライブマッピングが変わってうまく起動できることはわかった。
ドライブがあるのに、そこから起動できない場合はどうなるのだろうか。
これ、昨日間違ってやっちゃったことと同じだけどね(^^;。
あの時は、sdbだった。
sdaではどうか?


まずはバックアップ。

root@redmine:~# dd if=/dev/sda of=mdr_sda.img bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 9.3881e-05 s, 5.5 MB/s
root@redmine:~# dd if=/dev/sdb of=mdr_sdb.img bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 7.9434e-05 s, 6.4 MB/s

実行。

root@redmine:~# dd if=/dev/zero of=/dev/sda bs=512 count=1

再起動。

root@redmine:~# shutdown -r now

おお、ちゃんと上がってきた。
ドライブマッピングも正常。

root@redmine:~#  ls -d /sys/bus/scsi/devices/?\:0\:0\:0/block/* | awk 'BEGIN { FS="/"} {print $8 "\t" $6}'
sda	2:0:0:0
sdb	3:0:0:0

RAIDデグレードしている。

root@redmine:~# cat /proc/mdstat 
Personalities : [raid1] 
md1 : active (auto-read-only) raid1 sdb5[1]
      5998528 blocks [2/1] [_U]
      
md0 : active raid1 sdb1[1]
      482384832 blocks [2/1] [_U]
      
unused devices: <none>


MBRを書き戻す。

root@redmine:~# dd if=mdr_sda.img of=/dev/sda bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00347861 s, 147 kB/s

書き戻しを確認。

root@redmine:~# fdisk -l /dev/sda

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000f5f2

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       60055   482384896   fd  Linux raid autodetect
/dev/sda2           60055       60802     5998593    5  Extended
/dev/sda5           60055       60802     5998592   fd  Linux raid autodetect

パーティションを再認識させるのに、ドライブを抜き差しする。

root@redmine:~# echo 1 > /sys/class/scsi_device/2\:0\:0\:0/device/delete 
[  296.897402] sd 2:0:0:0: [sda] Synchronizing SCSI cache
[  296.897916] sd 2:0:0:0: [sda] Stopping disk
[  297.323307] ata3.00: disabled

ドライブを抜く。

[  345.260316] ata3: exception Emask 0x10 SAct 0x0 SErr 0x4010000 action 0xe frozen
[  345.260432] ata3: irq_stat 0x00400040, connection status changed
[  345.260514] ata3: SError: { PHYRdyChg DevExch }
[  345.260600] ata3: hard resetting link
[  345.984026] ata3: SATA link down (SStatus 0 SControl 300)
[  345.984038] ata3: EH complete

ドライブを入れる。

[  377.949502] ata3: exception Emask 0x10 SAct 0x0 SErr 0x4050002 action 0xe frozen
[  377.949618] ata3: irq_stat 0x00400040, connection status changed
[  377.949701] ata3: SError: { RecovComm PHYRdyChg CommWake DevExch }
[  377.949792] ata3: hard resetting link
[  387.968025] ata3: softreset failed (device not ready)
[  387.968111] ata3: hard resetting link
[  389.192041] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[  389.212699] ata3.00: ATA-8: SAMSUNG HA500LJ, CW300-11, max UDMA7
[  389.212706] ata3.00: 976773168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA
[  389.214844] ata3.00: configured for UDMA/133
[  389.214858] ata3: EH complete
[  389.215058] scsi 2:0:0:0: Direct-Access     ATA      SAMSUNG HA500LJ  CW30 PQ: 0 ANSI: 5
[  389.215508] sd 2:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[  389.215668] sd 2:0:0:0: [sda] Write Protect is off
[  389.215675] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
[  389.215743] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[  389.216160]  sda: sda1 sda2 < sda5 >
[  389.250219] sd 2:0:0:0: [sda] Attached SCSI disk

なんか一発目は認識に失敗したみたいだけど、リセット入って認識した。
RAIDを再構築する。

root@redmine:~# mdadm --manage --add /dev/md1 /dev/sda5
mdadm: re-added /dev/sda5
root@redmine:~# mdadm --manage --add /dev/md0 /dev/sda1
mdadm: re-added /dev/sda1

とりあえず、リビルド中だが、正常に戻った。

root@redmine:~# cat /proc/mdstat 
Personalities : [raid1] 
md1 : active raid1 sda5[0] sdb5[1]
      5998528 blocks [2/2] [UU]
      
md0 : active raid1 sda1[2] sdb1[1]
      482384832 blocks [2/1] [_U]
      [>....................]  recovery =  0.3% (1705728/482384832) finish=103.3min speed=77533K/sec
      
unused devices: <none>

DebianとWindowsの異種環境間でSphinxのドキュメントをGitで管理する。

http://d.hatena.ne.jp/mkouhei/20110521/1305905297
なるほど、めんどくさい(^^;。
今朝、「ドキュメント管理にSphinx使おうかと思いますが、どうでしょう?」と聞かれたのだけど、このへんわかっているのかな?

squeezeにてGingerbreadビルド環境を作成してビルドするの手順

lenny-froyo(ARM)のはこれ。
http://d.hatena.ne.jp/kinneko/20101229/p1
Ubuntu 10.10-froyo(x86)のはこれ。
http://d.hatena.ne.jp/kinneko/20110416/p13


んで、今回は、squeeze-Gingerbreadで。
Debianを使うのは、Ubuntuでやると、X11など余計な物が入りすぎて、メモリの負荷が高くなるから。
ただでさえメモリを要求するAndroidのビルドには、メモリは少しでも空いているほうがいい。


6.0.1a-amd64-netinstでミニマムでインストール(taskselで何も選択しない)。
そう、Gingerbreadは、64bitでしかビルドできなくなったのです。
32bitマシンしかない人は捨てられました...
dorpbearを入れてsshでヘッドレス制御。
152パッケージ。

python

root@build86:~# dpkg -l | grep python 
root@build86:~# 

pythonが入っていない。
へぇ、なくなったんだねぇ。

root@build86:~# apt-get install python

追加パッケージは以下。

libmagic1 amd64 5.04-5 [234 kB]
file amd64 5.04-5 [49.7 kB]
mime-support all 3.48-1 [34.2 kB]
python2.6-minimal amd64 2.6.6-8+b1 [1520 kB]
python2.6 amd64 2.6.6-8+b1 [2455 kB]
python-minimal all 2.6.6-3+squeeze6 [33.8 kB]
python all 2.6.6-3+squeeze6 [168 kB]

Git

root@build86:~# apt-get install git-core

追加パッケージは以下。

openssh-blacklist all 0.4.1 [2125 kB]
openssh-blacklist-extra all 0.4.1 [2127 kB]
less amd64 436-1 [127 kB]  
libdb4.7 amd64 4.7.25-9 [662 kB]
libbsd0 amd64 0.2.0-1 [41.9 kB]
libedit2 amd64 2.11-20080614-2 [71.0 kB]
libgpg-error0 amd64 1.6-1 [43.9 kB]
libgcrypt11 amd64 1.4.5-2 [282 kB]
libtasn1-3 amd64 2.7-1 [63.1 kB]
libgnutls26 amd64 2.8.6-1 [559 kB]
libkeyutils1 amd64 1.4-1 [6942 B]
libkrb5support0 amd64 1.8.3+dfsg-4 [45.7 kB]
libk5crypto3 amd64 1.8.3+dfsg-4 [106 kB]
libkrb5-3 amd64 1.8.3+dfsg-4 [375 kB]
libgssapi-krb5-2 amd64 1.8.3+dfsg-4 [130 kB]
libidn11 amd64 1.15-2 [158 kB]
libsasl2-2 amd64 2.1.23.dfsg1-7 [115 kB]
libldap-2.4-2 amd64 2.4.23-7 [211 kB]
openssh-client amd64 1:5.5p1-6 [934 kB]
patch amd64 2.6-2 [120 kB]
perl-modules all 5.10.1-17 [3482 kB]
perl amd64 5.10.1-17 [4461 kB]
openssl amd64 0.9.8o-4squeeze1 [1059 kB]
ca-certificates all 20090814+nmu2 [153 kB]
libcurl3-gnutls amd64 7.21.0-1 [266 kB]
liberror-perl all 0.17-1 [23.6 kB]
git amd64 1:1.7.2.5-1 [5273 kB]
git-core all 1:1.7.2.5-1 [1326 B]
libsasl2-modules amd64 2.1.23.dfsg1-7 [155 kB]
libxau6 amd64 1:1.0.6-1 [16.8 kB]
libxdmcp6 amd64 1:1.0.3-2 [19.3 kB]
libxcb1 amd64 1.6-1 [44.3 kB]
libx11-data all 2:1.3.3-4 [190 kB]
libx11-6 amd64 2:1.3.3-4 [846 kB]
libxext6 amd64 2:1.1.2-1 [45.3 kB]
libxmuu1 amd64 2:1.0.5-2 [15.6 kB]
rsync amd64 3.0.7-2 [359 kB]
xauth amd64 1:1.0.4-1 [33.6 kB]

一般的なビルド環境に必要なパッケージ

root@build86:~# apt-get install flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl valgrind unzip zlib1g-dev 

追加パッケージは以下。

The following NEW packages will be installed:
  binutils bison build-essential bzip2 cpp cpp-4.4 curl dbus defoma dpkg-dev
  esound-common fakeroot flex fontconfig fontconfig-config g++ g++-4.4 gcc
  gcc-4.4 gdb gdbserver gperf hicolor-icon-theme libaa1 libaa1-dev
  libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl
  libartsc0 libartsc0-dev libasound2 libasound2-dev libasyncns0 libatk1.0-0
  libatk1.0-data libaudio-dev libaudio2 libaudiofile-dev libaudiofile0
  libavahi-client-dev libavahi-client3 libavahi-common-data
  libavahi-common-dev libavahi-common3 libc-dev-bin libc6-dbg libc6-dev
  libcaca-dev libcaca0 libcairo2 libcap2 libcups2 libcurl3 libdatrie1
  libdbus-1-3 libdbus-1-dev libdirectfb-1.2-9 libdirectfb-dev
  libdirectfb-extra libdpkg-perl libdrm-intel1 libdrm-radeon1 libdrm2 libesd0
  libesd0-dev libflac8 libfont-freetype-perl libfontconfig1 libfontenc1
  libfreetype6-dev libgl1-mesa-dev libgl1-mesa-dri libgl1-mesa-glx
  libglib2.0-0 libglib2.0-data libglib2.0-dev libglu1-mesa libglu1-mesa-dev
  libgmp3c2 libgomp1 libgpm2 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common
  libice-dev libice6 libjasper1 libjpeg62 libjpeg62-dev libmpfr4
  libncurses5-dev libogg0 libpango1.0-0 libpango1.0-common libpcre3
  libpixman-1-0 libpng12-0 libpng12-dev libpthread-stubs0
  libpthread-stubs0-dev libpulse-browse0 libpulse-dev libpulse-mainloop-glib0
  libpulse0 libpython2.6 libsdl1.2-dev libsdl1.2debian libsdl1.2debian-alsa
  libslang2-dev libsm-dev libsm6 libsndfile1 libssh2-1 libstdc++6-4.4-dev
  libsvga1 libsvga1-dev libsysfs-dev libsysfs2 libthai-data libthai0 libtiff4
  libtimedate-perl libts-0.0-0 libvorbis0a libvorbisenc2 libwrap0
  libwxbase2.6-0 libwxbase2.6-dev libwxgtk2.6-0 libwxgtk2.6-dev libx11-dev
  libx86-1 libxau-dev libxcb-render-util0 libxcb-render0 libxcb1-dev
  libxcomposite1 libxcursor1 libxdamage1 libxdmcp-dev libxext-dev libxfixes3
  libxfont1 libxft2 libxi6 libxinerama1 libxml2 libxrandr2 libxrender1
  libxt-dev libxt6 libxtst6 libxxf86vm1 linux-libc-dev m4 make manpages-dev
  mesa-common-dev pkg-config sgml-base shared-mime-info tcpd tsconf
  ttf-dejavu-core unzip valgrind wx2.6-headers x-ttcidfont-conf x11-common
  x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-xext-dev
  xfonts-encodings xfonts-utils xml-core xtrans-dev zip zlib1g-dev
0 upgraded, 179 newly installed, 0 to remove and 0 not upgraded.
Need to get 156 MB of archives.
After this operation, 457 MB of additional disk space will be used.

32bit環境でしかビルドできないツールのための互換ライブラリ追加

root@build86:~# apt-get install gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs lib32readline5-dev lib32z1-dev
libc6-i386 amd64 2.11.2-10 [3805 kB]
lib32bz2-1.0 amd64 1.0.5-6 [39.4 kB]
lib32asound2 amd64 1.0.23-2.1 [327 kB]
lib32gcc1 amd64 1:4.4.5-8 [55.2 kB]
lib32ncurses5 amd64 5.7+20100313-5 [345 kB]
lib32stdc++6 amd64 4.4.5-8 [347 kB]
libv4l-0 amd64 0.8.0-1 [105 kB]
lib32v4l-0 amd64 0.8.0-1 [75.7 kB]
lib32z1 amd64 1:1.2.3.4.dfsg-3 [76.1 kB]
ia32-libs amd64 20110310 [34.2 MB]
lib32readline5 amd64 5.2-7 [130 kB]
libc6-dev-i386 amd64 2.11.2-10 [1524 kB]
lib32ncurses5-dev amd64 5.7+20100313-5 [397 kB]
lib32readline5-dev amd64 5.2-7 [121 kB]
lib32gomp1 amd64 4.4.5-8 [24.7 kB]
gcc-4.4-multilib amd64 4.4.5-8 [2331 kB]
g++-4.4-multilib amd64 4.4.5-8 [1008 kB]
g++-multilib amd64 4:4.4.5-1 [826 B]
gcc-multilib amd64 4:4.4.5-1 [820 B]
lib32z1-dev amd64 1:1.2.3.4.dfsg-3 [75.7 kB]

JDK

最近はOpenJDKでもビルドが通るようになったと聞くので、確認を含めてそちらを使うことに。
前に試した時には、Froyoはビルドできなかったけど、そっちは修正されたのかな?要確認。

root@build86:~# apt-get install openjdk-6-jdk
java-common all 0.40 [64.3 kB]
ca-certificates-java all 20100412 [101 kB]
openjdk-6-jre-lib all 6b18-1.8.7-2~squeeze1 [5909 kB]
tzdata-java all 2011d-0squeeze1 [153 kB]
liblcms1 amd64 1.18.dfsg-1.2+b3 [112 kB]
libnspr4-0d amd64 4.8.6-1 [139 kB]
libgif4 amd64 4.1.6-9 [41.7 kB]
libaccess-bridge-java-jni amd64 1.26.2-5 [27.7 kB]
libaccess-bridge-java all 1.26.2-5 [429 kB]
ttf-dejavu-extra all 2.31-1 [3199 kB]
libnss3-1d amd64 3.12.8-1+squeeze1 [1110 kB]
openjdk-6-jre-headless amd64 6b18-1.8.7-2~squeeze1 [25.5 MB]
openjdk-6-jre amd64 6b18-1.8.7-2~squeeze1 [270 kB]
openjdk-6-jdk amd64 6b18-1.8.7-2~squeeze1 [10.9 MB]
icedtea-6-jre-cacao amd64 6b18-1.8.7-2~squeeze1 [376 kB]

sun-javaじゃないので、EULAの画面が出てこないのはいいね。

repoの取得

root@build86:~# mkdir ~/bin
root@build86:~# curl http://android.git.kernel.org/repo > ~/bin/repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 17451  100 17451    0     0   7211      0  0:00:02  0:00:02 --:--:-- 22961
root@build86:~# chmod a+x ~/bin/repo

わたしは、repoにはpathは通さない主義(^^;。
必要な方は、お好みでどうぞ。

リポジトリを既存のものからコピー

既存のものがない場合は次の項目へ。


大量ダウンロードを避けるため、既存のリポジトリから内容をコピーする。
詳細はこのへんにある。
http://d.hatena.ne.jp/kinneko/20110420/p6
http://d.hatena.ne.jp/kinneko/20110420/p7
http://d.hatena.ne.jp/kinneko/20110420/p8


以前に落としたfroyoのものがあったので、今回はそれをコピーして使う。

root@build86:~# mkdir -p gb-x86/.repo
root@build86:~# cp -a froyo-x86/.repo/projects gb-x86/.repo/

リポジトリの初期化

root@build86:~# cd gb-x86/
root@build86:~/gb-x86# ~/bin/repo init -u git://git.android-x86.org/manifest.git -b gingerbread-x86
gpg: keyring `/root/.repoconfig/gnupg/secring.gpg' created
gpg: keyring `/root/.repoconfig/gnupg/pubring.gpg' created
gpg: /root/.repoconfig/gnupg/trustdb.gpg: trustdb created
gpg: key 920F5C65: public key "Repo Maintainer <repo@android.kernel.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1

Getting repo ...
   from git://android.git.kernel.org/tools/repo.git
remote: Counting objects: 1293, done.
remote: Compressing objects: 100% (563/563), done.
remote: Total 1293 (delta 832), reused 1137 (delta 707)
Receiving objects: 100% (1293/1293), 354.54 KiB | 116 KiB/s, done.
Resolving deltas: 100% (832/832), done.
From git://android.git.kernel.org/tools/repo
 * [new branch]      maint      -> origin/maint
 * [new branch]      master     -> origin/master
 * [new branch]      stable     -> origin/stable
 * [new tag]         v1.7.4.3   -> v1.7.4.3
From git://android.git.kernel.org/tools/repo
 * [new tag]         v1.0       -> v1.0
 * [new tag]         v1.0.1     -> v1.0.1
 * [new tag]         v1.0.2     -> v1.0.2
 * [new tag]         v1.0.3     -> v1.0.3
 * [new tag]         v1.0.4     -> v1.0.4
 * [new tag]         v1.0.5     -> v1.0.5
 * [new tag]         v1.0.6     -> v1.0.6
 * [new tag]         v1.0.7     -> v1.0.7
 * [new tag]         v1.0.8     -> v1.0.8
 * [new tag]         v1.0.9     -> v1.0.9
 * [new tag]         v1.1       -> v1.1
 * [new tag]         v1.2       -> v1.2
 * [new tag]         v1.3       -> v1.3
 * [new tag]         v1.3.1     -> v1.3.1
 * [new tag]         v1.3.2     -> v1.3.2
 * [new tag]         v1.4       -> v1.4
 * [new tag]         v1.4.1     -> v1.4.1
 * [new tag]         v1.4.2     -> v1.4.2
 * [new tag]         v1.4.3     -> v1.4.3
 * [new tag]         v1.4.4     -> v1.4.4
 * [new tag]         v1.5       -> v1.5
 * [new tag]         v1.5.1     -> v1.5.1
 * [new tag]         v1.6       -> v1.6
 * [new tag]         v1.6.1     -> v1.6.1
 * [new tag]         v1.6.10    -> v1.6.10
 * [new tag]         v1.6.10.1  -> v1.6.10.1
 * [new tag]         v1.6.10.2  -> v1.6.10.2
 * [new tag]         v1.6.2     -> v1.6.2
 * [new tag]         v1.6.3     -> v1.6.3
 * [new tag]         v1.6.4     -> v1.6.4
 * [new tag]         v1.6.5     -> v1.6.5
 * [new tag]         v1.6.6     -> v1.6.6
 * [new tag]         v1.6.7     -> v1.6.7
 * [new tag]         v1.6.7.1   -> v1.6.7.1
 * [new tag]         v1.6.7.2   -> v1.6.7.2
 * [new tag]         v1.6.7.3   -> v1.6.7.3
 * [new tag]         v1.6.7.4   -> v1.6.7.4
 * [new tag]         v1.6.7.5   -> v1.6.7.5
 * [new tag]         v1.6.8     -> v1.6.8
 * [new tag]         v1.6.8.1   -> v1.6.8.1
 * [new tag]         v1.6.8.10  -> v1.6.8.10
 * [new tag]         v1.6.8.11  -> v1.6.8.11
 * [new tag]         v1.6.8.2   -> v1.6.8.2
 * [new tag]         v1.6.8.3   -> v1.6.8.3
 * [new tag]         v1.6.8.4   -> v1.6.8.4
 * [new tag]         v1.6.8.5   -> v1.6.8.5
 * [new tag]         v1.6.8.6   -> v1.6.8.6
 * [new tag]         v1.6.8.7   -> v1.6.8.7
 * [new tag]         v1.6.8.8   -> v1.6.8.8
 * [new tag]         v1.6.8.9   -> v1.6.8.9
 * [new tag]         v1.6.9     -> v1.6.9
 * [new tag]         v1.6.9.1   -> v1.6.9.1
 * [new tag]         v1.6.9.2   -> v1.6.9.2
 * [new tag]         v1.6.9.3   -> v1.6.9.3
 * [new tag]         v1.6.9.4   -> v1.6.9.4
 * [new tag]         v1.6.9.5   -> v1.6.9.5
 * [new tag]         v1.6.9.6   -> v1.6.9.6
 * [new tag]         v1.6.9.7   -> v1.6.9.7
 * [new tag]         v1.6.9.8   -> v1.6.9.8
 * [new tag]         v1.7       -> v1.7
 * [new tag]         v1.7.1     -> v1.7.1
 * [new tag]         v1.7.2     -> v1.7.2
 * [new tag]         v1.7.3     -> v1.7.3
 * [new tag]         v1.7.3.1   -> v1.7.3.1
 * [new tag]         v1.7.4     -> v1.7.4
 * [new tag]         v1.7.4.1   -> v1.7.4.1
 * [new tag]         v1.7.4.2   -> v1.7.4.2
Getting manifest ...
   from git://git.android-x86.org/manifest.git
remote: Counting objects: 549, done.
remote: Compressing objects: 100% (282/282), done.
remote: Total 549 (delta 211), reused 353 (delta 128)
Receiving objects: 100% (549/549), 134.38 KiB | 103 KiB/s, done.
Resolving deltas: 100% (211/211), done.
From git://git.android-x86.org/manifest
 * [new branch]      android-x86-1.6 -> origin/android-x86-1.6
 * [new branch]      android-x86-2.2 -> origin/android-x86-2.2
 * [new branch]      android-x86-v0.9 -> origin/android-x86-v0.9
 * [new branch]      donut-x86  -> origin/donut-x86
 * [new branch]      eclair-x86 -> origin/eclair-x86
 * [new branch]      froyo-x86  -> origin/froyo-x86
 * [new branch]      gingerbread-x86 -> origin/gingerbread-x86
 * [new branch]      master     -> origin/master
 * [new branch]      mirror     -> origin/mirror

Your Name  [root]: kinneko
Your Email [root@build86.(none)]: kinneko@gmail.com

Your identity is: kinneko <kinneko@gmail.com>
is this correct [y/n]? y

Testing colorized output (for 'repo diff', 'repo status'):
  black    red      green    yellow   blue     magenta   cyan     white 
  bold     dim      ul       reverse 
Enable color display in this user account (y/n)? y

repo initialized in /root/gb-x86

x86でない本家リポジトリを使いたい場合は、以下のようにする。

# ~/bin/repo init -u git://android.git.kernel.org/platform/manifest.git -b [落としたいリポジトリ]

リポジトリの取得

結構な時間がかかります。
8スレッド同時進行で行った。
ゼロから落とす場合は、ネットの環境や先方のサーバー負荷を考えてどうぞ。

root@build86:~/gb-x86# ~/bin/repo sync -j8
remote: Counting objects: 17, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 9 (delta 7), reused 0 (delta 0)
remote: Counting objects: 44, done.
remote: Compressing objects: 100% (12/12), done.
Unpacking objects: 100% (9/9), done.
From git://git.android-x86.org/device/asus/eeepc
   3139a8a..99453e7  froyo-x86  -> x86/froyo-x86
   fd25666..c9ef0a7  gingerbread-x86 -> x86/gingerbread-x86
Fetching projects:   0% (1/164)  remote: Total 26 (delta 13), reused 25 (delta 12)
remote: Counting objects: 193, done.
remote: Compressing objects: 100% (47/47), done.
Unpacking objects: 100% (26/26), done.
From git://git.android-x86.org/platform/bootable/newinstaller
   549c505..48ede35  froyo-x86  -> x86/froyo-x86
(略)

これがでたら終わり。

Syncing work tree: 100% (164/164), done.  

ビルドテスト

Gingerbreadでは、targetで使えるものは、まだ"build/target/board/generic_x86"しかないので、これをビルドする。
RAM 4Gなので、同時並列実行は4スレッドに。

root@build86:~/gb-x86# time make usb_img -j4 TARGET_PRODUCT=generic_x86 2>&1 | tee make.log
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.4
TARGET_PRODUCT=generic_x86
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=x86
TARGET_ARCH_VARIANT=x86
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GRJ22
============================================
Checking build tools versions...

今回は、x86リポジトリを使ったので、kernelもいっしょにビルドされる。
ARM環境の場合は、kernelは別に用意する必要がある。


ビルドオプションなどの指定はご自由に。
最近のブームは、このへん?
http://d.hatena.ne.jp/kinneko/20110429/p13
http://d.hatena.ne.jp/kinneko/20110508/p20


できあがり。

I/diskutils( 4188): Writing RAW image 'out/target/product/generic_x86/usb_tmp.img' to 'out/target/product/generic_x86/generic_x86_usb.img' (offset=1048576)
I/diskutils( 4188): Wrote 204275712 bytes to out/target/product/generic_x86/generic_x86_usb.img @ 1048576
Updated usb_boot length to be 199488KB
Copying images to specified partition offsets
File edit complete. Wrote 1 images.

real	54m24.995s
user	101m30.245s
sys	6m1.739s
root@build86:~/gb-x86# ls -lh out/target/product/generic_x86/generic_x86_usb.img 
-rw-r--r-- 1 root root 196M May 27 18:14 out/target/product/generic_x86/generic_x86_usb.img

USBメモリに書き込み。

root@build86:~/gb-x86# dd if=out/target/product/generic_x86/generic_x86_usb.img of=/dev/sdg
401024+0 records in
401024+0 records out
205324288 bytes (205 MB) copied, 61.9352 s, 3.3 MB/s


できたARMのROMイメージの焼きこみとか、インストールイメージの作成とかは、環境によって違うのだから、自分で調べてね〜。
x86の場合はisoやusb用のイメージが生成されるから、楽ではあるよね。