debian从11升级到12

最近Debian升级,带来了新的特性:

➡️Linux 内核升级 6.1

Debian 12“bookworm”发布后,最值得关注的事情之一无疑是 Linux 内核的升级。内核版本从 5.10 版本升级到 6.1 LTS 版本,这意味着用户现在可以充分利用更新的驱动程序来支持新的硬件,并直至至少 2026 年 12 月的长期支持。

➡️新的 non-free 固件仓库

Debian 12“bookworm”的另一个重大变化是新的 non-free 固件仓库。与只有 free 和开源固件的系统不兼容的用户可以使用这一仓库。不再需要提供两种不同的 ISO 镜像文件,Debian 12 ISO 文件默认包含 free 和 non-free 固件。使用 non-free 固件并且从 Debian 11 升级的用户应该在他们的 APT 源列表中添加新的 non-free 固件仓库。

➡️桌面环境的更新

在 Debian 12 中,还有许多其他的桌面环境更新,包括 Gnome 43、KDE Plasma 5.27、LXDE 11、LXQt 1.2.0、MATE 1.26 和 Xfce

sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list

#需要去/etc/apt/sources.list.d文件夹逐文件修改,如果包含bullseye的都修改成bookworm,部分list没有指定版本

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
#有些未解决依赖可以利用aptitude解决
sudo aptitude upgrade

利用Scrcpy(2.0)实现安卓手机投屏和电脑操作(类似华为多屏协同|Miui+)

scrcpy 介绍

Scrcpy 是一款开源的安卓手机投屏软件,可以在电脑上操作安卓手机屏幕。不用虚拟机,同样的手机环境,不需要特殊权限,不用安装scrcpy。如果安装华为的电脑管家(还需要破解)、小米的miui+等都需要超管权限。

它专注于:

  • 轻量化:本地使用,只显示设备屏幕
  • 性能:取决于设备,30~120 帧每秒
  • 质量:1920×1080 或更高
  • 低延迟:35~70ms
  • 启动时间短: ~1 秒钟即可展示第一张图片
  • 不会干扰:不会在安卓设备上留下任何安装文件
  • 用户受益:无需账户、无广告、无网络需求
  • 自由:免费开源软件

其特点包括:

  • 音频转发(需要 Android >= 11) 录制
  • 在 Android 设备屏幕关闭的情况下进行镜像化
  • 双向复制粘贴
  • 可配置的画质
  • 将 Android 设备屏幕作为网络摄像头(仅限 Linux)
  • 物理键盘/鼠标模拟(HID)
  • OTG 模式

下面是具体的操作步骤:

  1. 下载并安装 Scrcpy。

在 Scrcpy 的官方网站(https://github.com/Genymobile/scrcpy)上下载 Scrcpy 软件,并进行安装。

  1. 连接安卓手机到电脑。

将安卓手机连接到电脑,可以使用 USB 数据线连接,也可以通过 Wi-Fi 进行连接。如果是通过 USB 连接,则需要启用手机的 USB 调试模式,可以在手机的设置中找到该选项并开启。

不同手机的开启方法不同,这里不一一介绍,小米手机需要打开USB调试安全设置,否则无法控制屏幕。

  1. 打开 Scrcpy。

打开 Scrcpy 软件,并检查与安卓手机的连接是否正常。双击scrcpy.exe,或者执行open_a_terminal_here.bat,后者可以输入一些参数,比如输入scrcpy –always-on-top –print-fps –turn-screen-off等

  1. 开始投屏和操作。

通过 Scrcpy,可以在电脑上投屏显示手机屏幕,然后就可以通过键盘和鼠标对安卓手机进行操作了。例如,可以通过鼠标点击手机屏幕来操作手机,也可以使用键盘对手机进行输入操作等(只支持英文)。

音频转发

如果是安卓12以上的默认有音频转发,11的可以利用adb shell am start -n com.android.shell/.HeapDumpActivity命令来弹出一个对话框,点确认即可。11以下的不行。

https://github.com/Genymobile/scrcpy/blob/master/doc/audio.md

快捷键

https://github.com/Genymobile/scrcpy/blob/master/doc/shortcuts.md

在下面的列表中,MOD 是指快捷键修饰键。默认情况下,它是(左)Alt 或(左)Super。

ActionShortcut
切换全屏模式MOD+f
向左旋转显示器MOD+← (left)
向右旋转显示器MOD+→ (right)
将窗口调整为1:1(像素完美)MOD+g
将窗口调整为移除黑边MOD+w | Double-left-click¹
点击 HOMEMOD+h | Middle-click
点击 BACKMOD+b | MOD+Backspace | Right-click²
点击 APP_SWITCHMOD+s | 4th-click³
点击 MENU(解锁屏幕)⁴MOD+m
点击 VOLUME_UPMOD+↑ (up)
点击 VOLUME_DOWNMOD+↓ (down)
点击 POWERMOD+p
开机Right-click²
关闭设备屏幕(保持镜像)MOD+o
打开设备屏幕MOD+Shift+o
旋转设备屏幕MOD+r
展开通知面板MOD+n | 5th-click³
展开设置面板MOD+n+n | Double-5th-click³
折叠面板MOD+Shift+n
复制到剪贴板⁵MOD+c
剪切到剪贴板⁵MOD+x
同步剪贴板并粘贴⁵MOD+v
注入计算机剪贴板文本MOD+Shift+v
启用/禁用 FPS 计数器(在标准输出上)MOD+i
手指捏合缩放Ctrl+click-and-move
拖放 APK 文件Install APK from computer
拖放非 APK 文件Push file to device
快捷键
  • ¹双击黑边即可移除它们。
  • ²右键单击可以将屏幕打开,如果已经打开,则按 BACK 按钮。
  • ³第四和第五个鼠标按钮(如果您的鼠标支持)。
  • ⁴针对正在开发的 react-native 应用,MENU 触发开发菜单。
  •  ⁵仅适用于 Android >= 7。

esxi安装openwrt,并用gparted扩容

1、下载openwrt镜像

Index of /releases/22.03.5/targets/x86/64/

2、转换img为vmdk

利用linux的qemu-img来转化,windows也有类似的工具,命令如下,-O要大写

qemu-img convert -f raw openwrt.img -O vmdk openwrt.vmdk

2.1 转换vmdk为精简置备的硬盘【可选】

[转]OpenWRT镜像:将img转换为vmdk,并在ESXi6.7上安装(需二次转换) – 武汉周杰

如果不转换的话是无法直接用scsi来挂载,只能用ide来挂载,同时,对快照不友好,删除快照后会有碎片文件。

这一步需要将2生成的vmdk上传到esxi的系统里,通过esxi图形界面可以上传文件。

vmkfstools -i openwrt.vmdk -d thin openwrt_lan.vmdk

  • 转换命令vmkfstools参数
    • -i 参数为源文件
    • -d参数为vmdk磁盘存储方式(精简置备thin,厚置备延迟清零zeroedthick,厚置备立即清零eagerzeroedthick,参考官方详解
    • 此处以源文件 openwrt.vmdk,输出文件 openwrt_lan.vmdk(精简置备)为例
    • *个人更建议直接厚置备立即置零,openwrt镜像也不大,理论上来说厚置备立即置零性能会好一丢丢
    • vmkfstools -i openwrt.vmdk -d thin openwrt_lan.vmdk

3、openwrt硬盘扩容

3.1 新建一个空白的vmdk新硬盘,或者利用2.1生成的硬盘

在esxi新建一个空白的虚拟机。

新建空白盘可以默认配置,大小选择自己想要的大小;如果是2.1生成的硬盘,直接改图示的硬盘大小到自己想要的大小

OpenWrt on VMware HowTo

SystemRescue – Download

3.2 启动SystemRescue

虽然官方论坛建议了systemrescue,其实用任意支持Gparted的linux系统都可以完成。

如果是新的空白盘,请用dd将2生成的vmdk拷贝到新生成的硬盘。

dd if=/dev/sda of=/dev/sdb

3.3 Gparted调整分区大小

输入startx启动图形界面

启用gparted,在system文件夹里

一开始进入,选择fix

选中新生成的硬盘。

将rootfs拉伸至最大。

点击执行,将操作写到硬盘

4、将硬盘拷贝并挂载到openwrt的虚拟机里

注意,如果是esxi图形界面移动vmdk,需要移动两次,还有一个-flat.vmdk的文件需要移动,这个是真正的存储文件。

开机执行吧,注意,如果是局域网,请输入fw3/fw4 stop来允许网页配置,配置好之后再打开防火墙,否则默认无法访问

树莓派64位安装系统(无显示屏)和Anaconda/miniconda/miniforge

中文网站很多介绍都是错误的,比如

  1. 无显示器的情况下,需要配置用户才能访问ssh,这里貌似都没有提到,在官方文档里有介绍
  2. miniconda(Miniconda3-latest-Linux-aarch64.sh)并不支持64位的树莓派系统,只能下载armv7l的版本

1、下载系统

通过以下链接可以找到树莓派的64位,用rufus可以刻录到u盘

Operating system images – Raspberry Pi

2、无显示屏配置

刻录完了之后,如果没有显示器/mini-hdmi线则不能直接配置系统;可以直接编辑boot分区/文件夹来实现联网、开启ssh、配置用户的。在windows下面,刻录完成后会有一个bootfs的磁盘,直接在根目录创建三个文件:

  • 一个空白的ssh标题的文件,此文件用来开启ssh功能
  • wpa_supplicant.conf文件,内容如下,注意,如果在windows下面,注意切换换行符为LF,而不是windows的CRLF。用vscode等编辑器可以切换换行符。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN

network={
        ssid="wifi名字,注意保留引号"
        psk="wifi密码,注意保留引号"
}
  • userconf.txt文件
pi:加密后的密码
可以在linux的bash下面执行openssl passwd -6来获取加密后的密码
这里给出一个123456的加密后的密码,可以直接使用,进入系统后,输入passwd可以更改用户密码
pi:$6$g/pSo.2tPTPCa2tw$6B623QaPFvzQZHNDXZx6x1DZUdc1rZgkSFXROtJMUq66kLE3ZPpTpNWln6Slao3HL9Zb4UPwoDZ4L5a7ksdK1/

https://www.raspberrypi.com/documentation/computers/configuration.html#configuring-a-user

3、安装miniforge

miniforge是社区版的conda系统,体验下来比miniconda更好。另外miniconda明确说不支持64位树莓派,只能下载32位版本,本着强迫症,还是下载了社区版的miniforge。

wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
bash Miniforge3-Linux-aarch64.sh
source ~/.bashrc


conda官方issue不支持树莓派64位

https://github.com/conda-forge/

如何访问New Bing,使用chat ai的能力

新的bing可以使用chat ai进行绘画和对话,首先要保证自己的微软账户已经申请过bing的对话功能。

1、修改路由规则

使用SwitchyOmega 插件,将 “*.bing.com”改成代理

2、修改header

安装ModHeader – Modify HTTP headers插件,然后添加重定向,参考下图

.*bing.com.* 重定向到 1.1.1.1

3、修改bing.com的国家和地区

右上角,修改国家为漂亮国,就可以访问new bing啦

使用 Docker Compose 搭建 Nextcloud + Redis

欢迎阅读本篇教程,本篇教程将介绍如何使用 Docker Compose 搭建 Nextcloud + Redis。

一、安装 Docker 和 Docker Compose

首先,需要在服务器上安装 Docker 和 Docker Compose。Docker 是一个开源的应用程序容器引擎,可以帮助你在不同的环境中快速构建、部署和运行应用程序。Docker Compose 则是一个用于定义和运行多个 Docker 容器的工具。

安装 Docker 和 Docker Compose 的具体步骤可以参考官方文档:[1],[2]。

二、配置 Docker Compose 文件

创建项目目录,并在该目录下创建 docker-compose.yml 文件。

然后,在 docker-compose.yml 文件中添加以下内容:

version: '3'

services:
  db:
    image: linuxserver/mariadb
    volumes:
      - /pls_change:/config
    restart: always
    environment:
      MYSQL_DATABASE: pls_change
      MYSQL_USER: pls_change
      MYSQL_PASSWORD: pls_change
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
      PUID: 1000   #通过bash里面 id
      PGID: 1001   #
      TZ: Asia/Shanghai
    ports:
      - 172.17.0.1:8888:80
    network_mode: bridge
    container_name: mariadb

  redis:
    image: redis
    restart: always
    network_mode: bridge
    ports:
      - 172.17.0.1:6379:6379/tcp
    container_name: redis
    hostname: redis
    volumes:
      - /pls_change/redis:/data

  app:
    image: linuxserver/nextcloud:latest
    container_name: nextcloud
    environment:
      - PUID=1000 #通过bash里面 id
      - PGID=1001 #
      - TZ=Asia/Shanghai
    volumes:
      - /pls_change:/config
      - /pls_change:/data
    ports:
      - /pls_change:443
    restart: unless-stopped
    network_mode: bridge
    depends_on:
      - db
      - redis

其中:

  • db:MariaDB 数据库服务用于存储 Nextcloud 的数据。
  • redis:Redis 服务则是用于缓存 Nextcloud 的数据和查询结果。
  • app:Nextcloud 服务将通过 PHP-FPM 运行,并依赖于 MariaDB 和 Redis 服务。

这里我们用了linuxserver的镜像,好处是可以复用当前用户的权限,不会导致当前用户无法访问数据文件夹。麻烦点的是,linuxserver默认用了sqllite数据库,需要切换

三、启动服务

创建好 docker-compose.yml 文件后,我们可以使用以下命令启动服务:

docker-compose up -d

其中,-d 参数表示在后台运行服务。如果需要查看服务的日志信息,可以使用 docker-compose logs 命令。

四、转化Nextcloud 使用的数据库,并配置 Nextcloud 使用 Redis 缓存

接下来,我们需要在 Nextcloud 中配置使用 Redis 缓存。

使用以下命令进入 Nextcloud 容器:

docker-compose exec app bash

转化Nextcloud 使用的数据库,将数据库转化成mysql

 occ db:convert-type --all-apps --port="8888" --password='password' mysql  dbusername dbhost dbname
https://docs.nextcloud.com/server/26/admin_manual/configuration_database/db_conversion.html

然后,修改 /config/www/nextcloud/config/config.php 文件,添加以下内容:

  'memcache.local' => '\OC\Memcache\Redis',
  'memcache.distributed' => '\OC\Memcache\Redis',
  'memcache.locking' => '\OC\Memcache\Redis',
  'redis' => [
     'host' => '172.17.0.1',
     'port' => 6379,
  ]

其中,redis 配置用于指定 Redis 服务的主机名(172.17.0.1)和端口号(6379)。

最后,保存文件并重启 Nextcloud 容器即可完成 Nextcloud + Redis 缓存的搭建。

总结

本篇教程介绍了如何使用 Docker Compose 搭建 Nextcloud + Redis,通过 Docker Compose 管理容器和服务,我们可以轻松地扩展服务,并快速进行环境配置和部署。

参考来源链接:[1],[2],[3],[4],[5],[6]。

用 Docker 搭建 WordPress + Redis 缓存来提高网站的性能

当你的 WordPress 网站的流量逐渐增加,你可能会发现网站响应时间变慢,甚至出现无响应的情况。这时候,使用缓存技术可以显著提高网站的性能和稳定性。本篇博客将介绍如何使用 Docker 搭建 WordPress + Redis 缓存来提高网站的性能。

一、安装 Docker 和 Docker Compose

首先,需要在服务器上安装 Docker 和 Docker Compose。Docker 是一个开源的应用程序容器引擎,可以帮助你在不同的环境中快速构建、部署和运行应用程序。Docker Compose 则是一个用于定义和运行多个 Docker 容器的工具。

安装 Docker 和 Docker Compose 的具体步骤可以参考官方文档:[1],[2]。

二、创建 WordPress 和 Redis 容器

下一步,我们需要创建 WordPress 和 Redis 容器,并使用 Docker Compose 进行管理。在项目根目录下创建一个 docker-compose.yml 文件,并添加以下内容:

version: '3'

services:
  db:
    image: linuxserver/mariadb
    volumes:
      - pls_change:/config
    restart: always
    environment:
      MYSQL_DATABASE: pls_change
      MYSQL_USER: pls_change
      MYSQL_PASSWORD: pls_change
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
      PUID: 1000   #通过bash里面 id
      PGID: 1001   #
      TZ: Asia/Shanghai
    ports:
      - 172.17.0.1:8888:80
    network_mode: bridge
    container_name: mariadb

  redis:
    image: redis
    restart: always
    network_mode: bridge
    hostname: redis
    container_name: redis

  wordpress:
    depends_on:
      - db
      - redis
    image: wordpress:latest
    ports:
      - "80:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: 172.17.0.1:8888
      WORDPRESS_DB_USER: pls_change
      WORDPRESS_DB_PASSWORD: pls_change
      WORDPRESS_DB_NAME: pls_change
    volumes:
      - /pls_change:/var/www/html
    network_mode: bridge
    container_name: wordpress

以上配置文件包含了三个服务:MySQL 数据库服务、Redis 服务和 WordPress 服务。

其中,MySQL 服务用于存储 WordPress 数据,Redis 服务则是用于缓存 WordPress 的数据和查询结果。WordPress 服务将依赖于 MySQL 和 Redis 服务。

这里采用了linuxserver/mariadb,linuxserver 的容器可以保持本地文件的权限,设置puid和pguid两个参数即可。

三、启动服务

创建好 docker-compose.yml 文件后,我们可以使用以下命令启动服务:

docker-compose up -d

其中,-d 参数表示在后台运行服务。如果需要查看服务的日志信息,可以使用 docker-compose logs 命令。

四、配置 WordPress 使用 Redis 缓存

最后一步,我们需要在 WordPress 中配置使用 Redis 缓存。

使用以下命令进入 WordPress 容器:

docker-compose exec wordpress bash

然后,修改 WordPress 的 wp-config.php 文件,添加以下内容:

/** redis */
define('WP_REDIS_HOST', '172.17.0.1');
define('WP_REDIS_PORT', '6379');

// change the prefix and database for each site to avoid cache data collisions
define( 'WP_REDIS_PREFIX', 'my-wp-site' );
define( 'WP_REDIS_DATABASE', 1 ); // 0-15

// reasonable connection and read+write timeouts
define( 'WP_REDIS_TIMEOUT', 1 );
define( 'WP_REDIS_READ_TIMEOUT', 1 );

进入WordPress后台,安装Redis Object Cache插件,然后点击启用即可。

最后,保存文件并重启 WordPress 容器即可完成 WordPress + Redis 缓存的搭建。

https://github.com/rhubarbgroup/redis-cache/blob/develop/INSTALL.md

总结

本篇博客介绍了如何使用 Docker 搭建 WordPress + Redis 缓存来提高网站的性能和稳定性。通过 Docker Compose 管理容器和服务,我们可以轻松地扩展服务,并快速进行环境配置和部署。

docker安装迅雷

docker最近可以安装迅雷,可以在自建NAS上使用,从迅雷群晖套件中提取出来用于其他设备的迅雷远程下载服务程序。

1、创建docker

bridge默认端口 2345, 具体参数可以参考这个链接

compose.yml

version: "2.1"
services:
xunlei:
image: cnk3x/xunlei:latest
privileged: true
container_name: xunlei
hostname: mynas
network_mode: bridge
ports:
- 2345:2345
volumes:
- /mnt/sdb1/xunlei:/xunlei/data #data目录
- /mnt/sdb1/downloads:/xunlei/downloads #下载目录
restart: unless-stopped

2、登录

访问ip:2345,登录迅雷账号,内测码输入任意四个字,比如“迅雷牛逼”“迅雷牛通”,这个测试通过。如果失效可以参考这个qq文档链接,但是没有测试过。

Termux技巧

1、安装

不要用google app store的,从fdroid下载,先安装termux-api,然后安装termux主包,反过来会导致api安装失败。

2、换源

termux-change-repo

3、安装ssh

pkg install openssh

sshd如果报错的话,可以尝试执行ssh-keygen -A

配置文件在$PREFIX/etc/ssh/sshd_config​

默认端口8022

4、安装cron

pkg install cronie termux-services

sv-enable crond 【需要加入到.bashrc中】

crontab -e

5、伪开机启动项

修改.bashrc

加入

sshd

sv-enable crond

6、修改欢迎界面

可以修改此文件,$PREFIX/etc/motd

_____
|_   _|__ _ __ _ __ ___  _   ___  __
  | |/ _ \ '__| '_ ` _ \| | | \ \/ /
  | |  __/ |  | | | | | | |_| |>  <
  |_|\___|_|  |_| |_| |_|\___</_/\_\

7、备份和还原

备份
termux-setup-storage
tar -zcf /sdcard/termux-backup.tar.gz -C /data/data/com.termux/files ./home ./usr
还原
termux-setup-storage
tar -zxf /sdcard/termux-backup.tar.gz -C /data/data/com.termux/files --recursive-unlink --preserve-permissions


参考 https://wiki.termux.com/wiki/Backing_up_Termux

8、wifi等问题

wifi锁屏后可能会断开,主要是安卓的省电策略,可以尝试利用termux-wake-lock;如果是测试机的话,也可以用开发者模式的Stay Awake选项。

目前没有找到特别合适的方式

9、termux-API

https://zhuanlan.zhihu.com/p/381044910

mate9 刷lineageOS 20

需要解锁,同时需要一个SD卡。

1、解锁BL

mate9已经关闭官方的解锁bl的通道了,需要付费获取解锁码,PDD上会有商家可以解锁,一般费用几十元。

2、安装twrp;

关机,按住音量下,同时将usb插入手机,进入fastboot模式。

下载文件后, 在win电脑上运行,双击MFA32.exe,执行 fastboot flash recovery_ramdisk M9TWRP3.2.1-0.img

mate8 文件

3、安装系统

关机,按住音量上和电源键,进入TWRP。

依次选择,wipe >advanced wipe >选择system partition >滑动清除

回到主菜单,选择install > 点击 install image > 点击 Select Storage > 选择 external storage > 选择对应的解压后的img文件>选择system image >滑动安装。

根据文件名规则,bgn是包含谷歌套件的,bvs是不含的。部分版本的bgn rom体积过大,可能会导致刷入失败。这里采用的是lineage-20.0-20230218-UNOFFICIAL-arm64_bgN.img。

https://sourceforge.net/projects/andyyan-gsi/files/lineage-20-td/

4、恢复BootLoader,并恢复出厂设置

重新进入flashboot模式, 在win电脑上运行 fastboot flash recovery_ramdisk RECOVERY_RAMDISk.img。

长按电源和音量上,进入stock recovery。选择还原出厂设置(Wipe data factory reset)。重启

参考文章

https://ministryofsolutions.com/2022/06/huawei-mate-9-android-11-lineage-18-gsi-rom.html