スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

| スポンサー広告

Android上でUbuntuを動かしてみる

先日、Android上でUbuntuを動かしてみた。
その時のやり方の記録。
(やるときは自己責任で)
ちなみにUbuntu以外もFedoraとかも動かせそうです。

[環境]
・Nexus7タブレット
・Android4.2.2

まずはroot化されている必要があります。
root化はこちらのサイトの方法が良いです。

AndroidタブレットをADBで操作するため、
AndroidSDK(のADB)をPCに入れておきます。
こちらも探せばやり方いっぱい出てきます。


で、本題。
タブレットの設定の「開発者向けオプション」からUSBデバッグを許可しておきます。

ちなみに「開発者向けオプション」は「タブレット情報」を開き、
ビルド番号を何回かタップするとメニューが表示されるようになります。
(よく分かって無い人が下手に操作しないようにという配慮でしょうか?)


USBでタブレットとPCを接続します。
ADBコマンドが使えるようになっているはずなので、
Windowsであればコマンドプロンプトからデバイスの接続を確かめます。

>adb devices
List of devices attached
[英数字] device

もしofflineと出てた場合は、タブレットのほうで接続許可してるか確かめてください。

タブレットにログインして操作します。
>adb shell

/sdcardの配下にubuntuという名称のディレクトリを作成します。
>cd /sdcard
>mkdir ubuntu
>exit (一度抜けます)

作成したubuntuディレクトリ配下にubuntuのOSイメージを置きます。
OSイメージのダウンロードはこちらから
http://linuxonandroid.org/downloads/
色々OS置いてあります。

ダウンロードした後、解凍するとOSイメージファイルのimgファイルと
そのmd5ハッシュ値のファイルの2つがでてきます。

adbコマンドでファイルをAndroidに移します。
>adb push ubuntu.img /sdcard/ubuntu/
>adb push ubuntu.img.md5 /sdcard/ubuntu/
(結構時間かかります)


・必要なアプリをAndroidにインストールします。
Complete Linux
http://www.linuxonandroid.org/complete-linux-installer-v2-beta-1/

android-vnc-viewer
http://code.google.com/p/android-vnc-viewer/

Android Terminal Emulator
http://code.google.com/p/androidterm/

上記サイトからapkファイルを落として、
>adb install "Complete Linux Installer V2 BETA 1.apk"
見たいにコマンドを使ってインストールするか、
もしくはGooglePlayで検索すればすぐに出てくるので、そちらからインストールしてもOKです。
(GooglePlayのがいいかも)

Complete Linuxについて、動かすのに必要なシェルスクリプトに実行権が無い可能性があるので、
実行権限をつけます。

>adb shell
>su (rootユーザの権限が必要)
>cd /data/data/com.zpwebsites.linuxonandroid/files
>chmod 755 *.sh
>exit (adbはもう使わないので抜けます)

そしたらAndroidアプリのメニューからComplete Linuxを起動し、
「Launch」から「Start Linux」を押して、ubuntuを起動します。

rootのパスワードを聞かれるので入力します。
VNCサーバ、SSHサーバを起動するか質問されるので、yを入力しときます。
画面サイズを聞かれるので、Nexus7の場合は1280x735を入力。(x は英語小文字のx)

そしたらAndroidアプリメニューから、android-vnc-viewerを起動し、
下記の通り入力して接続します。
コネクション名:適当に
パスワード:ubuntu
アドレス:127.0.0.1
ポート:5900
色数:24-bit color

これで動きます。

とめるときはAndroid Terminal Emulatorでexitと入力します。

見てて気づいたかと思いますが、この方法はAndroid上で仮想的にUbuntuを起動し、
そのUbuntuにVNCで接続してます。
予想がつくかと思いますが、遅いです。もっさり。

利点はubuntuが動くということで、豊富なubuntuのアプリを利用できることでしょうか。
ネットワークにつないでいればsshで接続もできます。
あとはAndroidのシステムは基本いじられないため、Androidのほうを壊す心配が無いです。

もっと高速に動かす方法ありそうですね。
そういえばNexus7で動くFirefoxOSもうリリースされてた記憶。
入手できたはずなので、そのうち使ってみるかも。

| 情報技術 | コメント(0)

Android上で使えるコマンドメモ

Nexus7が2台あるので、1台は実験機として色々遊んでます。
Android上で使えるコマンドが気になったのでメモ。ただのメモ。
コマンドの説明は書きませんが、よく見知ったコマンドもありますね。

abcc
adb
am
app_process
applypatch
atrace
bmgr
bootanimation
btmacreader
bu
bugmailer.sh
bugreport
cat
chmod
chown
cmp
content
cp
dalvikvm
date
dbus-daemon
dd
debuggerd
dexopt
df
dhcpcd
dmesg
dnsmasq
drmserver
du
dumpstate
dumpsys
fsck_msdos
getevent
getprop
glgps
grep
gzip
hd
hostapd
id
ifconfig
iftop
ime
input
insmod
installd
ioctl
ionice
ip
ip6tables
iptables
keystore
kill
linker
ln
log
logcat
logwrapper
ls
lsmod
lsof
make_ext4fs
md5
mdnsd
mediaserver
mkdir
mksh
monkey
mount
mtpd
mv
nandread
ndc
netcfg
netd
netstat
newfs_msdos
notify
ping
pm
pppd
printenv
ps
racoon
reboot
renice
requestsync
rm
rmdir
rmmod
route
run-as
schedtest
schedtop
screencap
screenshot
sdcard
send_bug
sendevent
sensors-config
sensorservice
service
servicemanager
setconsole
setprop
settings
setup_fs
sh
sleep
smd
start
stop
surfaceflinger
svc
sync
system_server
tc
tf_daemon
toolbox
top
touch
uiautomator
umount
uptime
vdc
vmstat
vold
watchprops
wipe
wpa_supplicant

/system/bin配下に入ってます。

Androidいじるにはadbでコマンドライン操作すると楽です。
AndroidでUSBデバッグモードONにして、
PCにAndroidSDKを入れて、ADB入れて、
Windowsであればパスを通した後、コマンドプロンプトでadb shellを入力すれば、
androidをコマンドラインで操作できます。

| 情報技術 | コメント(0)

Raspberry Pi 初期設定いくつか

RaspberryPiを徐々に構築中。
いずれはZabbixを動かし、自宅のメインサーバの監視用として使う予定。
ただZabbixを動かすほどのスペックはあるのかは謎。(使ってみた感じ無理かもしれない。。)

とりあえず初期設定のメモ。
(なお、RaspberryPiにはFedora18を入れてます)

■デーモンについて
初期から起動してるサービスは大体こんな感じ。

boot.automount  loaded active running boot.automount
accounts-daemon.service  loaded active running Accounts Service
atd.service  loaded active running Job spooling tools
bluetooth.service  loaded active running Bluetooth service
console-kit-daemon.service  loaded active running Console Manager
crond.service  loaded active running Command Scheduler
dbus.service  loaded active running D-Bus System Message Bus
firewalld.service  loaded active running firewalld - dynamic firewall daemon
iprdump.service  loaded active running LSB: Start the ipr dump daemon
iprinit.service  loaded active running LSB: Start the ipr init daemon
iprupdate.service  loaded active running LSB: Start the iprupdate utility
lightdm.service  loaded active running Light Display Manager
NetworkManager.service  loaded active running Network Manager
ntpd.service  loaded active running Network Time Service
polkit.service  loaded active running Authorization Manager
rngd.service  loaded active running Hardware RNG Entropy Gatherer Daemon
rsyslog.service  loaded active running System Logging Service
rtkit-daemon.service  loaded active running RealtimeKit Scheduling Policy Service
smartd.service  loaded active running Self Monitoring and Reporting Technology (SMART) Daemon
sshd.service  loaded active running OpenSSH server daemon
systemd-journald.service  loaded active running Journal Service
systemd-logind.service  loaded active running Login Service
systemd-udevd.service  loaded active running udev Kernel Device Manager
upower.service  loaded active running Daemon for power management
dbus.socket  loaded active running D-Bus System Message Bus Socket
syslog.socket  loaded active running Syslog Socket
systemd-journald.socket  loaded active running Journal Socket
sendmail.service  loaded failed failed Sendmail Mail Transport Agent

ただ、sshdとntpdは後から追加したような記憶なので、初期では動いていないかも。
iptable動いてない!と思ったら、iptableの後継firewalldが動いていた。
(firewalldの設定方法は現在調べ中)

sendmail.serviceはなぜかfaild表示だが、そもそも使用しないので、
起動しないように設定する。
fedora15あたりから、慣れ親しんだchkconfigコマンドに変わり、
systemctlコマンドを使用する。

systemctl disable sendmail.service

まだsystemdに慣れてないが、今後主流になるだろうから早く覚えたいところ。
ちなみに、デーモンの起動の仕組みについて、SysVinitからUpstartとなり、現在はsystemdへ。
http://itpro.nikkeibp.co.jp/article/Keyword/20110527/360783/

systemctl について、大体以下のコマンドを覚えとけばOK
systemctl --all ・・すべてのユニットの状態表示
systemctl start [○○.service] ・・ユニット起動
systemctl stop [○○.service] ・・ユニット停止
systemctl status [○○.service] ・・ユニット状態確認
systemctl restart [○○.service] ・・ユニット再起動
systemctl enable [○○.service] ・・ユニット自動起動設定
systemctl disable [○○.service] ・・ユニット自動起動設定解除

ちなみに、SysVinit時代は/etc/rc.d/init.d配下に起動スクリプトを配置し、
たとえばランレベル3での起動設定の場合、
rc3.dのところにシンボリックリンクを貼ったりすれば起動設定が行えたりした。

systemdになった後は、起動設定は↓の配下においてある。

/etc/systemd/system/

たとえば、
/etc/systemd/system/multi-user.target.wants
の配下にサービスの設定ファイルのシンボリックリンクが置かれていたりする。


■時間設定
dateコマンドを実行すると、13時間の遅れが出ていた。
ntpdateコマンドを用いて、ntp.nict.jpと同期を取ってみる。
結果、やはり13時間の遅れ。

どうもlocaltimeの設定がおかしくなっているらしい。
/etc/localtime を確認してみると、以下の通り、シンボリックリンクが貼られていた。
localtime -> ../usr/share/zoneinfo/America/New_York

日本に直す。
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

これで時間の遅れが直る。

ちなみにRaspberry Pi はRTCが無いらしいので、
電源起動する度に時刻同期が必要らしい。

自宅のメインサーバはFedora17で、今回のRaspberryPiはFedora18だが、
結構違っていて驚いた。
Fedoraはどんどん新しい技術取り入れてくれるので、
新しい技術に触れることができてとてもありがたい。

| 情報技術 | コメント(0)

初インターバル撮影@マレーシア

インターバル撮影に興味を持ったので、旅行ついでに撮ってみた。



元サイズが1080pなので、画質を1080pに変更してから
見てもらえるときれいです。
そっちで見てもらえるとうれしいです。

やってみて、これは大変だと。そして難しい。
30秒の動画ですが、撮影時間は3時間以上だったか。。
マレーシアという国外ですから、盗難も恐く、カメラの前に付きっ切り。
大変でした。気持ちよかったですけど。

でも楽しいね。近々また挑戦してみたい。

こんな動画でもそれっぽく見せてくれる、ドビュッシーのピアノ曲はすばらしい。
編集ソフトはWindowsムービーメーカです。これ結構いいな。

| 趣味 | コメント(0)

Raspberry Piを動かすところまで

3000円で買える、名刺サイズPCのRaspberry Pi
こいつが届いてから完全に放置していたが、ちょっと構築をしてみる。

rasp1.jpg

小さく、低電力、ファンも無いからもちろん音はしない。
発熱も少なく夏も大丈夫。
最大の欠点はやはりスペックの低さ。
正直GUIではいらいらを覚えるレベルの遅さだが、
Linuxはコマンドラインさえ使えればいいので問題はない。

LANと電源だけ刺さればいいので、ケースにそれらを通す用の穴を空けてみた。
rasp2.jpg
ちょうど良い。

SDカードはTranscend SDHCカード 32GB Class10を使うことにした。
軽く調べてみると、Class10で問題が発生しているような記事も見受けられたが、
今のところ問題は発生していない。

OSはFedoraを選択した。

1.OSをSDカードに入れる
Windowsの場合、ツールを使用すればよい。
http://www.raspberrypi.org/archives/805

ただ、ここで少々詰まった。
ツールを起動して、OS書き込み先のデバイスを選択しようとしても、
うまく認識されない。
どうやらOSのロケールを英語にすると解決するらしいが、
めんどくさかったので、私の場合、Ubuntuマシンがあったのでそちらを利用することにした。

まずはOSイメージファイルをダウンロード
http://zenit.senecac.on.ca/wiki/index.php/Raspberry_Pi_Fedora_Remix
構築時点では最新版はFedora18だった。

ubuntuにOSを書き込むようのSDカードを認識させる。
私の環境の場合、SDカードは /dev/sdb となった。

つぎはddコマンドを用いてイメージを書き込む。
ddコマンドはデバイス間でファイルが書き込みできるコマンドだが、
コマンドを間違えるとデバイスに記録されているデータを
問答無用で破壊する危険性のあるコマンドなので、
注意すること。

dd if=[OSイメージファイル] of=[デバイス]

私の環境場合、以下のコマンドとなった。
sudo dd if=rpfr-f18-rc1.img of=/dev/sdb

その後、SDカードをRaspberry Piに差込み、起動すれば良い。
起動画面が表示されるので、画面にそって設定を行う。
途中、resize the root file-system みたいなチェック欄があるので、
そこにはチェックを入れること。
そうしないと、大容量のSDカードを用意しても、使用できる要領が3GBくらいになる。

OS起動直後、dfコマンドを実行してみると、ルートに約3GBしか与えられていない。
一度リブートするとSDカードの空きの分がルートに割り当てられた。


ちょっと便利なメモ。
今回登場したddコマンド、ハードディスクの完全消去などにも利用できる。

dd if=/dev/zero of=[消したいデバイス]

これを実行すると、消したいデバイスの全領域に[0]が書き込まれる。
ただし、1回書き換えても、復元できるという論文が出ており、安心はできない。
前に目にした論文では10回くらい上書きしないとダメだとか。
機密情報などは物理破壊が効果的。

| 情報技術 | コメント(0)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。