If you have followed my instructions on installing OpenCL™ on the Samsung Chromebook or on the Samsung Chromebook 2, you may be wondering what's next. Well, optimising your code for the ARM® Mali™ GPUs, of course! If you are serious about using your Chromebook as a development board, you may want to know how to connect to it remotely via ssh
, and use it with the lid closed. In this blog post, I'll explain how. All the previous disclaimers still apply.
Enabling remote access to Chromebook
I assume your Chromebook is already in the developer mode (and on the dev-channel if you are really brave).
Making the root file system writable
Open the Chrome browser, press Ctrl-Alt-T and carry on to enter the shell:
Welcome to crosh, the Chrome OS developer shell. If you got here by mistake, don't panic! Just close this tab and carry on. Type 'help' for a list of commands. crosh> shellchronos@localhost / $
Using sudo
, run the make_dev_ssd.sh
with the --remove_rootfs_verification
flag:
chronos@localhost / $ sudo /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification ERROR: YOU ARE TRYING TO MODIFY THE LIVE SYSTEM IMAGE /dev/mmcblk0. The system may become unusable after that change, especially when you have some auto updates in progress. To make it safer, we suggest you to only change the partition you have booted with. To do that, re-execute this command as: sudo ./make_dev_ssd.sh --remove_rootfs_verification --partitions 4 If you are sure to modify other partition, please invoke the command again and explicitly assign only one target partition for each time (--partitions N ) ERROR: IMAGE /dev/mmcblk0 IS NOT MODIFIED.
Note the number after the --partitions
flag and rerun the previous command with this number e.g.:
chronos@localhost / $ sudo /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --partitions 4 Kernel B: Disabled rootfs verification. Backup of Kernel B is stored in: /mnt/stateful_partition/backups/kernel_B_20150221_224038.bin Kernel B: Re-signed with developer keys successfully. Successfully re-signed 1 of 1 kernel(s) on device /dev/mmcblk0.
Finally, reboot:
chronos@localhost / $ sudo reboot
Creating host keys
Create keys for sshd
to use:
chronos@localhost / $ sudo ssh-keygen -t dsa -f /mnt/stateful_partition/etc/ssh/ssh_host_dsa_key Generating public/private dsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /mnt/stateful_partition/etc/ssh/ssh_host_dsa_key. Your public key has been saved in /mnt/stateful_partition/etc/ssh/ssh_host_dsa_key.pub.chronos@localhost / $ sudo ssh-keygen -t rsa -f /mnt/stateful_partition/etc/ssh/ssh_host_rsa_key Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /mnt/stateful_partition/etc/ssh/ssh_host_rsa_key. Your public key has been saved in /mnt/stateful_partition/etc/ssh/ssh_host_rsa_key.pub.
You can leave the passphrase empty (hit the Enter key twice).
Enabling password authentication
Change the PasswordAuthentication
setting in /etc/ssh/sshd_config
to 'yes':
chronos@localhost / $ sudo vim /etc/ssh/sshd_config # Force protocol v2 only Protocol 2 # /etc is read-only. Fetch keys from stateful partition # Not using v1, so no v1 key HostKey /mnt/stateful_partition/etc/ssh/ssh_host_rsa_key HostKey /mnt/stateful_partition/etc/ssh/ssh_host_dsa_key PasswordAuthentication yes UsePAM yes PrintMotd no PrintLastLog no UseDns no Subsystem sftp internal-sftp
Starting sshd
Allow inbound ssh
traffic via port 22 and start sshd
:
chronos@localhost / $ sudo /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT chronos@localhost / $ sudo /usr/sbin/sshd
Change the root password (no, I'm not showing you mine):
chronos@localhost / $ sudo passwd Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Connecting from another computer
Check the IP address of your Chromebook:
chronos@localhost / $ ifconfig lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 0 (Local Loopback) RX packets 72 bytes 5212 (5.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 72 bytes 5212 (5.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 mlan0: flags=4163 mtu 1500 inet 192.168.1.70 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::26f5:aaff:fe26:ee0a prefixlen 64 scopeid 0x20 ether 24:f5:aa:26:ee:0a txqueuelen 1000 (Ethernet) RX packets 10522 bytes 3356427 (3.2 MiB) RX errors 0 dropped 8 overruns 0 frame 0 TX packets 6516 bytes 1956509 (1.8 MiB) TX errors 3 dropped 0 overruns 0 carrier 0 collisions 0
(In this case, the IP address is 192.168.1.70
.)
You should now be able to connect from another computer e.g.:
[lucy@theskyofdiamonds] ssh root@192.168.1.70localhost ~ # whoami root
Making sshd start on system startup
To make sshd
start on system startup, add a script to /etc/init
e.g.
chronos@localhost / $ sudo vim /etc/init/sshd.conf start on started system-services script /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT /usr/sbin/sshd end script
(A two-space indent is sufficient for the script block.)
Enabling passwordless connection from another computer
Generate a public/private key pair from another computer e.g.:
[lucy@theskyofdiamonds] ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
Copy the public key to your Chromebook e.g.:
[lucy@theskyofdiamonds] ssh-copy-id root@192.168.1.70 The authenticity of host '192.168.1.70 (192.168.1.70)' can't be established. RSA key fingerprint is 58:2d:89:e7:52:5c:b4:85:1e:79:e0:23:e8:36:f0:c2. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys Password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@192.168.1.70'" and check to make sure that only the key(s) you wanted were added. [lucy@theskyofdiamonds] ssh root@192.168.1.70 Last login: Sun Feb 22 00:08:45 GMT 2015 from 192.168.1.74 on sshlocalhost ~ #
Keeping your Chromebook awake with the lid closed
With the lid open, your Chromebook's GPU may be rendering graphics and running compute tasks concurrently. This may create undesired noise when obtaining performance counters. To keep the Chromebook awake when you close the lid, connect to the Chromebook and disable power management features:
[lucy@theskyofdiamonds] ssh root@192.168.1.70 Last login: Sun Feb 22 00:48:41 GMT 2015 from 192.168.1.74 on sshlocalhost ~ # stop powerd
Check that when you close the lid, you can still "talk" to the Chromebook e.g. launch tasks.
To enable power management again, enter:
localhost ~ # start powerd