2020年5月28日星期四

RetroPie的一些內建快捷鍵

RetroPie的一些內建快捷鍵操作方式:
快捷鍵(Hotkeys) 功能(Action)
選擇(Select)+開始(Start) 離開(Exit)
選擇(Select)+右上方按鈕(Right Shoulder) 存檔(Save)
選擇(Select)+左上方按鈕(Left Shoulder) 讀檔(Load)
選擇(Select)+向右按鈕(Right) 增加存檔編號(Input State Slot Increase)
選擇(Select)+向左按鈕(Left) 減少存檔編號(Input State Slot Decrease)
選擇(Select)+X按鈕 RGUI 選單(Menu)
選擇(Select)+B按鈕 重置(Reset)




设置4人:Select+X to access RGUI.Quick Menu -> Controls Change “User 2 Device Type” to Multitap.Select “Save Game Remap File”
特别需要注意的是,有些游戏(如名将)则需要对rom框体进行调整才能实现4人同时游戏,比如在WinKawaks中调整“Dip开关”,在Mame中调整“机台设置”选项 CPS是进入BIOS设置等等…

2020年5月22日星期五

restropie 支持中文显示

sudo apt-get install libsdl2-dev libboost-system-dev libboost-filesystem-dev libboost-date-time-dev libboost-locale-dev libfreeimage-dev libfreetype6-dev libeigen3-dev libcurl4-openssl-dev libasound2-dev libgl1-mesa-dev build-essential cmake fonts-droid-fallback

sudo apt-get install libsdl2-dev libboost-system-dev libboost-filesystem-dev libboost-date-time-dev libboost-locale-dev libfreeimage-dev libfreetype6-dev libeigen3-dev libcurl4-openssl-dev libasound2-dev libgl1-mesa-dev build-essential cmake fonts-droid



sudo apt-get install fonts-droid-fallback

sudo apt-get install fonts-droid-fallback

2020年5月21日星期四

蓝天 cli 代码

http://www.xxx.com/caiji/index.php?s=/admin/Task/collect&id=3



可以改下文件SkycaijiApp》admin》common.php第126行
  1. $commandStr=$phpPath;
复制代码

2020年5月17日星期日

一次性搞掂烦人的gpg key 要根据不同的deb 服务器修改相应的key去安装

## sudo apt-key update
###   rsync -az --progress keyring.debian.org::keyrings/keyrings/ .
#### AA8E81B4331F7F50  112695A0E562B32A  04EE7237B7D453EC 648ACFD622F3D138 DCC9EFBF77E11517 1AF1A20A4CC00851
###  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AA8E81B4331F7F50
###  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 112695A0E562B32A
###  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
###  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
###  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DCC9EFBF77E11517
###  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1AF1A20A4CC00851
###  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6CA82022500670E92D66AE3F1AF1A20A4CC00851

###############deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
##############deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
#deb [arch=armhf] http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

### /usr/bin/curl -fsSL http://raspbian.raspberrypi.org/raspbian.public.key | apt-key add -
### curl -fsSL https://download.docker.com/linux/raspbian/gpg | apt-key add -
### curl -fsSL http://archive.raspberrypi.org/debian/raspberrypi.gpg.key | apt-key add -
deb [arch=armhf] https://download.docker.com/linux/raspbian buster stable
#deb [arch=armhf] http://archive.raspberrypi.org/debian buster main stable
###   gpg --keyserver subkeys.pgp.net --recv-keys 4CC00851
###   gpg --export --armor 4CC00851 | sudo apt-key add -
###  deb http://sshmenu.sourceforge.net/debian stable contrib


deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/ buster/updates main contrib
deb-src http://security.debian.org/ buster/updates main contrib

#http://ftp.debian.org/debian/
deb http://httpredir.debian.org/debian buster main non-free contrib
deb-src http://httpredir.debian.org/debian buster main non-free contrib
deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free
deb http://deb.debian.org/debian buster-backports main contrib non-free
deb-src http://deb.debian.org/debian buster-backports main contrib non-free

###  gksu --desktop /usr/share/applications/software-properties.desktop /usr/bin/software-properties-gtk
### deb [arch=amd64] https://download.docker.com/linux/debian buster stable
###  sudo apt-get install software-properties-common

### curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
### sudo apt-key fingerprint 0EBFCD88
### sudo add-apt-repository "deb [arch=amd64 https://download.docker.com/linux/debian $(lsb_release -cs) stable"

### deb tor+http://vwakviie2ienjx6t.onion/debian buster main
### deb-src tor+http://vwakviie2ienjx6t.onion/debian buster main

### deb tor+http://sgvtcaew4bxjd7ln.onion/debian-security buster/updates main
### deb-src tor+http://sgvtcaew4bxjd7ln.onion/debian-security buster/updates main

### deb tor+http://vwakviie2ienjx6t.onion/debian buster-updates main
### deb-src tor+http://vwakviie2ienjx6t.onion/debian buster-updates main

2020年5月16日星期六

dockerfile用到的关键字


dockerfile用到的关键字

关键字作用备注
FROM指定父镜像指定dockerfile基于那个image构建
MAINTAINER作者信息用来标明这个dockerfile谁写的
LABEL标签用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看
RUN执行命令执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN ["command" , "param1","param2"]
CMD容器启动命令提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD ["command" , "param1","param2"]
ENTRYPOINT入口一般在制作一些执行就关闭的容器中会使用
COPY复制文件build的时候复制文件到image中
ADD添加文件build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务
ENV环境变量指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value
ARG构建参数构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数
VOLUME定义外部可以挂载的数据卷指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME ["目录"]
EXPOSE暴露端口定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp
WORKDIR工作目录指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径
USER指定执行用户指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户
HEALTHCHECK健康检查指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制
ONBUILD触发器当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大
STOPSIGNAL发送信号量到宿主机该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。
SHELL指定执行脚本的shell指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell








2020年5月10日星期日

系统文件修改


open the file in a text editor:
1
sudo nano /etc/security/limits.conf
And add at the end:
1
2
* - nofile 16384
root - nofile 16384
samba hard nofile 32768


nano /etc/sysctl.conf

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
fs.inotify.max_user_watches=1048576




2020年5月8日星期五

Win10家庭版启用组策略gpedit.msc

pushd "%~dp0" dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"


【操作步骤】

1、首先你需要在桌面上新建一个txt文本文档。然后将以下代码复制到这个新建的txt文本文档中。

@echo off
pushd "%~dp0"
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"
pause


2、保存,关闭,重命名这个新建文本文档,修改其后缀.txt变成.cmd。


运行完毕,你的电脑就可以使用组策略gpedit.msc了。

中国国内ip地址段

https://www.ipdeny.com/ipblocks/data/countries/cn.zone

2020年5月7日星期四

Docker容器、镜像和文件的转化关系

容器转成镜像:
sudo docker commit imagename

容器转成文件:
sudo docker export > /home/exportname.tar

镜像转成文件:
sudo docker save imagename01 > /home/savename.tar
注:一般情况下,savename.tar比exportname.tar大一点点而已,export比较小,因为它丢失了历史和数据元metadata

文件转成镜像:
cat /home/exportname.tar | sudo docker import - imagename:latest

save.tar文件转成镜像:
docker load < /home/savename.tar

查看转成的镜像:
sudo docker images

注意:这里一个镜像经过n次转化之后,可以用sudo docker images --tree查看历史,用docker tag 你可以回到某个层(只针对save命令可以回到某个层!)


————————————————

原文链接:https://blog.csdn.net/superbfly/article/details/65435080


06、container、image、文件的互相转化
1、情况说明
image(又称为镜像):是通过 Dockerfile file创建的,通过 docker image ls 查看;
container(容器):是 image 通过 docker container run [image] 来生成;
文件(就是文件):方便管理,适用于将一个服务器上的image转移/拷贝其他服务器上(虽然也可以通过传到 Docker 官方仓库来实现);
他们各有适用范围,但在某些情况下,需要互相转化。

2、image转container和文件
2.1 转container
之前提过,略;

2.2 转文件
命令:

docker save [image名] > [文件路径(需要是tar文件)]
1
说明:

[image名]:通过 docker image ls 来查询;
[文件路径(需要是tar文件)]:将 image 打包为一个 tar 文件;
然后就可以拷贝走这个 tar 文件了,至于如何转回 image,参考下面;
3、container转image和文件
3.1、转image
命令:

docker commit [containerID] [imagename]:[version]
1
说明:

docker commit:表示container转image,固定的,很好理解;
[containerID]:一个容器的ID,可以是运行状态;
[imagename]:转换后的 image 的名字,可以自定义,很好理解;
:[version]:可选,tag,也可以认为是版本号,不加默认是 latest,加了就是指定的tag;
示例:

docker commit f46b174f0c69 c2image:0.0.2
1
结果:

[root@qq20004604 ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
c2image                  0.0.2               2b86002ebd4b        4 seconds ago       907MB
docker-demo-01-express   0.0.1               416f1050c9bf        21 hours ago        907MB
1
2
3
4
3.2、转文件
命令:

docker export [containerID] > [文件路径(需要是tar文件)]
1
说明:

docker export [containerID] >:都好理解,略略略;
[文件路径(需要是tar文件)]:将容器打包为一个 tar 文件;
容器打包成文件,比 image 打包成文件要小一些,因为它丢失了历史和数据元metadata;
4、文件转image和container
4.1、转image
基本说明:

【tar文件】可以是从 image 转来的,也可以是从 container 转来的;
这些【tar文件】都可以转为 image;
转换并不会带来之前的日志(指转换前的),所以如果需要日志,记得提前备份;
方法一:

命令:

docker load < [tar文件路径]
1
说明:

将 tar文件 转为 image;
转换完后,可以通过 docker images 查看;
这种方法似乎并不能指定转换结束后的 image 的名字;
方法二:

命令:

docker import [tar文件名] [imagename]:[version]
1
说明:

docker import:导入,固定的意思,略;
[tar文件名]:就是来自于容器或者image压缩成的【tar文件】咯;
[imagename]:导入后的 imagename,如果不写,那么最后名字和tag都将是
:[version]:可选,tag名,如果不填,则默认为 latest;
4.2、转容器
没必要,先转 image,再从 image 生成容器;

更多内容参见我的github项目:https://github.com/qq20004604/docker-learning
————————————————
版权声明:本文为CSDN博主「qq20004604」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq20004604/article/details/89322179





2020年5月6日星期三

raspberry 重要文件路径

/etc/modules-load.d/docker.conf

/etc/modules-load.d/modules.conf

/etc/modules-load.d/rpi.conf

/etc/modules

在Docker 中运行 OpenWrt 旁路网关

https://mlapp.cn/376.html

步骤开始

成功登陆到树莓派的 SSH 后,在拉取镜像之前,我们还需要进行一些额外的工作:

1.打开网卡混杂模式

sudo ip link set eth0 promisc on

2.创建网络

(须结合实际网络情况,不能照抄命令)
docker network create -d macvlan --subnet=192.168.123.0/24 --gateway=192.168.123.1 -o parent=eth0 macnet
这一条命令需要根据树莓派所处的网络环境来做修改,可以使用 sudo ifconfig命令来查看树莓派 eth0 网卡获得的 IP 地址,如果树莓派获得的 IP 地址为 192.168.2.154,那么说明树莓派处在 192.168.2.x网段,相应的,命令中的192.168.123.0192.168.123.1需要被替换成 192.168.2.0192.168.2.1
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=eth0 macnet
此时,我们使用 docker network ls命令可以看到网络macnet已建立成功:
$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
10e676133746        bridge              bridge              local
f5308b94e8fa        host                host                local
16745ea66852        macnet              macvlan             local
5e72e41ea02a        none                null                local

3.拉取镜像

若身处国内,为提高拉取速度,请拉取阿里云仓库中的镜像:
docker pull registry.cn-shanghai.aliyuncs.com/suling/openwrt:latest
同时小苏也提供存放在 Docker 官方仓库 中的镜像:
docker pull sulinggg/openwrt:latest
镜像拉取完成后,我们可以执行docker images命令查看现存镜像:
$ docker images
REPOSITORY                                              TAG                 IMAGE ID            CREATED             SIZE
registry.cn-shanghai.aliyuncs.com/suling/openwrt        latest              4f4bc5dca2d9        3 hours ago         112MB
可见,镜像已成功拉取到本地。

4.创建并启动容器

docker run --restart always --name openwrt -d --network macnet --privileged registry.cn-shanghai.aliyuncs.com/suling/openwrt:latest /sbin/init
其中:
--restart always参数表示容器退出时始终重启,使服务尽量保持始终可用;
--name openwrt参数定义了容器的名称;
-d参数定义使容器运行在 Daemon 模式;
--network macnet参数定义将容器加入 maxnet网络;
--privileged 参数定义容器运行在特权模式下;
registry.cn-shanghai.aliyuncs.com/suling/openwrt:latest为 Docker 镜像名,因容器托管在阿里云 Docker 镜像仓库内,所以在镜像名中含有阿里云仓库信息;
/sbin/init定义容器启动后执行的命令。
启动容器后,我们可以使用 docker ps -a命令查看当前运行的容器:
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a26cee7cade6        openwrt:latest      "/sbin/init"        3 hours ago         Up 3 hours                              openwrt
若容器运行信息STATUS列为 UP状态,则说明容器运行正常。

5.进入容器并修改相关参数

(须结合实际网络情况,不能照抄配置)
docker exec -it openwrt bash
其中:
openwrt为容器名称;
bash为进入容器后执行的命令。
执行此命令后我们便进入 OpenWrt 的命令行界面,首先,我们需要编辑 OpenWrt 的网络配置文件:
vim /etc/config/network
我们需要更改 Lan 口设置:
config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.123.100'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '192.168.123.1'
        option broadcast '192.168.123.255'
        option dns '192.168.123.1'
其中:
所有的 192.168.123.x 需要根据树莓派所处网段修改,option gatewayoption dns填写路由器的 IP,若树莓派获得的 IP 为 192.168.2.154,路由器 IP 为192.168.2.1,则需要这样修改:
config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.2.100'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '192.168.2.1'
        option broadcast '192.168.2.255'
        option dns '192.168.2.1'
option ipaddr 项目定义了 OpenWrt 的 IP 地址,在完成网段设置后,IP最后一段可根据自己的爱好修改(前提是符合规则且不和现有已分配 IP 冲突)。

6.重启网络

/etc/init.d/network restart

7.进入控制面板

在浏览器中输入第 5 步option ipaddr 项目中的 IP 进入 Luci 控制面板,若option ipaddr 的参数为 192.168.123.100,则可以在浏览器输入 http://192.168.123.100进入控制面板。
用户名:root
密码:password

8.关闭 DHCP 服务

在 “网络 - 接口 - Lan - 修改” 界面中,勾选下方的 “忽略此接口(不在此接口提供 DHCP 服务)”,并“保存&应用”。
关闭 “DHCP 服务”

9.主路由 DHCP 设置

进入路由器后台中,将主路由的 DHCP 的默认网关和 DNS 服务器设置为第 5 步中option ipaddr 项目中的 IP。
主路由 DHCP 设置

10.重新连接路由器

完成以上操作后,断开设备(如手机,电脑)与路由器的连接,重新连接路由器,连接路由器的设备将获取到我们设置到的 IP。

其他修复

1.关闭 WLAN 硬件加速

设置旁路路由后,若出现访问国内网站网速慢,不稳定的情况(多见于 Pandavan 及其改版固件,如华硕老毛子固件),请在路由器的控制面板中关闭有关 WLAN 的硬件加速,比如选择“Offload TCP/UDP for LAN”(若未出现此现象请忽略):
关闭 WLAN 硬件加速

2.宿主机网络修复

OpenWrt 容器运行后,宿主机内可能无法正常连接外部网络,需要修改宿主机的 /etc/network/interfaces 文件以修复:
(须结合实际网络情况,不能照抄配置)
cp /etc/network/interfaces /etc/network/interfaces.bak # 备份文件
vim /etc/network/interfaces # 使用 vim 编辑文件
以“树莓派爱好者基地”64 位 Debian 为例,向文件末尾添加:
auto eth0
iface eth0 inet manual

auto macvlan
iface macvlan inet static
  address 192.168.123.200
  netmask 255.255.255.0
  gateway 192.168.123.1
  dns-nameservers 192.168.123.1
  pre-up ip link add macvlan link eth0 type macvlan mode bridge
  post-down ip link del macvlan link eth0 type macvlan mode bridge
其中,所有的 192.168.123.x都需要按照树莓派所处网段更改,gatewaydns-nameservers填写路由器的 IP,若树莓派获得的 IP 为 192.168.2.154,路由器 IP 为192.168.2.1,则需要这样修改:
auto eth0
iface eth0 inet manual

auto macvlan
iface macvlan inet static
  address 192.168.2.200
  netmask 255.255.255.0
  gateway 192.168.2.1
  dns-nameservers 192.168.2.1
  pre-up ip link add macvlan link eth0 type macvlan mode bridge
  post-down ip link del macvlan link eth0 type macvlan mode bridge
修改后重启树莓派,之后树莓派的局域网 IP 地址将会固定为/etc/network/interfaces文件中address参数中的地址。

3.手动指定网关

如果路由器固件不支持自定义 DHCP 服务的网关及 DNS 地址(常见于路由器官方固件),或者只希望局域网下的个别设备接入旁路网关时,须在接入设备上做以下配置:

安卓:

安卓设置
需要在安卓的 WIFI 设置内将 IP 获取方式更改为“静态”或“手动”,其中:
“IP 地址”项目需要更改为网段内不冲突的地址;
“网关”或“路由器”项目需要更改为旁路网关 IP 地址;
“前缀长度”项目填写“24”;
“DNS”项目需要更改为旁路网关 IP 地址(两个 DNS 输入框填写一个就可以)。
完成并提交设置后,关闭 WIFI 开关再打开,连接设置的 WIFI 热点,若当前网络参数为设定值,则证明设置成功。

Windows:

Windows 设置
在无线热点的“属性”界面下,点击 “IP 设置 - 编辑”按钮,在弹出框中更改 IP 分配模式为“手动”,打开 IPV4 的开关,根据所处网段及上文安卓的相关设置填写相关参数即可。

注意事项

  1. 文章所述方案适用于光猫或路由器已完成宽带拨号的网络环境,未测试也不推荐使用 Docker 内的 OpenWrt 进行宽带拨号
  2. OpenWrt 容器跟随树莓派系统启动,无需手动干预;
  3. 由于容器内系统内核共享宿主机内核,所以在 Luci 面板的 “内核版本”项与宿主机内核版本一致;
  4. 在对容器进行停止或删除操作时,树莓派可能会发生卡顿现象,SSH 可能会断开,1~2 分钟后会恢复正常,目前原因不明;
  5. 经测试,发现 Adblock 不工作,UnblockNeteaseMusic 需要自行设置代理,除此之外容器中的 OpenWrt 多数应用工作正常,如有发现不能正常工作的应用请评论反馈~




在PVE使用虚拟 USB 存储设备 + ARPL 引导 DSM

  部分内容来自: https://blog.myds.cloud/archives/synoboot-usb-image-in-pve-virtual-machine.html 虚拟机建好之后,打开配置文件 nano /etc/pve/qemu-server/100.conf ...