最近在试用FydeOS(基于chromeOS)。FydeOS确实是一个挺不错的系统,其中的crostini涉及到lXC相关的操作,特此小结
terminaVM操作
crostini相当于用一个虚拟机terminaVM启动lxc容器来运行linuxGUI应用或者后台服务
进入terminaVM首先要启动VM,由于chromeOS的安全限制,VM无法随系统启动而启动,所以需要手动启动VM。发现打开Terminal应用或者访问文件应用的linux文件夹,都会启动VM和默认的容器。
或者在crosh里执行命令vmc start termina
来启动VM
通过vsh termina
进入VM的bash
停止VM可以使用vmc stop termina
,遇到一些未知的问题,可以通过关闭再启动的方式尝试处理
销毁VM可以使用vmc destroy termina
,这样会销毁所有VM的数据,慎重使用
##lxc操作
进入VM后,可以创建、启动、关闭、删除、备份lxc容器,拉取、创建镜像
基于镜像创建容器lxc launch 镜像名 容器名称
,没有相同容器名称的容器时,就会创建一个以这个镜像为基础的容器同时启动容器。如果已经有该容器名称的容器,则启动容器
默认容器直接通过打开Terminal应用来启动。启动非默认容器并进入容器的bash目前是通过脚本run_container.sh执行的。
run_container.sh --container_name 容器名称 --shell --user 用户名
可以通过lxc stop 容器名
来停止容器,还可以强行停止容器lxc stop 容器名 --force
可以通过lxc list
查看所有容器的基本状态,是否启动,IP是多少有没有快照等
可以通过lxc restart 容器名
来重启容器
可以通过lxc delete 容器名
来删除容器和快照
可以通过lxc publish 容器名 --alias 镜像名
来发布镜像,发布的镜像就可以被使用创建容器
可以通过lxc image list
查看已有的镜像文件
通过SFTP在文件应用查看非默认容器文件
由于安全限制,容器内的文件是无法直接访问到的,默认容器经过官方设置可以访问到,貌似是通过SFTP的方式实现。非默认容器同样可以通过这种方式查看容器内文件。首先在容器安装openssh-server(如果已安装可以跳过)
sudo apt-get purge openssh-server
sudo apt-get install openssh-server
删除 /etc/ssh/sshd_not_to_be_run文件
rm -v /etc/ssh/sshd_not_to_be_run
重启ssh并查看ssh状态,ssh应该变为active(running)
sudo service sshd restart
sudo systemctl status ssh
为容器的用户设置密码
sudo passwd yourusername
重启容器,使用secure shell app输入对应容器用户名和IP
点击安装SFTP
安装成功后,可在文件应用看到挂载了对应用户根目录
注意这里可以看到docker,是的,可以在容器里再运行容器
使用crostini注意事项
通过run_container.sh 脚本启动的container会报错:
Failed to connect to bus: No such file or directory
导致打开GUI应用无法显示,报以下错误:
Startup Error: Unable to detect graphics environment
再次执行run_container.sh脚本可以正常启动GUI应用并显示GUI,可能是脚本启动x11窗口时失败
查看安卓容器文件夹
访问安卓容器有两种方法,一种是安装一个安卓版的文件管理器。安卓版的文件管理器可以访问各个App的文件,然后通过Download文件夹传递到容器外面。
一种是在浏览器里输入chrome://flags
,找到Show Android files in Files app
选择启用,重启后可以在文件应用看到安卓文件夹
参考文章链接
安卓APP访问USB设备
安卓app想要访问外接usb设备,比如移动硬盘可以通过指令挂载usb设备
sudo mount -B /media/removable/External\ Drive/AndroidCanAccess/ /run/arc/sdcard/default/emulated/0/Download/HDD
sudo mount -B /media/removable/External\ Drive/AndroidCanAccess/ /run/arc/sdcard/read/emulated/0/Download/HDD
sudo mount -B /media/removable/External\ Drive/AndroidCanAccess/ /run/arc/sdcard/write/emulated/0/Download/HDD
这里是将usb设备的AndroidCanAccess文件夹挂载到安卓系统的Download/HDD文件夹,这样下载到HDD文件夹的文件实际会下载到AndroidCanAccess文件夹