• 希望你能勇敢追求自由,去成为海贼王。

2021年7月28日星期三

Termux的proot构造nextcloud



1.安装和进入

apt install proot-distro

proot-distro install ubuntu-20.04

proot-distro login ubuntu-20.04

目前,它支持以下发行版:

Alpine Linux(别名:alpine)-最小的可用发行版。

Arch Linux(别名:archlinux)

Debian 10 Buster(别名:debian-buster)

Kali Nethunter(别名:nethunter)-当前只有最小的构建。

Ubuntu 18.04 / 20.04(别名:ubuntu-18.04 / ubuntu-20.04)




2.实际目录和备份:

/data/data/com.termux/files/usr/var/lib/proot-distro/installed-rootfs/ubuntu-20.04
#备份alpine
proot-distro backup alpine --output ./alpine20210513.tar.gz
#备份archlinux
proot-distro backup archlinux --output ./archlinux20210513.tar.gz
还原镜像
⚠️警告还原操作会删除数据!
还原后就是备份的数据了。
proot-distro restore alpine.tar.gz




3. 安装mariadb,nginx,php等并启动。
apt -y install mariadb-server
apt -y install nginx
apt -y install php php-common php-cli php-cgi php-fpm php-gd php-mysql php-sqlite3 php-pgsql php-opcache php-mbstring php-curl php-xml php-xmlrpc php-zip php-intl php-json php-bz2

mysqld&
mysql_secure_installation(初始化,注意启动root用户的远程登录)
nginx
php-fpm7.4




4. 安装phpmyadmin, nextcloud
官网下载,解压到/opt/wwwroot, 并修改755权限和属主(www-data:www-data)


5.创建证书(此处为私有)

生成秘钥key,运行:

> openssl genrsa -des3 -out server.key 2048

然后你就获得了一个server.key文件.
以后使用此文件(通过openssl提供的命令或API)可能经常回要求输入密码,如果想去除输入密码的步骤可以使用以下命令:

>openssl rsa -in server.key -out server.key

创建服务器证书的申请文件server.csr,运行:

>openssl req -new -key server.key -out server.csr

创建CA证书:

>openssl req -new -x509 -key server.key -out ca.crt -days 3650

此时,你可以得到一个ca.crt的证书,这个证书用来给自己的证书签名.


创建自当前日期起有效期为期十年的服务器证书server.crt:

>openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
>ls

可以看到一共生成了5个文件:

>ca.crt   ca.srl    server.crt   server.csr   server.key

其中,server.crt和server.key就是你的nginx需要的证书文件.

打开你的nginx配置文件,搜索443找到https的配置,去掉这段代码的注释.或者直接复制我下面的这段配置:

>server {

listen 443;
server_name localhost;
ssl on;
ssl_certificate /root/Lee/keys/server.crt;#配置证书位置
ssl_certificate_key /root/Lee/keys/server.key;#配置秘钥位置
#ssl_client_certificate ca.crt;#双向认证
#ssl_verify_client on; #双向认证
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

nginx -s reload 重载配置。至此,nginx的https就可以使用了,默认443端口.


6.新建站点配置文件
/etc/nginx/conf.d/phpmyadmin.conf
/etc/nginx/conf.d/nextcloud.conf


7.其他配置,启动redis.
apt -y install php-imagick php-redis redis-server
/opt/wwwroot/nextcloud/config/config.php
/etc/php/7.3/fpm/php.ini
/etc/php/7.3/fpm/php-fpm.conf
sudo -u www-data php occ db:convert-filecache-bigint
启动:redis-server&





学习的体系(持续更新)

 最近开的坑有点多,记录下,后续一个一个的来更。

1. 爬虫,主要是从HTTP协议,正则表达,文件处理等。

2. 机器学习,

    新学习:各种框架,mxnet, tersorflow等现代化的框架,自动求导,

    温习:之前的各种KNN,贝叶斯等算法。

3. 安卓开发:

    APP开发,起步阶段,gradle打包,刚学到textview, DP等。

    操作系统编译打包,lineageos,lineageos-microg,打包的具体流程,原理等。

4. 容器:

    docker, protainer,以及image, container等,现在学习docker的编写。

5. Armbian/Termux:

    两个一起说,都是arm的linux环境。

6. web服务器环境:

    apache环境,nginx环境,都是要额外加载PHP解析模块解析PHP。

7. 纯开源解决方案:

    私有云方案,nextcloud。

    密码解决方案,keypass。

    输入法方案,trime的配置。

    笔记解决方案,joplin。


2021年6月8日星期二

最近学习的一些IT的东西

 1. 文件系统,特别是 overlay FS。

    主要解决的问题是某个目录空间不够了,从其他文件系统下面挂一个文件夹过来。ubuntu官方给了三种方案,一种是--bind,一种是软链接ln,还有一种就是overlayFS。恰好今年二月份的时候折腾中兴手机,想要remount system为可读写,发现中兴手机的方案就是overlayFS,所以就好好把这个overlayFS学习了下。

    简而言之,这个overlayFS就是可以有多层的lowerdir,然后一层的upperdir,还有就是临时目录workdir,最终挂载以后,挂载目录可以看到的内容就是所有层叠加起来,然后上层会覆盖下层,并且只有upperdir的内容可以修改,其他层都不会动,就算你删除的文件在某层lowerdir,它也知会在upperdir内创建一个占位文件,这样你最终看到的内容以为它被删掉了。

    这个的用法,目前我想到的就两个:一个就是像中兴手机这种,就算你remount了,还是保持相关的文件夹内容无法修改,重启就恢复了。另外一种就是保持系统的还原点,比如我安装了armbian到我的开发板SD里面,然后再用overlayFS把我的移动硬盘挂载到usr,var,etc,lib甚至home目录,这样后续我所做的修改都在移动硬盘里面,如果要恢复出厂设置,直接umount掉就可以了。

    再补充下,最近看的docker的一些unionFS理念,跟overlayFS也有一些异曲同工之妙,分层存储,下层不允许做改动。

2. docker

    这几个东西放到一起来说,都是在docker学习过程中遇到的。

    docker基本过程就是拉取镜像,然后在这个镜像的基础上起一个容器,将一些网络端口,文件系统映射到主机的端口和文件,然后就可以跑起来了。基本上就是安装APP的一种新方式。

    docker的镜像打包过程,选用一个基础包,或者从scratch也就是从零开始,然后执行一些命令,变更一些内容。

    因为支持的CPU构架不一样,arm可用的镜像和x86,以及64位和32位,可用的镜像并不一样,当然有的镜像可以支持两种架构。

    此外还有docker可用的网络架构,分为bridge和macnet,openwrt就要用macnet网络。两种都是桥接,macnet需要把网卡改成混杂模式,然后macnet对于外部网络就像一个单独的网卡,主机的网卡也需要写入相应设置。

3. WSL,hypvisor。

    最后说到WSL, 分为1和2. 微软的东西,主要是想在微软的windows上面创建一个linux的环境。WSL 1主要思路还是把linux的内核跑到windows内核上面,这样避免了hypvisor虚层,而且文件系统也是紧耦合的。WSL 2直接就是把微软自己的hyper-V拿出来,并且创建了ext4的硬盘镜像,相当于创建来了虚拟机。

    然而hyper-V和普通虚机软件如qemu,virtualbox,vmware也有不同,它是直接把自己置于了windows的底层,这样相当于windows自己也是跑在hyper-V上面的一个虚机,和WSL2起来的linux处于兄弟关系,而不是父子关系。

    因为docker是基于linux上面开发的,如果windows上面要安装,就需要启动WSL2。

4. Android和Openwrt编译,HAL。

    上周末自己编译了lineageos 18.1的固件,刷入了我的小米6,目前跑起来还正常。也编辑了小米4A千兆版路由器的固件,没有刷入。

    android的编译,主要有一步是需要获取专用的驱动文件,也就是vendor下面的一些so文件,这个可以从手机里面提取,但是我提取过程中失败了,失败的原因后来找到是因为没有装patchelf且没有关闭seLinux,最后从其他人编辑的刷机包里面提取的。这些私有文件是我存疑的地方,因为不是开放源代码的,所以是否可能有漏洞?

    这里也要说一下HAL,android的驱动方式,hardware abstraction layer,将上层应用与底层硬件隔离。这个在下载的源代码里面也可以看到,但是离能写这些代码还好远。

    openwrt的编译过程,主要是有一个feeds比较特殊,需要将除openwrt固件本身之外的其他第三方app的代码也拉取下来,然后一起编译。还有一个就是下载dl库。这两个步骤,在国内执行可能比较困难。

5. ssh

    ssh本身没有太多东西,主要是有一种登录方式是用key来登录,就是生产私钥和公钥,私钥自己保存,公钥放到需要登录的服务器.ssh目录下面authorized_keys文件里面。这样ssh的时候,可以不需要用用户名密码认证。

6. termux,包管理系统

    termux是一个神奇的东西,android上面的一个终端,但是有包管理系统,可以装一些包扩展功能。第一步就是换源,官方默认的源好像已经挂了很久了。然后就是装openssh服务器,这样就可以在电脑上面直接ssh登录操作了。

    termux,ubuntu,openwrt各种linux开发版都有自己的包管理系统,用类似的命令可以安装扩展,它会识别依赖,自动安装。

    termux还可以通过安装qemu虚机,虚拟alpine,然后跑docker。之所以不能直接跑,是因为android去掉了cgroup和namespace等模块。

2020年1月1日星期三

写于2019年末

    2019已经翻篇,2020已经来临,准确来讲,现在是2020年第一天的早晨1:56.
    简单总结下,2019,一塌糊涂,2020,毫无规划,横批,走一步看一步。
    2019年是很艰难的一年,大的环境如SARS/鼠疫之类不说,贸易战已经如火如荼,后续如何,未知,大家生活会不会更艰难,未知。小的环境,个人丢失了房产,损失百万,然后买了房背200多万贷款,所以又来到了秘鲁,过年都基本无法回国。
    2019年,损失了啥,又获得了啥,除了年龄从31走到32。
    人生的设计,我总以为要么只顶向下,所以看很多哲学方面的书籍,想找清楚人生到底应该怎么过,要么只底向下,所以不管要什么,先生活再说。两条路目前来看都行不通了。
    只顶向下方面,人生观,依然无法圆满,总是在不停的怀疑于怀疑之间,大概上帝本身也没有设计好这套。正如经济解释里面提到,经济学,可以解释现象,但是无法进行预测。所以,学习再多,也只能是解释已经发生的,将来的毫无影响,也无法形成自然的体系。
   只底向上方面,我本就是一个比较惫懒的人,对于细枝末节,兴趣了了。从手段入手,去研究原理,更是提不起精神来。所以走了很多路,但是收获的价值观,少之又少。
   2020年,大概率,人生轨迹依然如此。当然,可以说说新年的祝福,身体健康,万事如意之类。然而,更想要的,还是明白事理,知其然,更知其所以然。在代表处这个环境里面,能收货到更多的业绩,干成一些事情,也算不枉此生。
    如果有高于人类的文明,把世界上所有的答案浓缩在一张纸上,你只要看了这张纸,就可以了然世界万物,你愿意看吗?

2018年12月13日星期四

品读怀念

突然发神经,读起春上村树来,然后一发不可收拾,读起了张爱玲,然后又拿起了朝花夕拾。
序言看了,与猫和隐鼠有关的第一篇也看了,然后就遇到了这篇阿长与山海经。
曾经的课文,再度读起,完全不同的感受。年幼时候,大概读就读了,文字认识就够了,里面讲的啥毛子,好像老师是说反映反帝反封建?而今只感一种浓浓的怀念力透纸背。

全文记录了和阿长的点点滴滴,第一次泛起尊敬,然后因杀害隐鼠生出仇恨,再因为一件小孩子念念不忘而大人毫不在意的一本书,而生出一种亲切。然而到最后也依然不知道她的名字。
悲哀的是她,还是自己,是谁错过了谁。人已走,却在周树人心中继续活下去,也不算留下遗憾吧。
抛开时代背景,主人仆人身份种种,真心对待小孩子的这种喜爱,尊重本身就是一种稀缺而珍贵的东西,所以阿长值得起这篇回忆。

2017年1月22日星期日

由部落冲突聊起,关于战法

  酒后想法多,谈谈关于战争战术和游戏。


  说说部落冲突,玩了快一年了,目前初九,部落战基本没断。
  这个游戏呢,基本就是考验战术和配兵。你看到别人的阵型,你要用什么兵去打,先下多少兵完成什么目的,再下多少兵,又完成什么目的,然后最后能把这个阵型完全推平推下来,这就叫三星胜利。只打掉主机地,或者只推了一半,那叫一星胜利。推掉主机地和一半,但是没有达到全部推掉,这叫两星胜利。

  七本之前的部落战基本瞎打,也不知道怎么玩。然后速到七本,七本速度出了龙之后,掌握了第一个能三星的打法,龙流。一开始龙流也是不知道怎么玩,但是忽忽悠悠有时候也能三星对面,这时候上网看视频,叫逆流的鱼,挺有收获。龙流会了以后也挺无聊的,基本套路都差不多。这个时候,我开始跟部落的一个兄弟一起转玩胖法猪打法,开始连技术了。
  总结一下,就是龙流最核心的就是打掉三个防空,但是龙乱跑,喜欢打离自己最近的,所以就要想办法铺路,让龙最快的接近防空,然后打掉防空。
  再介绍一下,我的胖法猪心得,就是胖子铺一排,先在两边放法师打掉两侧建筑,然后中间放法师兵放炸弹人开墙,这样胖子和法师都会往阵型中部走,还要注意胖子和法师不要一次性放完。这样的好处就是胖子在前面顶着,吸收伤害,法师在后面输出。一般这波胖法走到阵型的中部就开始乏力,因为遇到了很多墙,这个时候就要下猪了,猪从一个角落跳进去,打掉那个片区的防御,然后继续往前,如果吸收到伤害,就放加血,让猪尽量不要死。最后放手里的法师开始清场。
  七本,我待的时间不算短,大约两三个月,把防御和科技都补满之后就升级八本了。

  八本,玩的战术就比七本更加丰富一些。首先,可以继续用龙流。然后,可以用石法猪,和七本胖法猪的区别一会儿谈。或者,可以用纯野猪。还有,可以用石法武神猪,或者石法皮卡猪,基本和石法猪差不多。可惜的是,我八本一直没有把天使升级起来,没有用过天胖猪。
  介绍一下八本的石法猪,七本的胖法猪,是胖法可以作为主力,野猪收尾跑一片就可以了。八本的石法猪,前期两个石头和法师的工作和七本胖法差不多,进中圈,尽量吸收伤害,加杀掉对方的王。不同的是,八本一般以猪为主力,20多只猪,在石法从一侧破开之后,开始从一个方向放起,要么顺时针,要么逆时针跑,配合三口加血,可以跑完全场,把防御都打完。这个打法的优点是稳定,可以打任何阵型,缺点就是需要技术和对局势的判断,前期石法前戏的位置,石头不要死太快,下猪的位置,放加血的时机,等等。
  纯野猪呢,不用说了,援兵啥完,直接野猪跑全场,打起来简单,但是也看阵型,小心中双炸,来个团灭就不好了。
  石法皮卡猪呢,就是增加前戏,加一个皮卡,把中圈那一波伤害,尽量打足,给后面的野猪减少压力。
  石法武神猪,基本以石法武神为主,让武神进中圈,加狂暴毁灭一切,然后再开始往后面打其他边角防御,并配合野猪收尾。因武神走位的随机性,跑得又快,我自己感觉不是很稳定,算是可以越本打九本两星的打法。因狂暴那波确实毁天灭地。
  八本我用石法野猪,或者石法皮卡猪,可以推任意的八本。龙流,武神等就没那么稳定了。待了大约五六个月,满防了,部落战科技也全满,就升九了。

  九本,就是我目前的阶段,也算小有成就,用石蓝气球可以平带连弩的初九了。
  石蓝,就是援兵要蓝胖,这个兵很强力,配合石头抗,基本进中圈一波,可以把整个阵型的60~70%的防御打掉,而且防空一般也不会太外置,所以防空一般也没了,这个时候用气球收尾,因为对空的就只剩下箭塔,比用野猪要好。四个法术也都不再给后面收尾的兵,全部给那波石蓝。这个打法我还在练习,基本上打回字或者一些没有很多大格子的阵,都能搞定。
  九本就先说到这里,等我再玩玩,再多谈谈吧。

  忘记说引援兵了。这个是七本以前的必修课。
  因为七本和以前都没有毒药法术,如果不先引援兵并杀掉,整个部队都有可能被援兵吃掉,因为比如胖子这种只知道打防御建筑的,无视援兵,被援兵打打就没了。七本之前就不说了,七本如果用龙流,也可以不引援兵,傻傻的龙还是知道有人打他,会反击的。
  引援,六本和之前,基本用弓箭就够了,实在不行,就用一个胖子,稳稳的引出来。七本阵型大了点,用一只猪还是可以稳稳的引出来。
  杀援,七本和之前,我对付援兵都是用30个弓箭。先把援兵引到防御建筑打不到的角落,然后30个弓箭,散开,速度点一片,援兵基本都能杀掉,感觉伤害不够就补一到两个法师在后面,不过基本都够了。为什么要散开?因为很多兵是群攻的,比如龙,比如武神,弓箭聚堆的话,被这个兵一下全杀。其实七本如果知道援兵是武神的话,也可以用三五只苍蝇来免费打掉。
  八本,引援头大一点,因为有的阵,用猪都引不出来,怎么办呢?用三只猪!三只猪打掉第一个建筑,再往里是不可能引不出来援兵的。不过我很少打这种无法引援的阵,虽然我自己的阵是无法引援的。
  八本,不引援也可以,但是一定要法师跟着大部队往前走,不然就算你有毒药,没有法师打,光靠毒药想毒掉援兵,也是不太靠谱。
  九本,基本就不引援了,阵型太大,基本无法引。这个就要靠女王和跟进的法师在狂暴作用下打掉援兵了。

  基本就谈到这里,谈得方法论的具体的东西太多。抽象的理论的东西反而比较少,这个不是我写本文的初衷。
  那就用理论来收尾吧。
  其实,游戏还是战争,理论都是一样的,就是耐打的,一般攻击力就不高。攻击力高的,因为精密,可能就不耐打。你需要的战术是什么呢?就是让耐打的去被打,并且让攻击力高的去打,这样才是合理的分担,并且获取最高的效益。

2017年1月18日星期三

近况和最近折腾的手机

  得有个一年多没写过了,都已经2017年了,离自己的文笔锻炼越来越远啊。
  不知不觉毕业来中兴有个六年半了,也算是个老通信人吧,可惜因为自己不够努力不够优秀到现在也还在基层慢慢混着。
  想做的事还有很多:每天学完艺术家的语言知识,每天读书一个小时,每天跑步半个小时,每天写任意一篇作文;学会一门编程语言,自己定制自己的手机;学会经济学和财报知识,进军美股;想要工作更得心应手一点,能做一些更重要的事情;再列还有一长串。
  大概进步只能定时强迫自己来进行吧。
  刚想结束本文,突然发现最近折腾的手机还没写。。。


  现在用的手机还是两年前买的荣耀6plus,两年的时间还很满意,到现在也找不到一个让我更换的理由。只是呢,自己也比较懒,没有第一个手机三星galaxyS2那样,拿来就是各种刷机,各种root。直到上上周,打部落冲突,突然就想下个挂,多打点资源,这样游戏里面轻松点,然后找了半天,比如叉叉助手之类的,需要手机root才行。只能想办法root了。


  root也简单,我大体说下流程:
  1.解锁,去华为官网输入自己手机的信息获取解锁码,主要是在拨号界面输入各种*#的命令获取信息输入。然后手机进入bootloader状态,或者应该叫fastboot状态,这个可以直接再手机开机状态输入adb reboot bootloader达到,然后用fastboot oem unlock+解锁码进行解锁。
  2.然后就是刷如recovery了,网上各种叫刷如REC的就是了,这个东西呢按我的理解就是手机的某一个独立的区域,可以独立启动,然后用来引导重写手机的system区域的。这个recovery在网上还真不太好找,最终去到某个论坛才找到下载。其实呢,recovery比较有名的就是TWRP,直接去这家的官网找就行了,其他国产的都是拿这家的东西下载下来修改的,为了放心起见,加以去官网的。我虽然刷了国内论坛的,最终还是从官网上面下载然后重写了,使用命令fastboot flash recovery recovery.img
  3.这个论坛比较坑爹的一点呢,就是这个REC里面,竟然没有带su命令,于是我又到xda论坛上面找supersu下载,那个帖子上面说可以直接到googleplay上面下载这个应用来装入su,可惜我试过不行,说是我手机没有root,还是只能下载相应的zip包,然后手机重启到recovery模式,用adb reboot recovery,然后再选择这个包刷入就行了。


  关于刷机,我再多说两句。因为我之前用的三星的手机,刷机如果连到电脑上面刷,都是用的一个叫odin的工具来做的,我大体看了一下刷机包的格式,都是一些img的镜像,这些东西应该都是linux的一个分区做的一个快速恢复的快照。这次用的华为手机,发现原来android adt工具里面自己就有一个刷机的命令,叫fastboot,就是用来写系统的。不知道三星为什么这么特别,应该是自己发明了一个格式,印象中三星的img如果让linux可以读还得再转一次,这就是三星不能直接用fastboot命令的原因吧。

  这个fastboot命令,还是比较强大的,摘录命令如下:
fastboot devices
查看是否有设备
fastboot erase system
fastboot erase cache
fastboot erase config
fastboot erase data
fastboot erase logs
fastboot erase factory
fastboot oem unlock
fastboot oem lock
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash recovery recovery.img
fastboot reboot 
   我还查到可以直接用dd命令来写,这个更牛了,更加说明了fastboot就是直接写img镜像到分区里面。
adb shell
su
1)高通平台:dd if=/data/local/tmp/recovery.img of=/dev/block/platform/msm_sdcc.1/by-name/recovery
2)MTK平台:dd if=/data/local/tmp/recovery.img of=/dev/recovery
3)英伟达nvidia平台:dd if=/data/local/tmp/recovery.img of=/dev/block/platform/sdhci-tegra.3/by-name/SOS
reboot recovery


   最新的TWRP我还专门到recovery模式去看了看,竟然刷机既可以刷zip包,又可以刷img包了,看来是把fastboot这个刷机的功能也写进去了,也能直接写镜像了。
   提到这里,再说一下,ZIP包。zip包呢,就是一个正常的压缩包,再windows下面也可以打开看,里面有脚本文件,一般在META-INF\com\google\android这个目录下面,里面一个是可以用文本编辑器直接打开看的,就是实际这个脚本会干啥,另外一个呢,就是可执行的二进制程序了,我理解recovery模式下面,就是那这个二进制程序进行执行,然后把其他对应的文件,写到对应的目录下面去。


   后面我还折腾了啥呢,就是折腾xposed框架了。这个框架,之前我用三星的时候,经常玩,可以有很多定制化功能的插件,如直接在wifi界面下面点到某个无线查看密码等。
   这个装的过程还是挺痛苦的,主要因为不知道装完之后第一次重启要等二十多分钟。。。。导致我以为变砖了,就刷回原REC救砖。。。泪奔。。。。
   言归正传,这个安装和supersu一样,也是可以到安装相应的apk应用程序,由这个应用程序帮你装,要么呢,就是到recovery模式下面,刷一个对应的zip包,都可以,在xda上面都可以找到。
   装完之后,就是安装一些插件了,插件安装过程中继续痛苦,就是装好之后手机不停的重启。因为我装的是查看wifi密码的,把wifi关掉,手机终于稳定了,然后赶紧卸载这个插件,重启,再试试打开wifi,还好稳住了。
   华为手机毕竟是定制化的系统,好多东西是不能用的,比如这种修改系统界面的等等,就会导致手机重启。最后我也只用上了微信的一些插件,如抢红包,群管理,通知管理等等。还算实用。这会儿我想说一句,以后再也不买国产手机,但是一转念,上次买这个手机也是这么想过。。。。估计下个手机还是走性价比路线的国产手机了,不挣扎了。
   

  全说完了,似乎漏掉了叉叉助手,那东西我早卸载了。。。