随身助理 先实现方案1,也就是随身助理的功能,又分为两种,从常用主机迁移部分服务;为其他主机提供熟悉的操作环境。 非常用主机熟悉环境随身U盘BBB半载4GB eMMC不大不小,但是PB使用的microSD卡一般都是8GB以上,我们可以合理应用, 将sd卡上的部分空间划分出来,作为U盘使用,其实操作系统本身已经实现了相关功能,就是 我们第一次上电看到的BeagleBone Getting Started,不过缺点在于大小只有18MB,而且 只读属性,无法写入文件。 前面博客讲过Linux USB Gadget驱动相关,我们知道是挂载驱动时指定相关参数。那么我们 只要找到相关设置语句就可以进行修改了。 开启读写搜索可知相关设置句在/opt/scripts/boot/am335x_evm.sh第77行(usb_massstorage_readonly): usb_ms_ro=1设置语句在第650行。nano想要显示行号可以使用nano -c打开。 #g_multi: Do we have image file?
if [ -f ${usb_image_file} ] ; then
test_usb_image_file=$(echo ${usb_image_file} | grep .iso || true)
if [ ! "x${test_usb_image_file}" = "x" ] ; then
usb_ms_cdrom=1
fi
g_multi_options="file=${usb_image_file} cdrom=${usb_ms_cdrom} ro=${usb_ms_ro}"
g_multi_options="${g_multi_options} stall=${usb_ms_stall} removable=${usb_ms_removable}"
g_multi_options="${g_multi_options} nofua=${usb_ms_nofua} ${g_network}}"
modprobe g_multi ${g_multi_options} || g_multi_retry
usb0="enable"
else
#g_multi: Do we have a non-rootfs "fat" partition?
unset root_drive
root_drive="$(cat /proc/cmdline | sed 's/ /\n/g' | grep root=UUID= | awk -F 'root=' '{print $2}' || true)"
if [ ! "x${root_drive}" = "x" ] ; then
root_drive="$(/sbin/findfs ${root_drive} || true)"
else
root_drive="$(cat /proc/cmdline | sed 's/ /\n/g' | grep root= | awk -F 'root=' '{print $2}' || true)"
fi
if [ "x${root_drive}" = "x/dev/mmcblk0p1" ] || [ "x${root_drive}" = "x/dev/mmcblk1p1" ] ; then
#g_ether: Do we have udhcpd/dnsmasq?
if [ -f /usr/sbin/udhcpd ] || [ -f /usr/sbin/dnsmasq ] ; then
modprobe g_ether ${g_network} || g_ether_retry
usb0="enable"
else
#g_serial: As a last resort...
modprobe g_serial || g_serial_retry
fi
else
boot_drive="${root_drive%?}1"
modprobe g_multi file=${boot_drive} cdrom=0 ro=0 stall=0 removable=1 nofua=1 ${g_network} || true
usb0="enable"
fi
fi重启即可发现可以读写BeagleBone磁盘了。 更改BegaleBone磁盘大小虽然可以读写了,但是18MB总归不够用,查看上面的脚本,我们发现/var/cache/doc-beaglebone-getting-started/ 存放着虚拟磁盘镜像beaglebone-getting-started-2017-05-25.img,ls -lh并移出后重启,主机看不到BeagleBone磁盘再一次证实了我们的猜测。 目标找到了,我们要对该文件进行扩容,思路有好多种,最初尝试dd新建空白img然后cat append到源文件,用resize2fs修复, 结果发现resize2fs仅支持ext*文件系统,用sudo fdisk -l beaglebone-getting-started-2017-05-25.img,可以看到是FAT16文件系统的分区, 最后想了一个折中的方法,通过sftp协议(FlashFXP、WinSCP、FileZilla等)将镜像拉出来(192.168.7.2),然后用UltraISO进行修改。 操作——>修改映格式——>新映像大小512MB——>输出映像文件,然后传上去到debian用户目录下,再备份原文件后替代:
sudo mv /var/cache/doc-beaglebone-getting-started/beaglebone-getting-started-2017-05-25.img /var/cache/doc-beaglebone-getting-started/beaglebone-getting-started-2017-05-25.img.old
sudo mv ~/beaglebone-getting-started-2017-05-25.img /var/cache/doc-beaglebone-getting-started/重启即可以看到512MB的可读磁盘。注意该目录并不与PB Linux共享,必要时可以选择将img文件挂在到pb。 另外我们可以尝试直接新建一个img文件用于挂载,这样主机上显示两个可移动存储设备,一个只读,一个可写,更加安全。注意: 用最新版本的UltraISO打开img文件时提示无法识别的iso文件,很纳闷之前可以的。从 这里下载旧版(v9.6.x)UltraISO后成功。 一键开关读写权限脚本如下: 出城地图有些网站打不开、访问慢,需要一个代理。这里选择简单的brook。 服务端在远程服务器上使用doubi.io写的一键brook安装脚本即可。 客户端由于启动流程是:开机——>加载ether gadget驱动——>lan up——>doroute.sh:internet online 所以我们这里建立shell脚本,手动按需开启关闭代理模式。手写脚本如下:
#!/bin/sh
# s=socks5 1081 only, h=http 1080 only,a=all,socks & http,k=kill
case $1 in
s) nohup brook client -l 0.0.0.0:1081 -i 0.0.0.0 -s server_address:port -p password > /dev/null 2>&1 &
;;
h) nohup brook client -l 0.0.0.0:1080 -i 0.0.0.0 -s server_address:port -p password --http > /dev/null 2>&1 &
;;
a)
nohup brook client -l 0.0.0.0:1081 -i 0.0.0.0 -s server_address:port -p password > /dev/null 2>&1 &
nohup brook client -l 0.0.0.0:1080 -i 0.0.0.0 -s server_address:port -p password --http > /dev/null 2>&1 &
;;
k) pkill brook > /dev/null 2>&1
;;
*) echo "wrong option, plz retry with \n {s}=socks5 1081 only, {h}=http 1080 only, {a}=all,socks & http, {k}=kill \n for example, ./brook.sh a"
;;
esac
echo 'done'可以开启socks5/http代理(不同端口)。看不懂的可以移步Linux Shell 教程, 主要需要了解参数传递、echo、流程控制等。另外dash比bash支持更多参数语法,debian的默认shell是dash。 官方debian系统没有killall命令,用pkill代替,具体参考man.linuxde.net/pkill。测试的话可以用curl:
# check http proxy
curl -x 127.0.0.1:1080 www.google.com
# check socks5 proxy
curl --socks5 127.0.0.1:1081 www.google.com主机使用地图最简单的就是打开ie选项,设置http代理为192.168.7.2:1080,打开google.com,畅游互联网吧!复杂一点的就是我在个人电脑上会设置哪些电脑需要访问代理,哪些不需要,常用OmegaSwitch+Chrome。这里我们试试COW。看了一下介绍,还是挺强大的,主要就是自动 检测文件是否需要走二级代理。从release界面下载windows版的,编辑rc文件,将http和socks服务器替换为192.168.7.2, 配合一键切换ie浏览器的ahk脚本即可。 常备软件
感觉没人看,哈
|