Chrome OSをシェルから使ってみる
私は家電とかPCとかマニュアルを読んで使うということが余りない。色々と試行錯誤して使ってみる方だ。勿論、困り果ててしまえば見るしかないが、大抵のことは何とかなる。
Google Chrome OSはオープンソースでもあり、ドキュメントもあるので見れば直ぐに分かるのだろうが、今のところ試行錯誤を楽しんでいる。しかし、sshデーモンの自動起動ができなくて数時間を費やしてしまった。まだ、出来ない。手動で起動すれば問題なく動くのだが。標準のDebianと何が違うのだろう?
さて、と言ったところでハマってはいるのだけど、Chrome OSをシェルから使うのは難なくできた。
1.Chrome OSを立ち上げる
4.“Ctrl+Alt+t”を押してxtermウィンドウを起動する
ここで3は必ずしも必要ない、が確認の為に一覧表示にしておいた方が良さそうだ。また、実機で試す場合は問題ないが、VMwareの仮想マシン環境では“Ctrl+Alt+t”を押そうとすると“Ctrl+Alt”でゲストOSの入力からデフォーカスされてしまうので、まず“Ctrl+Alt”を押して、そのままの状態でマウスの左クリックで再度ゲストOSへフォーカスしてから“t”を押すとxtermウィンドウが起動する。
さて、xtermウィンドウが起動すれば、あとはLinuxの世界となる。画面にはいつもの見慣れたメッセージが出ている。
To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. chronos@localhost:~$
ここでsudoを利用するためには“chronos”というアカウントのパスワードが必要となる。これも勘でハックしてみたが、なんと2回目でビンゴ!だった。パスワードは“chromeos”。
chronos@localhost:~$ sudo -s [sudo] password for chronos: chromeos root@localhost:~#
ここまで来れば、あとは何でもできる。(しかし、Linuxはroot権限が手に入ってしまえば何でもできる、というのは如何なものかと。)
この後の作業はxtermを使っても良いのだけども、仮想環境ではキー入力がもたつくし、何よりも字が小さすぎる。そこでsshデーモンを起動して他のマシンからsshでログインできるようにする。
root@localhost:~# /etc/init.d/ssh start * Starting OpenBSD Secure Shell server sshd [OK]
余談になるが、最近のDebianではRedhatと同様、サービスの起動にデフォルトでserviceコマンドが使えるようになっている。ので、
root@localhost:~# service ssh start
でもOK。(私が普段使っているUbuntu 8.04ではデフォルトには入っていないので、ついつい癖で/etc/init.d/xxxを使ってしまう。)
さて、これで別のマシンからログインできる。
どのようなプロセスが動いているか見てみると、
root@localhost:~# ps ax PID TTY STAT TIME COMMAND 1 ? Ss 0:00 /sbin/init 2 ? S< 0:00 [kthreadd] 3 ? S< 0:00 [migration/0] 4 ? S< 0:00 [ksoftirqd/0] 5 ? S< 0:00 [events/0] 6 ? S< 0:00 [cpuset] 7 ? S< 0:00 [khelper] 10 ? S< 0:00 [netns] 13 ? S< 0:00 [async/mgr] 157 ? S< 0:00 [kblockd/0] 159 ? S< 0:00 [kacpid] 160 ? S< 0:00 [kacpi_notify] 277 ? S< 0:00 [ata/0] 278 ? S< 0:00 [ata_aux] 282 ? S< 0:00 [ksuspend_usbd] 287 ? S< 0:00 [khubd] 290 ? S< 0:00 [kseriod] 351 ? S 0:00 [pdflush] 352 ? S 0:00 [pdflush] 353 ? S< 0:10 [kswapd0] 404 ? S< 0:00 [aio/0] 419 ? S< 0:00 [crypto/0] 499 ? S< 0:00 [pciehpd] 691 ? S< 0:00 [scsi_eh_0] 694 ? S< 0:00 [scsi_eh_1] 736 ? S< 0:00 [kpsmoused] 740 ? S< 0:00 [kstriped] 747 ? S< 0:00 [kondemand/0] 751 ? S< 0:00 [usbhid_resumer] 1013 ? S< 0:00 [kjournald] 1035 ? S< 0:00 [kjournald] 1061 ? SLs 0:00 /usr/bin/slim -d 1065 tty1 Ss+ 0:22 /usr/bin/X -nolisten tcp vt01 -auth /var/run/slim.auth 1067 tty2 Ss+ 0:00 /sbin/getty -8 38400 tty2 1079 ? Sl 0:00 /usr/sbin/rsyslogd -c4 1080 ? Ss 0:00 /bin/cat 1084 ? Ss 0:00 /bin/dbus-daemon --system --fork 1085 ? Ss 0:00 /sbin/wpa_supplicant -u -s -O/var/run/wpa_supplicant 1088 ? Ss 0:01 /usr/sbin/connmand 1091 ? Ssl 0:00 /usr/sbin/console-kit-daemon 1093 ? S 0:00 /sbin/dhclient -d -q -e BUSNAME=org.moblin.connman -pf /var/run/connman/dhclient.eth0.pid -lf /var/run/connman/dhclient.eth0.lease 1174 ? Ts 0:00 /sbin/init 1184 ? Ss 0:00 /usr/sbin/acpid --confdir /etc/acpi/events --socketfile /var/run/acpid.socket 1254 ? S<s 0:00 /sbin/udevd --daemon 1380 ? S< 0:00 /sbin/udevd --daemon 1381 ? S< 0:00 /sbin/udevd --daemon 1584 ? Ss 0:00 /usr/sbin/ntpd -g -u ntp:ntp 1748 ? S< 0:01 [loop0] 1767 ? S< 0:00 [kdmflush] 1815 ? S< 0:00 [kjournald2] 1833 ? S 0:00 /usr/bin/ck-launch-session /etc/X11/chromeos-xsession 1838 ? S< 0:00 [kcryptd_io] 1839 ? S< 0:01 [kcryptd] 1869 ? S 3:23 /usr/bin/chromeos-wm --hotkey_overlay_image_dir=/usr/share/chromeos-assets/images --panel_anchor_image=/usr/share/chromeos-assets/ 1870 ? S 0:00 /bin/sh /usr/bin/chromeos-chrome-loop 1871 ? S 0:00 /usr/bin/xscreensaver -no-splash 1900 ? S 0:00 /usr/lib/devicekit-power/devkit-power-daemon 1912 ? S 0:00 /usr/lib/devicekit-disks/devkit-disks-daemon 1913 ? S 0:00 devkit-disks-daemon: not polling any devices 1927 ? S 0:00 /usr/bin/xterm -bg black -fg grey 1928 pts/0 Ss 0:00 bash 2016 ? Sl 0:04 /opt/google/chrome/chrome --enable-gview --no-first-run 2022 ? S 0:00 /opt/google/chrome/chrome --enable-gview --no-first-run 2023 ? S 0:00 /opt/google/chrome/chrome --type=zygote 2032 ? Rl 0:01 /opt/google/chrome/chrome --channel=2032.b289850.535399988 --type=renderer --lang=en-US --force-fieldtest=AsyncSlowStart/_AsyncSlo 2042 ? Sl 0:00 /opt/google/chrome/chrome --channel=2032.b49f450.1173946133 --type=renderer --lang=en-US --force-fieldtest=AsyncSlowStart/_AsyncSl 2045 pts/0 S+ 0:00 /bin/bash 2070 ? Ss 0:00 /usr/sbin/sshd 2073 ? Ss 0:00 sshd: chronos [priv] 2087 ? R 0:00 sshd: chronos@pts/1 2088 pts/1 Ss 0:00 -bash 2097 pts/1 R 0:00 /bin/bash 2117 pts/1 R+ 0:00 ps ax root@localhost:~#
使っているメモリは?
root@localhost:~# free total used free shared buffers cached Mem: 252540 245160 7380 0 776 169580 -/+ buffers/cache: 74804 177736 Swap: 0 0 0 root@localhost:~#
75MB程度。(もっともキャッシュでメモリの殆どは利用されているが。でも256MBもあれば十分か。これであれば、Dynabook SS 3480 (PORTEGE 3480 DS60P/1N2T)でも動かせそう。(“UbuntuとVMwareでThin Clientを作ってみた”の記事で使った10年選手のラップトップPC。)
仮想ディスクには約1GBのスワップ領域があったが、システムでは全く使っていない(スワップ無し)。本体で大したアプリケーションは動かさないから必要はないだろう。
さて、ディスクの使用量は?
root@localhost:~# df Filesystem 1K-blocks Used Available Use% Mounted on rootfs 957496 591148 317708 66% / udev 126268 126268 0 100% /dev /dev/disk/by-label/C-ROOT 957496 591148 317708 66% / /tmp 126268 28 126240 1% /tmp shmfs 126268 140 126128 1% /dev/shm /dev/sda1 957496 57460 851396 7% /mnt/stateful_partition /dev/sda1 957496 57460 851396 7% /var/cache /dev/sda1 957496 57460 851396 7% /var/log vartmp 126268 20 126248 1% /var/tmp /dev/sda1 957496 57460 851396 7% /home varrun 126268 52 126216 1% /var/run varlock 126268 0 126268 0% /var/lock /media 126268 0 126268 0% /media /dev/mapper/cryptohome 811972 31716 745272 5% /home/chronos root@localhost:~#
大体600MB+α程度か。(udev(/dev)が随分大きいような気がする。ここの部分はディスクの占有領域ではなくてメモリキャッシュかと思われるが。)
ちなみに、[F12]を押すとウィンドウ一覧になるが、こういったキーボードのショートカットは[F8]を押すとショートカット一覧の対話型メニューが現れ、確認できる。
(VMwareの仮想マシンでは画面サイズが小さくてショートカット一覧が全て表示しきれない。実機で動かせば全体が見れるのだが、スナップショットが撮れないので仮想マシンの画面を載せておいた。)
まぁ、あとは色々と楽しんでください。
■ Chrome OSをカスタマイズする
sshデーモンをシステム起動時に起動するように設定しようとして、色々やったのだが、上手くいかない。なんか標準のDebianと違うところがあるようだ。
仮想ディスクをマウントして、そこで設定を変えてから仮想マシンを立ち上げることで、設定をかえることは可能。例えば、次のようにする。
root@vmhost:~/tmp# ls chromeos-image-999.999.32309.211410-a1.vmdk chromeos-image.vmdk chromeos-image-flat.vmdk root@vmhost:~/tmp# mkdir work root@vmhost:~/tmp# vmware-mount chromeos-image.vmdk 3 work/ root@vmhost:~/tmp# ls work/etc/init.d acpid keyboard-setup procps start_login.sh alsa-utils killprocs rc stop-bootchart bootchart module-init-tools rc.local stop-bootlogd bootlogd mountall-bootclean.sh rcS stop-bootlogd-single bootlogs.sh mountall.sh README udev bootmisc.sh mountdevsubfs.sh reboot udev-finish checkfs.sh mountkernfs.sh rmnologin umountfs checkroot.sh mountnfs-bootclean.sh rsyslog umountnfs.sh console-setup mountnfs.sh sendsigs umountroot dbus mountoverflowtmp session_manager.sh urandom hal mtab.sh single x11-common halt networking skeleton xstart.sh hostname.sh ntp slim hwclock.sh ondemand ssh root@vmhost:~/tmp# ここで色々と設定を変える root@vmhost:~/tmp# vmware-mount -d work/ root@vmhost:~/tmp#
この例ではオリジナルの“chromeos-image-999.999.32309.211410-a1.vmdk”から作成したフラット仮想ディスク“chromeos-image.vmdk”を使って設定を変えているが、可変仮想ディスクでも同様にマウントして変更出来る筈。(私は変更後のディスクイメージをUSBメモリにコピーして実機でも使えるようにしているので固定仮想ディスクを使って設定を変えている。フラットディスクの作成と、USBメモリへのコピーについては“Chrome OSをUSBブートで実機で使ってみる”を参照。)
これで、設定の変更はできるのだが、SSHの自動起動ができない。取り敢えずは手動で起動できるので、これはその内暇な時にでもやるか。