收了一个Zero WH,外加一个UPS Hat。接上以后,发现putty使用串口无法登录,于是在网上查来查去,最后搞定。记录一下。
树莓派的SoC有两个UART,一个叫PL011一个叫miniUART。默认扩展插针上的UART是PL011。但是树莓派的ZeroW\3B\3B+和以往的型号不一样,增加了蓝牙,并且默认连接在PL011上,这时miniUART自动连接在扩展插针上。这样的话,如果不修改cmdline.txt和config.txt的情况下,是无法连接串口控制台的。
PL011和miniUART的主要区别在于,PL011是外部的串口模块,有独立的时钟,速率稳定为115200,输入输出缓存会相对大一些。miniUART没有独立时钟,受到core主频的影响。
根据树莓派官方文档 https://www.raspberrypi.org/documentation/configuration/uart.md 的描述,最简单的解决办法是关闭蓝牙,这样PL011会自动切换到扩展插针上。管理蓝牙模块的办法也很简单,在config.txt里面加上
dtoverlay=pi3-disable-bt
网上有介绍使用非对称密钥登录SSH的文章会说PuTTY生成的公钥,对SSH兼容不好。近期研究发现,问题在于PuTTYgen生成的公钥直接保存的格式和其文本框中的格式不一样。
如果使用保存的文件就会有问题,但是如果从文本框复制,再在登录后vi编辑文件粘贴进去,就没有问题。打开保存的文件,就会发现其实两边的格式是不一样的。
VSCode的插件现在都可以设置依赖关系了。Spring Boot的需要两个插件,一个是Java Extension Pack,一个是Spring Boot Extension Pack。比较诡异的是这几个插件的依赖关系。大家自己看吧
我之前的一堆树莓派都找不到了,但是翻出来了一个带微雪3.5寸SPI液晶屏的B+,有点古董。正好前段时候收了一个HDMI的3.5寸液晶屏,顺手对比一下,再写一个配置教程。
微雪的这个屏叫3.5A,应该是有好几个版本了,我手里这个是V3,但是微雪淘宝店里的照片已经不一样了。好在驱动还是一样的。微雪还有一个3.5B,是IPS液晶的面板,也视角会更大。另外还有一个3.5 HDMI产品,也是IPS的面板。这三块屏都是480*320的分辨率。
这三块屏的区别是,HDMI那块带一个驱动芯片,1920的信号输出也能直接显示,模糊而已。因为使用HDMI,一般的img都不需要驱动,另外HDMI的带宽要好,显示速度要快。SPI的这两块,由于数据带宽低,屏幕上更新的内容多了以后,会有明显的刷屏。而且因为SPI不是标准的视频接口,所以需要微雪的接口驱动才能工作。
相应的价格也是3.5HDMI最高,3.5A最便宜,我手里这两个屏,正好一头一个。
微雪网站资料很丰富,3.5A的页面如下:www.waveshare.net/wiki/3.5inch_RPi_LCD_(A) 这里面提供了一驱动包,一个安装好驱动的raspbian的镜像,以及一个说明文档。这个文档说明了驱动包怎么用,以及内置驱动的img怎么做tf卡。驱动包地址为http://www.waveshare.net/w/upload/3/34/LCD-show-180331.tar.gz
我看了一下驱动包怎么安装,也打开了LCD35-show这个脚本,发现这里面基本上两部分内容,显示编译驱动,然后配置控制台驱动和x的驱动。正好看到包里面有编译好的驱动,至少在这个B+上目前工作正常,下面就说说ArchlinuxARM上怎么配置。
1.在驱动包的根目录下有一个waveshare35a-overlay.dtb文件,把这个文件复制两次到你archlinuxarm的boot分区的overlays目录下,一次保持原名,一次改名为waveshare35a.dtbo。
2.修改config.txt文件,在最后加上dtoverlay=waveshare35a
3.修改cmdline.txt文件,在最后加上一个空格和fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo
这样重启以后,经过一段时间的浅灰色的显示阶段,控制台就显示出来了。
这个办法目前在我的B+上的ArchlinuxARM上可用,uname -a显示为
Linux alarmpi 4.14.59-1-ARCH #1 SMP Tue Jul 31 00:57:25 UTC 2018 armv6l GNU/Linux
做tf的系统(我的系统就是archlinux)需要安装f2fs-tools。
针对ArchlinuxARM官方的安装过程,替换mkfs.ext4为mkfs.f2fs
目前树莓派的最新内核,以及aarch64最新内核都会支持这个文件系统,不需重新编译内核
系统第一次启动以后,需要安装f2fs-tools,默认的跟目录包不包含它。resize.f2fs和fsck.f2fs会依赖这个包。
对于f2fs能对tf有多少提升,现在很多人意见不统一,至少他是针对tf设计的。
1.dotnet new webapp –o aspnetcoreapp
新建webapp类型的项目到aspnetcoreaspp文件夹
2.cd aspnetcoreapp
3.dotnet dev-certs https –trust
为项目创建https的证书,并信任这个证书
4.dotnet run
5.浏览https://localhost:5001
近期收了一个新的树莓派3B+和一个二手的3B,总结一下:
1.官方表示3B和3B+是同一个处理器,只是主频高了,有线网变成了千兆,无线支持了4G。
2.3B和3B+在使用armv7指令集,也就是arm32的时候,基本没有什么区别。
3.3B和3B+在使用armv8指令集,也就是aarch64的时候,3B上基本正常的系统,3B+上基本有线网络、无线网络都会出问题。
4.除了ArchLinuxARM之外,都没有官方的树莓派aarch64的系统。即使如此,3B+也无法正常使用。
5.3B上跑aarch64的系统,外加f2fs的话,计算和IO都有很大的提升。
6.3B+目前看上去更像一个内置无线网络和蓝牙的2B
7.2B有一个1.2版,使用的是3B的处理器,而3B的版本上来就是1.2
8.想试试aarch64的话,3B比3B+更合适
9.淘宝3B手机普遍比3B+贵20
4月份的电脑安装的1709的nov版,在现在安装18的4月版的时候,被提示磁盘分区表不是GPT。对于我这种c盘系统,d盘备份的情况,就导致了新系统无法安装了。不知道这是出于什么考虑
习惯了Arch的仓库以后,Raspbian的仓库老的不能再老了。查了Docker的网站,不能直接装,需要用如下的方法,先搞下来一个脚本来安装,速度有点慢:
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh
真的是有慢,用的docker官方的仓库。
收了一个HDMI的3.5寸屏,默认是1920的字太小看不清。修改启动分区中的config.txt文件,添加或者修改如下
hdmi_group=2
hdmi_mode=87
hdmi_cvt 480 320 60 6 0 0 0
这个问题是给gogs前面加了nginx起https发生的,报错如下:
error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large
用https://stackoverflow.com/questions/7489813/github-push-error-rpc-failed-result-22-http-code-413 的办法添加 “client_max_body_size 50m;”解决。
注:
1.以前没给gitlab前置nginx起https,但是这个只设置nginx就解决问题,估计是nginx的问题。
2.client_max_body_size默认1m
3.client_max_body_size可以加载server或者http内,建议加在server内,减少影响范围。
4.大小根据自己的设置。
几个方案,基本上需要能科学上网,或者有化外vps
方案1:
有一条虚拟专用网络能科学上网。
方案2:
走代理,go get会在失败的时候,走环境变量http_proxy或https_proxy指定的地址。ssh能提供sock5代理,可以用privoxy转成http代理
方案3:
直接把需要go get在化外vps上执行,然后将生成的相应目录打包拉回。但是Windows上这个方法需要手动把bin和pkg目录都删掉,只留src,重新编译windows的二进制和静态库
以上方法1在windows上实验通过,方案2和3在linux上实验通过。
之前用Docker的方式在阿里云给公司部署了1台Gitlab CE,当时觉得部署起来很简单方便。这次公司要把这个git迁移会IDC,记录过程如下:
1.暂停老服务器的服务
docker stop gitlab
2.迁移数据
进入新服务器的/srv目录,sftp到老服务器,执行get –r /srv/gitlab /srv
-r参数会把整个目录都拿下来
3.新服务器启用安装docker
略
4.下载gitlab-ce镜像
略
5.运行容器
按照https://docs.gitlab.com/omnibus/docker/ 中 Run the Image章节运行。
6.迁移预处理
docker exec -it gitlab update-permissions
docker restart gitlab
再重启之后,重新对域名做解析,gitlab服务就正常了。
另,gitlab文档说更换image的版本,可以实现升级,有闲的兄弟可以试试,哈哈
swapfile简单的说就是不使用交换分区而使用文件来交换内存,这个有点像windows的pagefile。我为什么要使用swapfile而不使用交换分区呢?因为我有强迫症,我总是迫切自己roofs一定要在sda1上……
步骤比较简单:
1.创建交换文件
# fallocate -l 512M /swapfile
需要注意的是,如果文件系统是XFS的话,这么做可能会导致问题,那么可以用dd来完成:
# dd if=/dev/zero of=/swapfile bs=1M count=512
2.修改文件的权限
# chmod 600 /swapfile
3.类似格式化交换分区
# mkswap /swapfile
4.激活交换文件
# swapon /swapfile
其实这个时候通过free -h已经可以看到内存数据中的交换信息了。
5.最后一步是在fstab中添加交换文件的信息,使系统重启以后能自动激活交换文件
/swapfile none swap defaults 0 0
到此,打完收功。在ArchlinuxLinux的Wiki中其实是还有卸载这个交换文件的方法,但是我觉的这个用处不大,不在这里记录了,需要的时候去查就好了。
不知道Docker公司是怎么想的,明明其Dockerfile没有指定必须x64,却不提供i686的镜像,只好每次有新版本的时候,重新制作一次。步骤如下:
1.先从Docker公司的github里面获取最新的Dockerfile
git clone https://github.com/docker-library/mariadb.git
2.进入mariadb/10.2目录,然后执行
docker build –t mariadb:10.2.13 .
然后等着就好了。
建议开始之前,先把debian:jessie升级到最新,这样能省很多debian做apt update的时间。
原本CentOS7里面的Docker是1.12版本的,没觉得很老,但是在自动化构建asp.net core的时候,不支持Dockerfile中的FROM AS语法,只好查一下CentOS7下怎么安装新的Docker-CE,如下:
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
systemctl start docker
目前安装的是17.09.0-ce版本
CentOS的包相对还是很保守,没有新内核,没有新软件,也就没有功能。现在4.14的内核已经进入LTS序列了,CentOS还是3.10的内核,捉急
特地研究了一下怎么升级CentOS 7的内核,简单的说CentOS的库里面没有,装其他仓库的,比如elrepo.org里面的过程如下:
rpm —-import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum —-enablerepo=elrepo-kernel install kernel-ml
写这个blog的时候,已经可以安装4.14.3内核了,后面需要修改grub默认使用的内核:
先vi /etc/default/grub,改为GRUB_DEFAULT=0
然后重新生成grub的配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
最近受ArchLinux官方的Dockerfile的启发,做了一个Archlinux的安装脚本,发布在https://github.com/bh1rio/archlinux-install
里面的脚本,可以在安装iso启动以后,wget后来运行。这个脚本也适用Archlinux32,但是需要修改mirroslist文件中的镜像服务器地址,目前ustc和yun-idc的mirror还没有ArchLinux32的镜像。
如果你希望干预修改root的密码,你可以注销掉其中的passwd行,不修改问题也不大,因为login的时候root不需要密码。login进去再修改密码就好了
当然你也可以fork自己的版本然后修改。比如我的hptc小机器,就可以加入raid相关的代码。
如果你的网络够快,5分钟就可以准备好一个干净的Archlinux。(嗯,我这里是500Mb的光纤)
近期评论