Chrome OSをシェルから使ってみる

私は家電とかPCとかマニュアルを読んで使うということが余りない。色々と試行錯誤して使ってみる方だ。勿論、困り果ててしまえば見るしかないが、大抵のことは何とかなる。

Google Chrome OSはオープンソースでもあり、ドキュメントもあるので見れば直ぐに分かるのだろうが、今のところ試行錯誤を楽しんでいる。しかし、sshデーモンの自動起動ができなくて数時間を費やしてしまった。まだ、出来ない。手動で起動すれば問題なく動くのだが。標準のDebianと何が違うのだろう?

さて、と言ったところでハマってはいるのだけど、Chrome OSをシェルから使うのは難なくできた。

1.Chrome OSを立ち上げる

2.ログインする

3.[F12]キーを押してウィンドウの一覧にする

4.“Ctrl+Alt+t”を押してxtermウィンドウを起動する

5.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自動起動ができない。取り敢えずは手動で起動できるので、これはその内暇な時にでもやるか。