[Cortex-A] 【PocketBeagle试用】2

[复制链接]
56|0
 楼主 | 2018-4-11 00:35 | 显示全部楼层 |阅读模式
随身助理
先实现方案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脚本即可。
常备软件
  • COW + SwitchProxy
  • notepad2-mod | 简洁小巧的文本编辑器
  • KiTTY | 好用简洁的SSH客户端
  • Snipaste | 国人多年开发的截图软件
  • cheatsheet | 一些常用软件的快捷键



感觉没人看,哈

扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /6 下一条

分享 快速回复 返回顶部 返回列表