MeeGO

色々と微妙な所がありつつも作業着手。

mic2

sources.list なナニですが、11.x な URL がありませんでしたので下記を指定してトライ。って update したら以下なエラーが出た。

W: GPG error: http://repo.meego.com  Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0BC7BEC479FC1F8A

GPG なソレってどうやって取得するのだったか。
スルーで -s で install なコマンド実行できたみたいなので大丈夫と見て良いのかどうか。とりあえず以下を実行。

$ sudo sh -c "gpg --armor --export 0BC7BEC479FC1F8A | apt-key add -"

メセジ的にはあまり芳しくありませんでしたが update にリトライしてみたら駄目でした。どうもこのあたりというか突っ込んだあたりが微妙なのが非常にアレ。
debian-archive-keyring というパケジを入れよ、という情報がありましたので導入してみてリトライしましたが駄目。
gpg コマンドで以下を投入。

$ sudo gpg --import /usr/share/keyrings/debian-archive-keyring.gpg
$ sudo gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg
$ sudo apt-get update

改善せず。以下?

$ wget -q “http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x0BC7BEC479FC1F8A″ -O- | sudo apt-key add -

500 が戻ってきている模様。面倒なのでスルーでパケジ導入しよ。

$ sudo apt-get install mic2

導入終了

イメージを作るための .ks なファイルがパケジに同梱されているという記述でしたが、同梱されてはおりませんでした。ググッたらココにありましたので取得して以下を kickoff したんですが run-mode が駄目って叱られる。

$ sudo LANG=C mic-image-creator -c ./Meego-handset-armv7l-nexusone-1.1.ks -f loop --run-mode=0 --arch=armv7l
MIC2 version: 0.24.6
[main]
use_comps=0
default_ks=default.ks
cachedir=/var/tmp/cache
distro_name=MeeGo
image_format=livecd
outdir=.
tmpdir=/var/tmp
run_mode=1



Local linux distribution:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.10
DISTRIB_CODENAME=maverick
DISTRIB_DESCRIPTION="Ubuntu 10.10"

Ubuntu 10.10 \n \l


Local Kernel version: 2.6.35-22-generic

Error: For non-Fedora and non-MeeGo systems, run mode must be 1

$

ええと -f な引数って何だろ。ディスクイメージ作っとかないと駄目なのかな。1G くらいあれば良い?
man 見たら違ってました。フォーマットの指定なので loop で良いらしい。がしかし、--run-mode とか man に出てないorz arch も無いですね。
とりあえず run-mode の指定を抜いてコマンドを再度 kickoff したらなんとなく動いている様子ですがどうなるか。。

失敗

ええと末端部分のみですが以下。

Retrieving http://repo.meego.com/MeeGo/releases/1.1/non-oss/repos/armv7l/packages//repodata/repomd.xml.key ...OK
Retrieving http://repo.meego.com/MeeGo/updates/1.1/core/repos/armv7l/packages//repodata/repomd.xml ...OK
Retrieving http://repo.meego.com/MeeGo/updates/1.1/core/repos/armv7l/packages//repodata/22f2bbe372ef26e88015a53c6110671fcc77a1ebcac282d00e6f4c1d95e8a2f7-primary.xml.gz ...OK
Retrieving http://repo.meego.com/MeeGo/updates/1.1/core/repos/armv7l/packages//repodata/repomd.xml.key ...OK

Error: failed to create image : URLGrabber error: [Errno 14] HTTP Error 404: Not Found: http://repo.meego.com/MeeGo/updates/1.1/handset/repos/armv7l/packages//repodata/repomd.xml

もう何してるのかも分かってなかったりorz
というか上記は kickstart なナニが微妙なのか。

$ grep 'repo.meego.com' Meego-handset-armv7l-nexusone-1.1.ks 
repo --name=core     --baseurl=http://repo.meego.com/MeeGo/releases/1.1/core/repos/armv7l/packages/ --save --debuginfo --source --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-meego01
repo --name=handset  --baseurl=http://repo.meego.com/MeeGo/releases/1.1/handset/repos/armv7l/packages/ --save --debuginfo --source --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-meego01
repo --name=non-oss  --baseurl=http://repo.meego.com/MeeGo/releases/1.1/non-oss/repos/armv7l/packages/ --save --debuginfo --source --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-meego01
repo --name=updates-core     --baseurl=http://repo.meego.com/MeeGo/updates/1.1/core/repos/armv7l/packages/ --save --debuginfo --source --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-meego01
repo --name=updates-handset  --baseurl=http://repo.meego.com/MeeGo/updates/1.1/handset/repos/armv7l/packages/ --save --debuginfo --source --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-meego01
repo --name=updates-non-oss  --baseurl=http://repo.meego.com/MeeGo/updates/1.1/non-oss/repos/armv7l/packages/ --save --debuginfo --source --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-meego01
$

ええと、1.1/handset か。ブラウザで確認してみます。ええと必要なのは

  • core/repos/armv7l/packages
  • handset/repos/armv7l/packages
  • non-oss/repos/armv7l/packages

で良いのかな。
http://repo.meego.com/MeeGo/updates/1.1/handset/repos/armv7l/packages//repodata/repomd.xml
は存在してるみたいなのですが、って思ったら MeeGo/updates/1.1 だな。たしかに updates 配下には handset は無いな。コメントアウトで逃げるか。

リトライ

non-oss も NG って言われたorz
non-oss/repos の中に armv7l が無い模様。これもコメントアウト。でリトライを kickoff して当分別なことしてたのですが、見てみたら異常終了してる。

Generating primary.sqlite from primary.xml for repo updates-core with arch i686...

Error: Please specify main repo name using --mainrepo option.
    • help の該当部分が以下なんですが
    --mainrepo=MAINREPO
                        Specify main repo name, it must be a repo name in your
                        kickstart file

むむ。このあたりなのかな。

repo --name=core
repo --name=handset  
repo --name=non-oss  
repo --name=updates-core

どれがメインなんでしょ。core で良いのかな。

$ sudo LANG=C mic-image-creator --config=Meego-handset-armv7l-nexusone-1.1.ks \
--format=loop --arch=armv7l --mainrepo=core

で、以下なエラーがナニ。

Generating primary.sqlite from primary.xml for repo core with arch i686...

Error: Failed to create bootstrap : Please install a statically-linked qemu-arm

うーん。と言いつつ探してみた。

$ apt-cache search qemu-arm-static
qemu-arm-static - dummy transitional package for qemu-kvm-extras-static
qemu-kvm-extras-static - QEMU static user mode emulation binaries (transitional package)
$

むむ。入れてリトライしてみるか。

リトライ中に

端末フリーズ。再起動後、再度コマンド kickoff してます。今、500 ちょいのパケジを download している所みたいです。

終了

一応正常終了した模様。ext3 なイメージができたらしい。2GB くらいあるのかな。これ、loopback で mount して中身を find|cpio でコピれば良いのだろうか。

$ sudo mount meego* /mnt -o loop
$ ls -l /mnt
total 88
dr-xr-xr-x  2 root root  4096 2011-05-09 15:06 bin
dr-xr-xr-x  2 root root  4096 2010-10-01 01:28 boot
drwxr-xr-x  3 root root  4096 2011-05-09 15:04 dev
drwxr-xr-x 63 root root  4096 2011-05-09 15:08 etc
drwxr-xr-x  3 root root  4096 2011-05-09 15:09 home
dr-xr-xr-x 11 root root  4096 2011-05-09 15:09 lib
drwx------  2 root root 16384 2011-05-09 14:38 lost+found
drwxr-xr-x  2 root root  4096 2010-10-01 01:28 media
drwxr-xr-x  2 root root  4096 2010-10-01 01:28 mnt
drwxr-xr-x  2 root root  4096 2010-10-01 01:28 opt
drwxr-xr-x  2 root root  4096 2011-05-09 14:38 proc
dr-xr-x---  2 root root  4096 2011-05-09 15:04 root
dr-xr-xr-x  2 root root  4096 2011-05-09 15:08 sbin
drwxr-xr-x  2 root root  4096 2010-10-01 01:28 srv
drwxr-xr-x  2 root root  4096 2011-05-09 14:38 sys
drwxr-xr-x  3 root root  4096 2011-05-09 15:08 system
drwxrwxrwt  2 root root  4096 2011-05-09 15:08 tmp
drwxr-xr-x 12 root root  4096 2011-05-09 15:09 usr
drwxr-xr-x 17 root root  4096 2011-05-09 15:06 var
$

SDCard 方面の準備も微妙に厄介。

Google 先生から

以下なソレをご紹介頂いた。

ここ見て x でサイズ合わせました。無理矢理アレした結果が以下です。

Command (m for help): p

Disk /dev/sdb: 4023 MB, 4023386112 bytes
124 heads, 62 sectors/track, 1022 cylinders
Units = cylinders of 7688 * 512 = 3936256 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         131      503533    c  W95 FAT32 (LBA)
/dev/sdb2             132         959     3182832   83  Linux

テキスト図 3 とほぼ同じ状態。それぞれの区画をフォーマットして sdb2 にファイルをコピーせんといかんわけか。

コピィ

ええと、とりあえず loopback mount して

$ sudo mount ./meego-Meego-handset-armv7l-nexusone-1.1-1.1.20110509.1425.img ./loop/ -o loop
$ ls loop
bin  boot  dev  etc  home  lib  lost+found  media  mnt  opt  proc  root  sbin  srv  sys  system  tmp  usr  var
$

Linux なパーティションを mount して

$ sudo mount /dev/sdb2 /mnt
$ cd loop
$ sudo su 
# find . |cpio -pdum /mnt

どうなるやら。げ、時間かかってるな。夜は外出予定なのでここでエントリ投入します。

続きのメモ

今日は定時上がりで会食予定なんですが、退社予定時間までに find|cpio が終了しない可能性が非常に高くなってまいりました。なんか手もちぶさただったので Kernel の clone も実施。

$ git clone git://android.git.kernel.org/kernel/msm.git

こちらは時間内に終了しないようであれば強制終了な方向。

clone 完了

branch を checkout しましょう。

 git checkout -b nexusone origin/android-msm-2.6.29-nexusone
fatal: git checkout: updating paths is incompatible with switching branches.
Did you intend to checkout 'origin/android-msm-2.6.29-nexusone' which can not be resolved as commit?
$

あら?

$ git branch
* android-msm-2.6.35
$ git checkout -b nexusone origin/android-msm-2.6.35 
Branch nexusone set up to track remote branch android-msm-2.6.35 from origin.
Switched to a new branch 'nexusone'
$ git branch
  android-msm-2.6.35
* nexusone
$

これで良いのかな。これ以降は明日という事にて。