樹莓派靜電導致外接硬盤斷開: 解決方案

問題描述

因為冬季乾燥, 家裡還養著兩隻貓, 手上常常帶著靜電. 最近常常用樹莓派跑很重的任務, 就忍不住去用手試它的溫度. (儘管有內置溫度傳感器) 結果一試就出了問題, 常常就听見一聲劈啪的靜電放電聲音, 然後用 USB 連接的磁盤就直接斷開, 如果定位到磁盤的掛載點, 就會看到下面的情況:

➜  data ls
ls: 正在讀取目錄'.': 輸入/輸出錯誤

解決這個方法最快的辦法只有重啟. 先 umount 再 mount 有沒有用我并没有去尝试.

一開始我以為是樹莓派本身的問題, 因為比較忙碌也一直沒想到解決.(不碰它就可以羅) 有一天我偶然使用朋友一台古老的 Macbook Air 時手在觸摸板上激起靜電, 結果外接的移動硬盤突然斷連, 才意識到靜電大概對 USB 3.0 有點不友好.

我找這篇文章, 大意就是靜電 (ESD) 會導致 USB 線路暫時短路, 所以 USB 電路碰到靜電就會直接斷開. 我的散熱殼和樹莓派的 USB 端口是導通的, 也怪不得靜電會影響到 USB 的連接.

閱讀全文 樹莓派靜電導致外接硬盤斷開: 解決方案

VMWare Fusion 12 登陆 M1 芯片

在我拿到我的 M1 Macbook Air 的时候, 我就知道接下来的五年内我会一直与 3A 游戏无缘. 事实确实是这样的, 先不说虽有雷电三接口却不支持外置显卡的弊病, Bootcamp 也被苹果禁用, 原因居然是 “微软不授权 Arm Windows 跑在苹果机器上”. ( 厨子: “你说什么? Li 什么? 什么 nux? …” )

对于我这种不折腾就会死星人来说, 虽然身体入了苹果教, 心还是留在 Linux 阵营的嘛! 所以不得已, 只能每次 vscode 远程到我的树莓派上过瘾. 期间也一直在关注虚拟机的发展. 我曾经在淘宝上买过盗版的 Parallel Desktop, 居然跑起来了! 居然还能带 Arm Windows 10 !! 居然还能跑 3A 大作 Control 跑到 30 帧!!! 我整个人都是懵逼的啊. (不过代价就是 CPU 温度直线上升到九十度, 这也就是我当时积极尝试 DIY Macbook 底座的原因. 详见博文 为 Mac DIY 一个半导体制冷底座 )

然而好景不长, 在升级到 MacOS 11 之后淘宝上所有盗版 PD 集体扑街了… (背景音: M1 虚拟化产业到了生死存亡的时刻!!!) 浑浑噩噩几个月过去后, 我突然看到新闻, VMware Fusion 这个后进生居然也捣鼓出东西来了! 不过当时才开学半个月, 我就把这条新闻抛诸脑后了.

九月底 VMware Fusion 公测的消息

今天我突然心血来潮去搜了一下相关消息, 好家伙, 发布都整整两个月了. 于是就有了这篇博文, 记录一下我的新玩具.

閱讀全文 VMWare Fusion 12 登陆 M1 芯片

解決 Openwrt 隨機重啟/死機 問題

在裝完 Openwrt 之後, 隨機重啟的問題就一直如影隨形. 經常在 大半夜/看 Youtube 看到一半 這種尷尬的場合聽到它 滴滴滴滴滴 重啟的聲音. 嘗試過很多種辦法, 無果.

每次重啟都會導致運行在 Openwrt 下的一堆設備停擺 5 – 10 分鐘. 期間 Wifi 無法使用, 博客也無法訪問. 幸而 Openwrt 可以自動重啟, 因此問題不算太大.

JetPack 毫不留情的轟炸我的郵箱
閱讀全文 解決 Openwrt 隨機重啟/死機 問題

使用 Restic 加密增量备份到网盘

转载声明:
本文很大程度上参考了 KnightHart 发布的贴文 restic-全平台nas的加密增量快照备份神器.
但是在原文基础上有增添和修改, 若有侵权, 请联系 [email protected] 删除文章.

前言

搭建家庭 NAS 的前前后后我曾经格盘格过两次, 尽管每次都抢救回来了, 但是自那以后我一直在盘算着备份的主意. 和 KnightHart 的历程大致相同, 我尝试过:

  • 简单的 git 备份 (本地 .git 文件夹不断增大而且大文件有限制)
  • syncthing (是个好东西但是只支持在自己的设备间同步, 占磁盘) 
  • 百度网盘 (不安全、下载限速)
  • rclone + 白嫖的 Google Teamdrive (无法加密, 不支持增量)

解释一下 Google Teamdrive 为什么要加密吼. 前阵子网上出现了很多 Cloudflare Workers 脚本允许 User 给自己分配一个空间无限的, 挂在某大学名下的团队盘, 可以随便往里面扔、取文件, 而且一般 Google Personal Drive 的功能它都有哦. 但是唯一的问题是, 提供脚本的人是可以看到你网盘里的文件, 而且是可以任意上传下载的; 那这不就隐私性全没了吗? 所以如果要备份, 一定要加密的. 另外, Google Teamdrive 有传输速率限制, 所以备份如果不是增量的, 也会很麻烦.

閱讀全文 使用 Restic 加密增量备份到网盘

CentOS/Debian 安裝 BOINC 受控端簡明教程

因為最近一直在折騰 VPS, 然後一直都覺得 VPS 閒置時就是在浪費錢. 當然我也嘗試過用 CPU 挖礦, 不過當看到礦池顯示 “距離收益還有 2147483646 年” 的時候, 我徹底怒了: 我 TM 還不如去做公益!

於是我就安裝了 BOINC…

轉載聲明:
本文轉載自「闪星空间」, 遵循 署名-非商业性使用 3.0 (CC BY-NC 3.0) 协议.
本文在原文基礎上有輕微修改, 主要是新增了 CentOS 的部分.

BOINC 全称 Berkeley Open Infrastructure for Network Computing,即伯克利开放式网络计算平台,是由美国加州大学伯克利分校电脑学系发展出的分布式计算平台,目前已成为世界上主流分布式计算平台之一。希望用户利用空余的算力,帮助进行包括数学、医学、物理和气象学等学科的学术研究。

閱讀全文 CentOS/Debian 安裝 BOINC 受控端簡明教程

Man Page: 如何使用以及小貼士

這是什麼

Man Page ( Manual Page ) 是 Unix 系統標配的在線系統手冊, 主要用來查詢命令. 在使用包管理器安裝程序的時候基本總是可以看到 configurating man-db... 的輸出, 是程序將自己的手冊加入到系統手冊當中.

儘管 Man Page 聲稱是在線手冊 ( 其本身也支持在線查詢 ), 但是大多數手冊都以 troff 格式存儲在本地.

包含的章節

章節描述
1命令
2System calls (Linux 內核函數)
3庫函數. (收錄了部分 C 語言函數)
4特殊檔案 (比方說 /dev 下的文件) 和驅動
5檔案格式與協定 (e.g /etc/passwd )
6遊戲和屏保
7雜項
8管理員指令

在手冊的開頭和結尾都可以看到 名稱(數字) 形式的字串, 括弧中的數字就是說明這個條目隸屬的章節. 一個條目可以隸屬于多個章節, 比如 passwd 是一個命令的同時也是一個檔案, 所以它同時隸屬于第一和第五章.

閱讀全文 Man Page: 如何使用以及小貼士

Linux 將運行中的任務轉後台並在會話關閉後繼續運行

假如我想要在服務器上把文件從一個硬盤考到另一個硬盤, 就要用到 cp/dd/rsync 命令對吧, 我想要讓服務器去運行這個命令, 我可以直接把終端關掉, 這時候第一個想起來就是 nohup [命令] &. nohup 意思是讓終端掛掉時進程不結束, & 的意思讓進程在後台執行.

但是如果我在拷貝之前沒想這麼多, 開始了之後才發現要運行好久, 這個時候應當怎麼辦呢? 我在中文互聯網上並沒有找到相關的問題/答案. 反倒是在 Stack Overflow 上找到了.

原問題及回答:

https://stackoverflow.com/questions/625409/how-do-i-put-an-already-running-process-under-nohup

  1. 按 Ctrl + Z 暫停程序
  2. 輸入 bg 讓暫停的程序在後台執行
  3. 輸入 jobs 查看程序 id (如果之前沒有執行類似操作過就是 1)
  4. 輸入 disown -h [id] 從 shell 的作業列表移除指令

Thumbnail: Sea Shell by Shyam B
If using the image violates your rights, or there’s anything related to copyright laws, please contact me at [email protected], I will deal with them immediately.

WordPress Docker 優化: 添加 PhpRedis、Memcached 支持

環境:
Docker + WordPress, 用官方默認的 Apache 驅動, 不是 fpm.

因為 PhpRedis 不屬於 PHP 內置的模塊, 而 PHP 內置了一個 Predis 又太慢太蛋疼, 所以要重新構建 Docker Image 為 PHP 添加 Redis 模塊支持.

為了添加這個 Redis 模塊, 我特別做了一些搜索, 發現網上清一色的全部是 本教程只適合 fpm 版本云云. 我個人認為這是一種迷思啊, 因為不論是用 php-fpm 還是 apache + php-mod 應該都和 php 的插件沒有太多關係吧. 所以雖然上面環境說的是 wordpress-apache , 用 wordpress-fpm 的朋友照著這個教程做也沒差.

構建 Docker Image

mkdir /tmp/build
cd /tmp/build
# 添加 Memcached 支持
cat > /tmp/build/Dockerfile << EOF
FROM wordpress:latest
RUN apt-get update
RUN apt-get install -y libz-dev libmemcached-dev && \
    pecl install memcached && \ 
    docker-php-ext-enable memcached && \
RUN rm -rf /tmp/pear && \
    apt-get clean
EOF
# 添加 Redis 支持
cat > /tmp/build/Dockerfile << EOF
FROM wordpress:latest
RUN pecl install -o -f redis && \
    docker-php-ext-enable redis
RUN rm -rf /tmp/pear
EOF

關於 Memcached vs Redis… 這個網上都可以搜到吧. 我的意見是, 兩者都能給一個 WordPress 小博客提供相當不錯的 Object Cache. 效能的話, Redis 略勝一籌, 但是要求專門開一個 Redis 容器. 而 Memcached 安裝好之後直接用就可以了. 所以還是根據服務器的配置來選吧.

docker build -t wordpress_extended .
閱讀全文 WordPress Docker 優化: 添加 PhpRedis、Memcached 支持

WordPress + Cloudflared + V2ray 異地組網並隱藏流量

目標

  • 異地組網, 遠程訪問家中環境
  • 結合海外 VPS 翻牆 ( 不在此篇討論 )
  • 使用 V2Ray TLS 加密流量
  • 將 TLS 流量隱藏在正常的 HTTPS 流量中達到混淆目的
  • 使用 Cloudflare 的內網穿透服務, 達到防探測目的 ( 服務器直接和 CF 溝通, 沒有端口暴露 )
  • 使用 Cloudflare 的 CDN 服務, 達到防牆、加速作用

如果你並不是想要做異地組網, 而是想要在 VPS 上跑 (Nginx/Caddy/Apache) + WP + V2Ray, 那麼你其實用不著這麼複雜. 你只需要看這篇文章就可以了.

(這篇博文主要是討論一個沒多少人做過的方案的可行性, 所以你會看到後面還有一大通廢話; 作為教程本文是不合格的, 如果想要尋找教程請出門右轉谷歌搜索. )

網絡拓墣示意圖
閱讀全文 WordPress + Cloudflared + V2ray 異地組網並隱藏流量

Docker 無縫切換鏡像

警告: 我只是一個正在學習 Docker 的中學生,
一切在生產環境嘗試本文所述技巧所導致的損失都是自作自受.

有的時候, Docker 鏡像更新了, 但是容器並沒有更新, 你想要用更新過後的鏡像來部署容器; 奈何你並沒有像 Portainer 這樣的 GUI 介面, 你早就不記得當初部署容器時執行的指令了, 碰到這種情況應該怎麼辦?

下文便以更新 Portainer 為例來演示簡單的無縫切換鏡像.

Pull 来的镜像

第一步當然是要先拉取更新的鏡像.

docker pull portainer/portainer-ce:latest

接著, 使用 rekcod 這個工具來獲取部署容器時輸入的命令.

$ docker run --rm -i -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod <container>

# 樹莓派玩家
# docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod:3.0.0arm

# 為該命令設別名
# alias rekcod="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod:3.0.0arm"

短暫刪除舊的容器, 然後部署上新的.

$ docker stop <container>
$ docker rm <container>
$ <執行 rekcod 得到的結果>

至此, 新的容器就部署好了, 而當機時間不會超過幾秒鐘👌

最後別忘了刪除掉舊的鏡像喔.

自 Build 的鏡像

假設當初用來 Build 鏡像的 Dockerfile 已經遺失, 可以用 dfimage 這個神器來從鏡像中提取 Dockerfile 用於構建.

$ docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage  <image>

# 為該命令設別名
# alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage "

恢復出來後就可以愉快的繼續玩耍啦~ 但是要注意, 很多時候不是恢復出來就可以用的, 因為涉及到 Reverse Engineering, 恢復出來的文件基本是和原來的 Dockerfile 不一樣的. 因此還是建議好好保存 Dockerfile.