关于树莓派Raspberry Pi Zero W、3B、3B+使用串口控制台的问题

2018年12月20日 没有评论

收了一个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

分类: Raspberry Pi 标签:

关于PuTTYgen生成的公钥

2018年11月23日 没有评论

网上有介绍使用非对称密钥登录SSH的文章会说PuTTY生成的公钥,对SSH兼容不好。近期研究发现,问题在于PuTTYgen生成的公钥直接保存的格式和其文本框中的格式不一样。

如果使用保存的文件就会有问题,但是如果从文本框复制,再在登录后vi编辑文件粘贴进去,就没有问题。打开保存的文件,就会发现其实两边的格式是不一样的。

分类: 未分类 标签:

VS Code配置Spring Boot开发环境-安装插件

2018年8月11日 没有评论

VSCode的插件现在都可以设置依赖关系了。Spring Boot的需要两个插件,一个是Java Extension Pack,一个是Spring Boot Extension Pack。比较诡异的是这几个插件的依赖关系。大家自己看吧

image

image

image

image

分类: Java, Visual Studio 标签:

微雪的SPI液晶屏在ArchlinuxARM上的设置

2018年8月8日 没有评论

我之前的一堆树莓派都找不到了,但是翻出来了一个带微雪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

在ArchlinuxARM中使用F2FS文件系统

2018年8月3日 没有评论

做tf的系统(我的系统就是archlinux)需要安装f2fs-tools。

针对ArchlinuxARM官方的安装过程,替换mkfs.ext4为mkfs.f2fs

目前树莓派的最新内核,以及aarch64最新内核都会支持这个文件系统,不需重新编译内核

系统第一次启动以后,需要安装f2fs-tools,默认的跟目录包不包含它。resize.f2fs和fsck.f2fs会依赖这个包。

对于f2fs能对tf有多少提升,现在很多人意见不统一,至少他是针对tf设计的。

分类: ARM, Linux, Raspberry Pi 标签:

dotnet core点滴:创建asp.net core项目

2018年7月30日 没有评论

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

分类: dotNET 标签:

树莓派3B和3B+目前阶段的主要区别

2018年7月26日 没有评论

近期收了一个新的树莓派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

分类: Raspberry Pi 标签:

新版Win10安装

2018年7月20日 1 条评论

4月份的电脑安装的1709的nov版,在现在安装18的4月版的时候,被提示磁盘分区表不是GPT。对于我这种c盘系统,d盘备份的情况,就导致了新系统无法安装了。不知道这是出于什么考虑

分类: 未分类 标签:

Raspbian上安装Docker

2018年7月5日 没有评论

习惯了Arch的仓库以后,Raspbian的仓库老的不能再老了。查了Docker的网站,不能直接装,需要用如下的方法,先搞下来一个脚本来安装,速度有点慢:

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh

真的是有慢,用的docker官方的仓库。

分类: Docker, Raspberry Pi 标签:

树莓派修改HDMI分辨率

2018年7月4日 没有评论

收了一个HDMI的3.5寸屏,默认是1920的字太小看不清。修改启动分区中的config.txt文件,添加或者修改如下

hdmi_group=2
hdmi_mode=87
hdmi_cvt 480 320 60 6 0 0 0
分类: Raspberry Pi 标签:

关于通过https提交git内容过大

2018年6月2日 没有评论

这个问题是给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.大小根据自己的设置。

分类: Git 标签:

关于go get失败的处理

2018年4月12日 没有评论

几个方案,基本上需要能科学上网,或者有化外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上实验通过。

分类: Go 标签:

迁移docker方式安装的gitlab-ce

2018年4月10日 没有评论

之前用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的版本,可以实现升级,有闲的兄弟可以试试,哈哈

分类: Docker, Git 标签: ,

在Archlinux中使用swapfile

2018年2月27日 3 条评论

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中其实是还有卸载这个交换文件的方法,但是我觉的这个用处不大,不在这里记录了,需要的时候去查就好了。

分类: Linux 标签:

给i686制作mariadb的docker镜像

2018年2月25日 没有评论

不知道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的时间。

分类: Docker, Linux, MySQL 标签: , ,

有人在github上fork了我写的arch安装脚本

2018年2月5日 没有评论
分类: 未分类 标签:

给docker中的mongodb开启权限

2017年12月27日 没有评论

先创建docker容器

docker run –name=mongodb -p 27017:27017 –restart=always -d mongo:3.6.0 –auth

在启动容器的bash

docker exec -it mongodb mongo admin

然后在提示符后执行

db.createUser({ user: ‘admin’, pwd: ‘admin’, roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

说明:

  1. 使用的是docker官方的镜像
  2. 创建容器的时候,在最后要加—auth
  3. 执行创建管理用户的以后,登录会需要选择用户的管理库为admin
  4. 之后创建其他库的访问账号,也要在admin内创建账号,再分配其他库的权限。
分类: Docker 标签: ,

CentOS安装Docker-CE

2017年12月5日 没有评论

原本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版本

分类: Docker, Linux 标签: ,

CentOS7安装新内核

2017年12月5日 没有评论

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

分类: Linux 标签:

自动安装Archlinux的脚本

2017年12月5日 没有评论

最近受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的光纤Smile

分类: Linux 标签: