Category Archives

17 Articles

Linux

jad(Linux on Intel platform)でNo such file or directoryが出たのでstatically linkedにしたら動いた

Posted by dowell on

https://varaneckas.com/jad/

ubuntuの環境でわかりにくかったエラー
ソースを無くしたので、Classファイルをjavaファイルに戻そうと
jadを実行しようとしたら、”jad: No such file or directory”??


root@doroidpanic-ubuntu:/opt/Jad1.5.8e/jad# jad
-bash: /opt/Jad1.5.8e/jad: No such file or directory
root@doroidpanic-ubuntu:/opt/Jad1.5.8e/#
root@doroidpanic-ubuntu:/opt/Jad1.5.8e/# ls -la
-rwxrwxr-x 1 root root 961596 Aug  6  2001 jad

ダウンロードしたのは
「Jad 1.5.8e for Linux on Intel platform (214917 bytes)」でLinux向けは
「Jad 1.5.8e for Linux (statically linked) (389972 bytes)」もあるけど

take this version if the one above crashes or displays the “seek error” message.

とあるので、.soがないとか言ってなからどうなんだろうと思いながら
(statically linked)に変更したら、動いた。。。


root@doroidpanic-ubuntu:/opt/Jad1.5.8e/jad# jad
Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov (kpdus@yahoo.com).
Usage:    jad [option(s)] 
Options: -a       - generate JVM instructions as comments (annotate)
         -af      - output fully qualified names when annotating
         -b       - generate redundant braces (braces)
         -clear   - clear all prefixes, including the default ones

ちなみにVPSはintelだったのでいいと思ったんだけどな。。


root@doroidpanic-ubuntu:$cat /proc/cpuinfo
vendor_id	: GenuineIntel
cpu family	: 6
model		: 62
model name	: Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
Linux

NodeJSでflvからmp4へのエンコード handbrake-jsインストールでエラー (public key is not available)

Posted by dowell on

NodeJsでFlvからエンコードするケースがあったので、ffmpegではなくhandbreakでやってみようとnpmサイトをみながらインストール

handbrake-js
Handbrake-js is Handbrake (v1.1.2) for node.js, funnily enough. It aspires to provide a lean and stable foundation for building video transcoding software in node.js.

HandBrake is a tool for converting video from nearly any format to a selection of modern, widely supported codecs. It can process most common multimedia files and any DVD or BluRay sources that do not contain any copy protection.

https://www.npmjs.com/package/handbrake-js


sudo add-apt-repository --yes ppa:stebbins/handbrake-releases
sudo apt-get update -qq
sudo apt-get install -qq handbrake-cli

The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 23E7166788B63E1E

レポジトリ追加でエラーが発生


Get:17 http://archive.ubuntu.com/ubuntu bionic-updates/main Translation-en [183 kB]
Get:18 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [714 kB]
Get:19 http://archive.ubuntu.com/ubuntu bionic-updates/multiverse amd64 Packages [6388 B]
Fetched 1900 kB in 4s (429 kB/s)
Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://dl.yarnpkg.com/debian stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 23E7166788B63E1E
W: Failed to fetch https://dl.yarnpkg.com/debian/dists/stable/InRelease  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 23E7166788B63E1E

aptの証明書に設定


sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 23E7166788B63E1E
Executing: /tmp/apt-key-gpghome.pxI7v7yeEX/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 23E7166788B63E1E
gpg: key 1646B01B86E50310: "Yarn Packaging " 2 new signatures
gpg: key 1646B01B86E50310: "Yarn Packaging " 2 new subkeys
Linux

OpenSSL(Heartbleed 脆弱性) CentOS6で対策済みバージョンへアップデート( 1.0.1e-16.el6_5.7 )

Posted by dowell on

管理してるサーバーでOpenSSL(Heartbleed 脆弱性) 影響があるかチェックしてみます。


OpenSSLの脆弱性Heartbleedとは?

Heartbleedのバグは、インターネット上の誰もがOpenSSLソフトウェアの脆弱なバージョンで保護されているシステムのメモリを読み取ることができます。これは、サービスプロバイダを識別するために、トラフィックを暗号化するために使用される秘密鍵、ユーザ名とパスワードと実際の内容を損なう。これは、攻撃者が、通信を盗聴サービスとユーザーから直接データを盗み、サービスとユーザーを偽装することができます。

The Heartbleed Bugより

heartbleed

影響を受けるOpenSSLバージョン

  • OpenSSL 1.0.1 through 1.0.1f (inclusive) are vulnerable
  • OpenSSL 1.0.1g is NOT vulnerable
  • OpenSSL 1.0.0 branch is NOT vulnerable
  • OpenSSL 0.9.8 branch is NOT vulnerable

適当なサーバーで見てみたら、CentOSのバージョンによっては対象より低いバージョンでした。

[code language=”bash”]
[000@12345 ~]$ rpm -qa | grep openssl
openssl-devel-1.0.0-25.el6_3.1.x86_64
openssl-1.0.0-25.el6_3.1.x86_64
[/code]

ですがupdatesレポジトリーに修正版の「1.0.1e-16.el6_5.7」がアップされているので、適応しておきます。

[code language=”bash”]
====================================================================================================================================================================
Package Arch Version Repository Size
====================================================================================================================================================================
Updating:
openssl x86_64 1.0.1e-16.el6_5.7 updates 1.5 M
Updating for dependencies:
openssl-devel x86_64 1.0.1e-16.el6_5.7 updates 1.2 M

Transaction Summary
====================================================================================================================================================================
Upgrade 2 Package(s)
[/code]

OpenSSL Heartbleedの対策

修正バージョンへOpenSSLをアップデートして、OpenSSLライブラリ使ってるサービスを再起動!
特定できなければ、OS再起動しましょう。

Red Hatのエラータより

OpenSSLは、セキュア·ソケット·レイヤー(SSLのV2/V3 )を実装するツールキットです
トランスポート層セキュリティ(TLS v1)プロトコルだけでなく、
フル強度、汎用暗号化ライブラリ。

情報開示の欠陥がOpenSSLはTLSを取り扱い、見つかりました
DTLSハート拡張パケット。悪質なTLSまたはDTLSクライアントまたはサーバ
開示することが特別に細工されたTLSまたはDTLSハートビートパケットを送信することができます
接続されたクライアントまたはサーバからの要求あたりのメモリの限られた部分。
メモリの開示された部分は、潜在的に含まれる可能性があることに注意してください
秘密鍵などの重要な情報。 (CVE-2014 – 0160 )

Red Hatはこの問題の報告ためにOpenSSLプロジェクトに感謝したいと思います。
アップストリームは、元のようにGoogleのセキュリティのネールメータを認める
記者。

すべてのOpenSSLのユーザは、これらのアップデートパッケージにアップグレードしてくださいいる
この問題を修正するバックポートパッチを含む。更新が反映するために
効果、などのhttpdやその他などのOpenSSLライブラリにリンクされているすべてのサービス(
SSL対応のサービス)を再起動しなければならないか、システムをリブート。


Red Hatのエラータ情報はコチラhttps://rhn.redhat.com/errata/RHSA-2014-0376.html


Linux

再編集:ChromeOSをUbuntuでビルドしてUSBでブートする-(VAIOのVirtualBoxでChromeOSをビルドしたので時間がかかった)

Posted by dowell on

まずはビルド環境としてUbuntuの64bit版を必要があるので、VirtualBoxにインストール
親機がVAIOのVPCZ1なのでIntelVTも使えて思った以上にさくさくに動く。

いろんなサイトを参考にしながらスタート。
あまり詳しくわからないが、去年くらいからビルドの方法がかわったっぽい。
tarボールを落としてる人もいれば、repoやgclientの人もいる。
公式サイトはrepoなので公式をもとにChromeOSのビルドをしてみる。

[code language=”bash”]
repo init -u http://git.chromium.org/chromiumos/manifest.git -m minilayout.xml
[/code]

まずは、gitのインストール

[code language=”bash”]
sudo aptitude install git-core gitk git-gui
[/code]

そもそもaptitudeが入っていなかったのでインストールする。
あと他のブログで画像をみてるとcurlを使ってそうなのでインストール

[code language=”bash”]
sudo apt-get install aptitude curl
[/code]

ChromeOSのビルドに必要なもろもろが纏められているのでそれらを配置して実行

[code language=”bash”]
wget http://src.chromium.org/svn/trunk/src/build/install-build-deps.sh
sudo sh install-build-deps.sh
svn co http://src.chromium.org/svn/trunk/tools/depot_tools
export PATH=$PATH:~/depot_tools
[/code]

gclientではなくrepoを使うので、repoのインストール

[code language=”bash”]
sudo su –
curl http://android.git.kernel.org/repo > /usr/bin/repo
chmod a+x /usr/bin/repo
[/code]

本家にならって、ディレクトリ作成し、ChromeOSのソースを取得します。
repo initが完了したら、repo syncで取得を行う。(30分くらいで完了)

[code language=”bash”]
mkdir -p ${HOME}/chromiumos
cd ${HOME}/chromiumos
repo init -u http://git.chromium.org/chromiumos/manifest.git -m minilayout.xml
repo sync
[/code]

repo init で何回か失敗しましたが、.repoディレクトリを消してやり直してたら上手くいきました。

[code language=”bash”]
Initializing project chromiumos/overlays/portage-stable …
remote: Counting objects: 212, done.
remote: Compressing objects: 100% (162/162), done.
remote: Total 212 (delta 32), reused 170 (delta 26)
Receiving objects: 100% (212/212), 123.14 KiB | 97 KiB/s, done.
Resolving deltas: 100% (32/32), done.
From http://git.chromium.org/chromiumos/overlays/portage-stable
* [new branch] 0.12.362.B -> cros/0.12.362.B
* [new branch] 0.12.369.B -> cros/0.12.369.B
* [new branch] 0.12.392.B -> cros/0.12.392.B
* [new branch] 0.12.433.B -> cros/0.12.433.B
* [new branch] 0.13.434.B -> cros/0.13.434.B
* [new branch] 0.13.509.B -> cros/0.13.509.B
* [new branch] 0.13.558.B -> cros/0.13.558.B
* [new branch] master -> cros/master
Fetching projects: 100% (10/10), done.
Checking out files: 100% (1718/1718), done.
Checking out files: 100% (89225/89225), done.files: 12% (11414/89225)
Syncing work tree: 100% (10/10), done.
Your sources have been sync’d successfully.
yuta@yuta-VirtualBox:~/chromiumos$
[/code]

途中で名前やメールアドレスを聞かれますが、適当に入力しました。
また、カラー表示の質問があるので基本「y」入力で答えます。

ソース取得も完了したので、ビルド用のchroot環境の作成に入ります。
これが結構ながくて、また30分くらい待ちました。

まえにUbuntuが手元になかったので、ServerManVPSをUbuntuに再セットアップして試しましたが
まさかのUbuntu32bit選択という落ちで、ここでamd_64じゃないって怒られました。

[code language=”bash”]
yuta@yuta-VirtualBox:~/chromiumos/src/scripts$ ./make_chroot
These are the packages that would be merged, in order:
These are the packages that would be merged, in order:
Calculating dependencies
Fetching bininfo from http://commondatastorage.googleapis.com/chromeos-prebuilt/host/amd64/binary-26.05.11.082024/packages/ http://commondatastorage.googleapis.com/chromeos-prebuilt/host/amd64/full-26.05.11.094812/packages/
!!! Error connecting to ‘http://commondatastorage.googleapis.com/chromeos-prebuilt/host/amd64/binary-26.05.11.082024/packages/ http://commondatastorage.googleapis.com/chromeos-prebuilt/host/amd64/full-26.05.11.094812/packages/’.
!!! Unable to get listing: 400 Server did not respond successfully (400: Bad Request)
Pending 5, Ready 1, Running 1, Retrying 0, Total 211 [Time 13m6.2s Load 0.92 0.85 0.63]
Started virtual/perl-File-Spec-3.30 (logged in /tmp/perl-File-Spec-3.30-cxOyXu)
Completed virtual/perl-ExtUtils-ParseXS-2.20.0401 (in 0m3.9s)
・・・・・
[/code]

完了したら、ビルド用のchroot環境に入ります。

[code language=”bash”]
yuta@yuta-VirtualBox:~/chromiumos/src/scripts$ ./enter_chroot.sh
(cros-chroot) yuta@yuta-VirtualBox ~/trunk/src/scripts $ ./setup_board –board=x86-generic –default
Total: 1 package (1 new, 1 binary), Size of downloads: 0 kB
Portage tree and overlays:
[0] /usr/portage
[?] indicates that the source repository could not be determined
>>> Emerging binary (1 of 1) cross-i686-pc-linux-gnu/glibc-2.10.1-r2 from unknown repo
[/code]

「Initialize the build for a board」ボードターゲットを設定します。
これはそんなにかかりませんでした。

[code language=”bash”]
(cros-chroot) yuta@yuta-VirtualBox ~/trunk/src/scripts $ ./setup_board –board=x86-generic –default

[/code]

やっとここまでで、パッケージのビルド

[code language=”bash”]
(cros-chroot) yuta@yuta-VirtualBox ~/trunk/src/scripts $ ./build_packages
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Pending 2, Ready 0, Running 1, Retrying 0, Total 418 [Time 40m49.3s Load 0.54 1.12 0.94]
Pending 2, Ready 0, Running 1, Retrying 0, Total 418 [Time 40m54.3s Load 0.50 1.11 0.94]
Still building autotest-tests-ownershipapi-0.0.1-r194 (2m3.9s). Logs in /tmp/autotest-tests-ownershipapi-0.0.1-r194-WeKa5u
Pending 2, Ready 0, Running 1, Retrying 0, Total 418 [Time 41m4.3s Load 0.50 1.09 0.93]
Pending 2, Ready 0, Running 1, Retrying 0, Total 418 [Time 41m9.3s Load 0.54 1.08 0.93]
Pending 2, Ready 0, Running 1, Retrying 0, Total 418 [Time 41m14.3s Load 0.58 1.08 0.93]
Completed chromeos-base/autotest-tests-ownershipapi-0.0.1-r194 (in 2m22.1s)
Pending 1, Ready 1, Running 0, Retrying 0, Total 418 [Time 41m17.4s Load 0.53 1.06 0.93]
Started chromeos-base/autotest-all-0.0.1-r4 (logged in /tmp/autotest-all-0.0.1-r4-tJaoQX)
Completed chromeos-base/autotest-all-0.0.1-r4 (in 0m3.5s)
Pending 0, Ready 0, Running 0, Retrying 0, Total 418 [Time 41m21.0s Load 0.53 1.06 0.93]
Merge complete
Adding chromeos-base/chromeos to world
Adding chromeos-base/chromeos-dev to world
Adding chromeos-base/chromeos-factoryinstall to world
Adding chromeos-base/factorytest-init to world
Adding chromeos-base/chromeos-test to world
Adding chromeos-base/autotest-all to world
Done
Builds complete
Elapsed time: 41m40s
Done
(cros-chroot) yuta@yuta-VirtualBox ~/trunk/src/scripts $
[/code]

イメージをビルドします。

[code language=”bash”]
cros-chroot) yuta@yuta-VirtualBox ~/trunk/src/scripts $ ./build_image
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
INFO : Running /home/yuta/trunk/src/scripts/generate_au_zip.py -o /home/yuta/trunk/src/build/images/x86-generic/0.13.563.2011_06_02_0128-a1 for generating AU updater zip file
2011/06/02 01:46:51 – generate_au_zip.py – ERROR : file = /home/yuta/trunk/src/platform/vboot_reference/scripts/image_signing/convert_recovery_to_ssd.sh does not exist
Failed generating AU zip file – ignoring Error…
Done. Image created in /home/yuta/trunk/src/build/images/x86-generic/0.13.563.2011_06_02_0128-a1
Chromium OS image created as chromiumos_base_image.bin
Developer image created as chromiumos_image.bin
Elapsed time: 18m25s
To copy to USB keyfob, do something like:
./image_to_usb.sh –from=../build/images/x86-generic/0.13.563.2011_06_02_0128-a1 –to=/dev/sdX
To convert to VMWare image, INSIDE the chroot, do something like:
./image_to_vm.sh –from=../build/images/x86-generic/0.13.563.2011_06_02_0128-a1 –board=x86-generic
from the scripts directory where you entered the chroot.
(cros-chroot) yuta@yuta-VirtualBox ~/trunk/src/scripts $
[/code]

完了しました、下記ディレクトリにイメージが出来上がったので次はUSBに書き込んで起動確認します。

[code language=”bash”]
~/chromiumos/src/build/images/x86-generic
[/code]

Linux

CentOS 6.4でオンラインストレージ「Box」をWebDAV(davfs2)マウント:rpmforgeからfstab設定:LinuxでBoxをマウント編

Posted by dowell on

boxにWebdavでアクセス失敗して困っている人へ

boxにWebdavでアクセス失敗する人はURLを確認してください。
「https://www.box.com/dav」と「https://app.box.com/dav」ではアクセスできませんでした。
「https://dav.box.com/dav」です。

Nexus 5でもBoxで50GBプレゼントキャンペーン

iPhoneで50GBの容量をGETできると話題のオンラインストレージBoxですが、とりあえずNexus 5でBoxのアプリを入れてみたらLGのデバイスでも50GBプレゼントキャンペーンが適応されました。

思わぬところで50GBのオンラインストレージが手に入ったので、VPSのファイルバックアップ先としてWebDAV利用してみます。

試した環境は「さくらのVPS 2G」と「ServersMan@VPS」です。

rpmforgeのインストールからfstab設定

まずはdavfs2が必要なのでrpmforgeからインストールします。

[code language=”bash”]
[root@vp52 ~]# rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt
[root@vp52 ~]# rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm を取得中
準備中… ########################################### [100%]
1:rpmforge-release ########################################### [100%]
[root@vp52 ~]#
[/code]

davfs2をインストールします。

[code language=”bash”]
[root@vp52 ~]# yum install -y davfs2
Loaded plugins: fastestmirror
・・・・・・・・・・・・・
・・・・・・・・・・・・・省略・・・・・・・・・・・・・
・・・・・・・・・・・・・
Dependencies Resolved
===============================================================================================================
Package Arch Version Repository Size
===============================================================================================================
Installing:
davfs2 x86_64 1.4.6-1.el6.rf rpmforge 218 k
Installing for dependencies:
libproxy x86_64 0.3.0-4.el6_3 base 39 k
libproxy-bin x86_64 0.3.0-4.el6_3 base 8.2 k
libproxy-python x86_64 0.3.0-4.el6_3 base 8.4 k
neon x86_64 0.29.3-3.el6_4 base 119 k
pakchois x86_64 0.4-3.2.el6 base 21 k
Transaction Summary
===============================================================================================================
Install 6 Package(s)
・・・・・・・・・・・・・
・・・・・・・・・・・・・省略・・・・・・・・・・・・・
・・・・・・・・・・・・・
Installed:
davfs2.x86_64 0:1.4.6-1.el6.rf
Dependency Installed:
libproxy.x86_64 0:0.3.0-4.el6_3 libproxy-bin.x86_64 0:0.3.0-4.el6_3 libproxy-python.x86_64 0:0.3.0-4.el6_3
neon.x86_64 0:0.29.3-3.el6_4 pakchois.x86_64 0:0.4-3.2.el6
Complete!
[root@vp52 ~]#
[/code]

Boxをマウントするディレクトリを作成します。


[code language=”bash”]
[root@vp52 ~]# mkdir /var/box
[/code]

とりあえずBoxをマウントできるかテスト



[code language=”bash”]
[root@vp52 ~]# mount -t davfs https://www.box.com/dav /var/box/
Please enter the username to authenticate with server
https://www.box.com/dav or hit enter for none.
Username: *******@gmail.com
Please enter the password to authenticate user *******@gmail.com with server
https://www.box.com/dav or hit enter for none.
Password:
/sbin/mount.davfs: Mounting failed.
302 Found
[root@vp52 ~]#
[/code]

Boxのwebdavのマウント失敗。。。
302 Foundリダイレクトされてる??
ブラウザで確認してみると、https://www.box.com/davからhttps://app.box.com/davへリダイレクトされていました。
https://www.box.com/davは古いのかな?

app.box.comでマウントの再チャレンジ


[code language=”bash”]
[root@vp52 ~]# mount -t davfs https://app.box.com/dav /var/box/
/sbin/mount.davfs: Mounting failed.
404 Not Found
[root@vp52 ~]#
[/code]

app.box.comでもwebdavのマウントできませんでした。。。
今度は404 Not Found
ここまで来て始めてBoxのオンラインヘルプページを見てアクセスURLが「https://dav.box.com/dav」だということを知る。

[code language=”bash”]
[root@vp52 ~]# mount -t davfs https://dav.box.com/dav /var/box/
Please enter the username to authenticate with server
https://dav.box.com/dav or hit enter for none.
Username: *******@gmail.com
Please enter the password to authenticate user *******@gmail.com with server
https://dav.box.com/dav or hit enter for none.
Password:
[root@vp52 ~]#
[/code]

BoxをWebDAVマウントできた。

Boxのアカウント情報davfs2に設定する。



[code language=”bash”]
[root@vp52 ~]# vi /etc/davfs2/secrets

# /home/otto/.davfs2/certs/private/otto.crt geheim
# otto_private.crt "this is extraordinary secret"
# "otto private.crt" this\ is\ secret,\ too.
https://dav.box.com/dav メールアドレス パスワード
[/code]

ロックファイルを作らないようにdavfs2.confuse_locksを0に設定する。



[code language=”bash”]
[root@vp52 ~]# cat /etc/davfs2/davfs2.conf
# use_locks 1
use_locks 0
# lock_owner <user-name>
[/code]

Boxを自動でマウントしたいのでfstabへ記載する。


[code language=”bash”]
[root@vp52 ~]# cat /etc/fstab
none /dev/pts devpts rw,gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
https://dav.box.com/dav /var/box davfs rw,user,noauto 0 0
[root@vp52 ~]#
[/code]

※マウントに失敗した理由※
Box.comのWebDAVのURLはいろいろなブログで「https://www.box.com/dav」、「https://app.box.com/dav」など紹介されていましたが、自分がマウント成功したのは「https://dav.box.com/dav」でした。

Linux/mysql

mysqlのリカバリーでmysqlbinlog: unknown variable ‘default-character-set=utf8’

Posted by dowell on

mysqlがクラッシュして、binlogを確認しようとしたら

[root@cl.051.db ~]# mysqlbinlog /var/mysqld/mybin-log.000121
mysqlbinlog: unknown variable 'default-character-set=utf8'
[root@cl.051.db ~]# 

my.cnfの[client]にdefault-character-setが指定されていることが原因のようなので下記のコマンドにしたら、OKだった。

[root@cl.051.db ~]#mysqlbinlog --no-defaults /var/mysqld/mybin-log.000121

Linux

CentOS6.2にサーバ仮想化ソフトOpenVZをインストール

Posted by dowell on

VPSやレンタルサーバを借りてると、Parallels Virtuozzo(OpenVZの有料版)が使われてる機会が多いので
centos6.2にサーバ仮想化ソフトOpenVZをインストールして試してみました。

centos6.2にサーバ仮想化ソフトOpenVZをインストールして試してみました。

まずはopenvzのレポジトリ(openvz.repo)を追加します。

次にOpenVZ用のカーネルなどを(openvz.repo)からインストール。

これでOpenVZ対応のカーネルがインストールされているはずなのでgrub.confを見てみる。

ちゃんと(2.6.32-042stab044.11)になってる、が1/18日に最新版がでていた(2.6.32-042stab044.17)、一応アップデート

Android/Linux

Ubuntu 10.04.3 LTSでAndroidのOSをビルド

Posted by dowell on

AndroidのOSをビルドをしてみた。

マシンが余ったので、Ubuntu 10.04.3LTS(2.6.32-35-generic)をインストールしてAndroidのOSをビルドしてみた。
chromeOSのビルドをしたときもそうですが、yum、aptで育ったのでmakeは苦手です。
androidOSのビルドもrepoやgitは見よう見まねなところがあります。

Androidをビルドするマシンを準備

Android4.0のビルドは16GBのメモリを必要とか噂が出てますが、android2系と3系をとりあえずビルドして
エミュレータで動かしてみたいのが目的なので、PenDのメモリ2GマシンにUbuntu 10.04.3 LTSをUNetbootinを使ってUSBからインストールします。
GUIでは特に設定はせず、後でまとめてapt-getします。

AndroidOSビルドに必要なパッケージのインストール

何度もビルド中にエラーとなり調べると、-m32オプションがあるので、32bitライブラリも必要とのこと。
後になって足りなくなったりしたので、Androidビルドに必要なパッケージは重複してるかもしれません。

[sourcecode language=”bash”]
sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
sudo apt-get install libreadline5-dev
sudo apt-get install lib32z1-dev lib32ncurses5-dev
sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse"
sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ hardy-updates multiverse"
sudo apt-get update
sudo apt-get install sun-java5-jdk
sudo apt-get install sun-java6-jdk
[/sourcecode]

gitやrepoの設定

何度もビルド中にエラーとなり調べると、-m32オプションがあるので、32bitライブラリも必要とのこと。
後になって足りなくなったりしたので、Androidビルドに必要なパッケージは重複してるかもしれません。

[sourcecode language=”bash”]
mkdir ~/bin
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
[/sourcecode]

bashrcへ忘れずに書き込む

[sourcecode language=”bash”]
export PATH=$PATH:~/bin
[/sourcecode]

ava-1.5.0-sunでエラーが連発していたのでjava-6-sunへ切り替えました。

[sourcecode language=”bash”]
sudo update-alternatives –config java
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path 優 Status
————————————————————
0 /usr/lib/jvm/java-6-sun/jre/bin/java 63 auto mode
1 /usr/lib/jvm/java-1.5.0-sun/jre/bin/java 53 manual mode
* 2 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode
[/sourcecode]

bashrcにも書いておきます。

[sourcecode language=”bash”]
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export ANDROID_JAVA_HOME=$JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH
[/sourcecode]

メールアドレスとユーザ名を入力します。(何でも良い)

[sourcecode language=”bash”]
git config –global user.email "root@doroidpanic.com"
git config –global user.name "doroidpanic.com"
[/sourcecode]

Androidのソースを取得

Androidのソースを取得
repo initは時間もあるので、バージョン指定のタグをつけずに行ないます。

[sourcecode language=”bash”]
doroidpanic@localhost:~/doroidpanic$mkdir doroidpanic
doroidpanic@localhost:~/doroidpanic$cd doroidpanic
doroidpanic@localhost:~/doroidpanic$repo init -u https://android.googlesource.com/platform/manifest
doroidpanic@localhost:~/doroidpanic$repo sync -j4
remote: Counting objects: 15, done
remote: Finding sources: 100% (13/13)
remote: Getting sizes: 120% (6/5)
remote: Compressing objects: 100% (3/3)
remote: Total 13 (delta 2), reused 13 (delta 2)
Unpacking objects: 100% (13/13), done.
From https://android.googlesource.com/platform/prebuilt
* [new branch] eclair-passion-release -> aosp/eclair-passion-release
* [new branch] eclair-release -> aosp/eclair-release
* [new branch] eclair-sholes-release -> aosp/eclair-sholes-release

doroidpanic@localhost:~/doroidpanic$source build/envsetup.sh
including device/htc/passion/vendorsetup.sh
including device/samsung/crespo/vendorsetup.sh
including device/samsung/crespo4g/vendorsetup.sh
including sdk/bash_completion/adb.bash

doroidpanic@localhost:~/doroidpanic$ lunch generic-eng
============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=3.1.4.1.5.9.2.6.5
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
============================================

[/sourcecode]

指定してrepo initする人はこんな感じです。

[sourcecode language=”bash”]
repo init -u https://android.googlesource.com/platform/manifest -b android-2.3_r1
[/sourcecode]

また、なんどか試していると「期待してない token `newline’ のあたりにシンタックスエラー」と表示されたので、潔くrepoを削除して、やり直しました。
initするときに表示されたので、タグはこれらがあるみたいです。

[sourcecode language=”bash”]
* [new branch] android-1.6_r1 -> origin/android-1.6_r1
* [new branch] android-1.6_r1.1 -> origin/android-1.6_r1.1
* [new branch] android-1.6_r1.2 -> origin/android-1.6_r1.2
* [new branch] android-1.6_r1.3 -> origin/android-1.6_r1.3
* [new branch] android-1.6_r1.4 -> origin/android-1.6_r1.4
* [new branch] android-1.6_r1.5 -> origin/android-1.6_r1.5
* [new branch] android-1.6_r2 -> origin/android-1.6_r2
* [new branch] android-2.0.1_r1 -> origin/android-2.0.1_r1
* [new branch] android-2.0_r1 -> origin/android-2.0_r1
* [new branch] android-2.1_r1 -> origin/android-2.1_r1
* [new branch] android-2.1_r2 -> origin/android-2.1_r2
* [new branch] android-2.1_r2.1p -> origin/android-2.1_r2.1p
* [new branch] android-2.1_r2.1p2 -> origin/android-2.1_r2.1p2
* [new branch] android-2.1_r2.1s -> origin/android-2.1_r2.1s
* [new branch] android-2.2.1_r1 -> origin/android-2.2.1_r1
* [new branch] android-2.2.1_r2 -> origin/android-2.2.1_r2
* [new branch] android-2.2.2_r1 -> origin/android-2.2.2_r1
* [new branch] android-2.2_r1 -> origin/android-2.2_r1
* [new branch] android-2.2_r1.1 -> origin/android-2.2_r1.1
* [new branch] android-2.2_r1.2 -> origin/android-2.2_r1.2
* [new branch] android-2.2_r1.3 -> origin/android-2.2_r1.3
* [new branch] android-2.3.1_r1 -> origin/android-2.3.1_r1
* [new branch] android-2.3.2_r1 -> origin/android-2.3.2_r1
* [new branch] android-2.3.3_r1 -> origin/android-2.3.3_r1
* [new branch] android-2.3.3_r1.1 -> origin/android-2.3.3_r1.1
* [new branch] android-2.3.4_r0.9 -> origin/android-2.3.4_r0.9
* [new branch] android-2.3.4_r1 -> origin/android-2.3.4_r1
* [new branch] android-2.3.5_r1 -> origin/android-2.3.5_r1
* [new branch] android-2.3.6_r0.9 -> origin/android-2.3.6_r0.9
* [new branch] android-2.3.6_r1 -> origin/android-2.3.6_r1
* [new branch] android-2.3.7_r1 -> origin/android-2.3.7_r1
* [new branch] android-2.3_r1 -> origin/android-2.3_r1
[/sourcecode]

AndroidOSをビルド

Androidのビルドを開始してみる。
仮想CPUを入れれば4スレッドなので、j4のオプションを付けてみる。

[sourcecode language=”bash”]
make -j4
[/sourcecode]

まだまだ終わりません、オプション-j4は利いてそうですがPenDの2Gでは荷が重いようです。
そろそろVAIO TypeZをデュアルブートでubuntuインストールしておこうかな。。

[sourcecode language=”bash”]
16519 doroidpanic 20 0 271m 11m 5848 R 13.8 0.6 0:00.42 cc1
16553 doroidpanic 20 0 270m 9660 5456 R 4.9 0.5 0:00.15 cc1
16555 doroidpanic 20 0 270m 9372 5384 R 4.6 0.5 0:00.14 cc1
11478 doroidpanic 20 0 156m 148m 988 S 2.0 7.4 0:41.91 make
16564 doroidpanic 20 0 269m 5500 2848 R 1.6 0.3 0:00.05 cc1
4 root 20 0 0 0 0 S 0.3 0.0 0:01.98 ksoftirqd/0
13505 root 20 0 19224 1376 1028 R 0.3 0.1 0:06.32 top
16516 doroidpanic 20 0 1952 608 520 S 0.3 0.0 0:00.01 arm-eabi-gcc
16551 doroidpanic 20 0 1952 608 520 S 0.3 0.0 0:00.01 arm-eabi-gcc
16554 doroidpanic 20 0 1952 608 520 S 0.3 0.0 0:00.01 arm-eabi-gcc
16563 doroidpanic 20 0 1952 608 520 S 0.3 0.0 0:00.01 arm-eabi-gcc
[/sourcecode]