我的笔记
本项目基于mdbook框架,主要是用作笔记的功能,记录一些重要的内容,以方便我在不同的机器上使用Copy+Paste魔法。
因为是笔记的原因,所以我不会写得太详细,目的是达到我自己能看懂,日后有时间会逐渐完善更正相关内容。
树莓派笔记
本专题内容跟都是和树莓派相关,包括常用的命令、配置以及项目使用等等。
同时笔记当中所有内容都是使用原生源,也就是说如果你是使用了国内源的话可能会出现一定程度上的不兼容。
配置vim
一、安装vim
sudo apt-get install vim -y
二、配置vim
进入vim配置文件:
vim ~/.vimrc
添加以下内容:
syntax on
set number
set relativenumber
set tabstop=4 softtabstop=4
set shiftwidth=4
set expandtab
set smartcase
set incsearch
set nobackup
set undodir=~/.vim/undodir
set undofile
set backspace=indent,eol,start
set smartindent
let &t_SI = "\e[6 q"
let &t_EI = "\e[2 q"
三、使用vim
命令类
强制退出:
q!
退出并保存:
qw
执行命令:
!echo hello
编辑类
在前方插入:
i
在最前端插入:
[shift]+i
在后方插入:
a
在最后端插入:
[shift]+a
在下方插入:
o
在上方插入:
[shift]+o
快捷键类
删除:
v+d
复制:
v+y
粘贴:
p
配置alias
进入bash_aliaes配置文件
vim ~/.bash_aliaes
添加以下内容:
alias la="ls -a"
alias ll="ls -l"
alias apt-clean="sudo apt-get autoremove -y && sudo apt-get clean -y"
alias apt-update="sudo apt-get update && sudo apt-get upgrade -y"
alias cpu-temp="vcgencmd measure_temp"
alias eeprom-update="sudo rpi-eeprom-update -a"
alias autologin="/home/pi/Projects/Autologin/autologin.sh"
alias autorun="pwsh -File /home/pi/Projects/Autorun/autorun.ps1"
使用ssh
一、使用puttygen
二、使用ssh-keygen
生成密钥,一路回车选择默认选项就好了:
ssh-keygen -t rsa -b 1024 -f piserver -C "Piserver-ssh-key"
配置服务器,将公钥放到服务器上:
cat piserver.pub >> ~/.ssh/authorized_keys
配置连接端:
vim ~/.ssh/config
添加以下内容:
Host piserver
HostName 192.168.137.120
Port 22
User pi
IdentityFile ~/ssh-private-key/piserver
使用crontab
一、配置crontab
进入corntab配置文件:
crontab -e
如果你是第一次使用,crontab可能需要你选择默认的编辑器,这边我一般会选择vim作为我的编辑器,因此输入2:
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
你也可以在后面更改默认的编辑器:
select-editor
默认编辑器选择完后就会进入编辑界面,在文件末尾添加以下内容:
30 23 * * 0-5 sudo /usr/sbin/shutdown -h now
@reboot gpio mode 15 out && gpio write 15 1
@reboot /usr/local/bin/clash
@reboot sleep 10 && /home/pi/Projects/Autologin/autologin.sh
查看已有任务:
crontab -l
二、contab语法
基本格式:
* * * * * [username] command(s)
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
部分符号含义:
符号 | 含义 |
---|---|
* | 任意值 |
, | 分割符 |
- | 范围符 |
/ | 步数符 |
@reboot | 启动事件 |
crontab在线编辑器:crontab.guru
三、示例
* */2 * * * root apt-get update && apt-get upgrade -y
每两小时自动更新apt。
30 23 * * 0-5 sudo /usr/sbin/shutdown -h now
周日到周五晚23:30自动关机,即跳过星期六。
@reboot gpio mode 15 out && gpio write 15 1
开机自动调用wiringpi打开风扇。
使用apache2
一、安装apache2
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install apache2 -y
打开apache2默认地址查看默认的网页内容http://localhost。
二、配置apache2
首先准备好一个网页,然后我们需要对网页进行一些配置。这里我已我的笔记网页为例/home/pi/Projects/Notes/book
。
新建配置文件:
sudo vim /etc/apache2/sites-available/note.conf
添加以下内容:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/pi/Projects/Notes/book
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
然后进入apache的配置文件给该目录以权限:
sudo vim /etc/apache2/apache2.conf
添加以下内容:
<Directory "/home/pi/Projects/Notes/book">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
三、使用apache2
首先我们需要关闭默认的apache网页:
sudo a2dissite 000-default.conf
然后激活我们的网页:
sudo a2ensite notes.conf
最后重新启动apache:
sudo systemctl reload apache2
然后我们就可以通过默认网址访问我们的网页了http://localhost。
查看apche2服务:
sudo systemctl status apache2
停止apache2服务:
sudo systemctl stop apache2
注销apache2服务:
sudo systemctl disable apache2
注册apache2服务:
sudo systemctl enable apache2
使用wiringpi
官方文档:wiringpi
一、安装wiringpi
安装wiringpi:
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
测试是否安成功:
gpio -v
二、基础命令
查看GPIO状态:
gpio readall
设置GPIO 14号引脚为输出,并且输出高电平:
gpio mode 15 out
gpio write 15 1
还原GPIO 14状态:
gpio write 15 0
gpio mode 15 in
三、调用<wiringpi.h>
我们写一个fan.c的程序,该程序用于控制树莓派的GPIO 14。
#include <signal.h>
#include <wiringPi.h>
#define Fan 14
int isLoop = 1;
void breakLoop(int signal) {
isloop = 0;
}
int main(void) {
signal(SIGINT, breakLoop);
signal(SIGTERM, breakLoop);
signal(SIGHUP, breakLoop);
wiringPiSetupGpio();
pinMode(Fan, OUTPUT);
digitalWrite(Fan, HIGH);
while (isloop);
digitalWrite(Fan, LOW);
pinMode(Fan, INPUT);
return 0;
}
编译代码:
gcc -Wall -o fan fan.c -lwiringPi
执行代码:
./fan
使用Powershell
官方文档:powershell
一、安装Powershell
32位和64位系统的唯一的区别就是32位需要安装依赖,而64位不需要。
32位操作系统
安装依赖:
sudo apt-get update
sudo apt-get install '^libssl1.0.[0-9]$' libunwind8 -y
下载解压文件,在我写此文档时powershell最新版本是7.2.5,你可以前往官网下载更新的版本:
wget https://github.com/PowerShell/PowerShell/releases/download/v7.2.5/powershell-7.2.5-linux-arm32.tar.gz
mkdir ~/Powershell
tar -xvf ./powershell-7.2.5-linux-arm32.tar.gz -C ~/Powershell
64位操作系统
直接下载解压文件:
wget https://github.com/PowerShell/PowerShell/releases/download/v7.2.5/powershell-7.2.5-linux-arm64.tar.gz
mkdir ~/Powershell
tar -xvf ./powershell-7.2.5-linux-arm64.tar.gz -C ~/Powershell
二、配置Powershell:
sudo ~/Powershell/pwsh -command 'New-Item -ItemType SymbolicLink -Path "/usr/bin/pwsh" -Target "$PSHOME/pwsh" -Force'
三、使用Powershell:
pwsh
使用Oh-My-Posh
官方文档:oh-my-posh
一、安装字体
首先你需要安装一个Nerd字体才能正常显示oh-my-posh,推荐安装Hack字体。
树莓派需要先安装一个font-manager,然后选择需要安装的字体就好了。
sudo apt install font-manager
二、安装oh-my-posh
首先前往oh-my-posh官方地址下载对应的版本,如果是树莓派64位就下载posh-linux-arm64。
sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-arm64 -O /usr/local/bin/oh-my-posh
sudo chmod +x /usr/local/bin/oh-my-posh
安装主题:
mkdir ~/.poshthemes
wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/themes.zip -O ~/.poshthemes/themes.zip
unzip ~/.poshthemes/themes.zip -d ~/.poshthemes
chmod u+rw ~/.poshthemes/*.omp.*
rm ~/.poshthemes/themes.zip
三、配置终端
进入配置文件:
sudo vim ~/.bashrc
在最后添加以下内容:
eval "$(oh-my-posh --init --shell bash --config /home/pi/.poshthemes/paradox.omp.json)"
如果是powershell,应该进入$PROFILE
,然后添加以下内容:
oh-my-posh --init --shell pwsh --config /home/pi/.poshthemes/paradox.omp.json | Invoker-Expression
最后重新启动终端就可以正常使用了。
其他配置
一、配置WiFi
sudo vim /etc/wpa_supplicant/wpa_supplicant.conf
二、更新并使用pip-review
pip install pip-review
pip-review --interactive
三、安静启动Telegram
Telegram --startintray
常用命令
查看系统CPU:
htop
查看系统存储空间:
df -h
查看系统进程:
ps -A
结束某个进程:
kill $id
更新树莓派eeprom:
sudo rpi-eeprom-update -a
查看树莓派温度:
vcgencmd measure_temp
教程笔记
这个专题主要就是折腾笔记,把一些瞎折腾的东西给搬过来。
因此本专题操作上会有一定的难度,也有可能不成功。
使用git
一、配置git
进入git配置文件:
vim ~/.gitconfig
然后添加以下内容:
[user]
name=MR-Addict
email=2750417853@qq.com
[http]
proxy=http://127.0.0.1:7890
[https]
proxy=http://127.0.0.1:7890
[init]
defaultBranch=main
[pull]
ff=only
二、常用命令
查看提交记录:
git log
查看当前状态:
git status
回退版本:
git reset --hard $hash_value_of_last_commit
查看本地配置:
git config --list
查看全局配置:
git config --global --list
编辑全局配置:
git config --global --edit
保存系统登录验证:
git config --system credential.helper store
重置系统登录验证:
git config --system --unset credential.helper
只拉取不提交:
git config --global pull.ff only
设置本地默认分支:
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/$branch_name
删除本地和远程分支:
git branch -D $branch_name
git push --delete $branch_name
三、首次提交模板
添加基本内容:
git init
echo "# Test" > README.md
git add README.md
git commit -m "First commit"
添加远程仓库链接:
git remote add origin git@github.com:mr-addict/test.git
更改默认分支名为main:
git branch -M main
推送提交到远程仓库:
git push -u origin main
使用GitHub Actions
一、基本模板
新建配置文件:
vim .github/workflows/demo.yml
然后添加以下内容:
name: build
on:
push:
branches:
- main
pull_request:
jobs:
Check-Python-Version:
runs-on: ubuntu-latest
steps:
- name: Checkout current branch
uses: actions/checkout@v3
- name: Setup python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Check python version
run: python --version
Check-Windows-Powershell-Version:
runs-on: windows-latest
steps:
- name: Check-Windows-Powershell-Version
shell: powershell
run: echo $PSVersionTable
Github Action状态API:
https://github.com/mr-addict/notes/actions/workflows/gh-pages.yml/badge.svg?branch=main
二、部署mdbook模板
name: build
on:
push:
branches:
- main
pull_request:
jobs:
Deploy-Github-Pages:
runs-on: ubuntu-20.04
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
steps:
- name: Checkout current branch
uses: actions/checkout@v3
- name: Setup mdBook
uses: peaceiris/actions-mdbook@v1
with:
mdbook-version: 'latest'
- name: Build book
run: mdbook build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
if: ${{ github.ref == 'refs/heads/main' }}
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./book
三、部署hexo模板
name: build
on:
push:
branches:
- main
pull_request:
jobs:
Deploy-Github-Pages:
runs-on: ubuntu-20.04
steps:
- name: Checkout current branch
uses: actions/checkout@v2
- name: Setup nodejs
uses: actions/setup-node@v3
with:
node-version: '16'
- name: Cache npm dependencies
uses: actions/cache@v3.0.4
with:
path: node_modules
key: ${{ runner.OS }}-npm-cache
restore-keys: ${{ runner.OS }}-npm-cache
- name: Install npm dependencies
run: npm install
- name: Build project
run: npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
使用Clash内核
一、下载Clash
在这里我们使用Clash作为科学上网的代理框架,你可以到GitHub下载Clash内核。如果你是树莓派4B 32位操作系统,那么你应该下载对应armv7版本clash-linux-armv7-v1.10.6.gz,如果是树莓派4B 64位操作系统,那么你应该下载对应armv8版本clash-linux-armv8-v1.10.6.gz。
其他型号的树莓派可以通过以下命令查看树莓派的架构:
arch
下载完成后解压文件,建议把文件名改为clash
, 然后移动到/usr/local/bin/clash
位置,同时给该文件以执行的权限:
wget https://github.com/Dreamacro/clash/releases/download/v1.10.6/clash-linux-armv7-v1.10.6.gz
gunzip clash-linux-armv7-v1.10.6.gz
rm -rf clash-linux-armv7-v1.10.6.gz
mv clash-linux-armv7 clash
sudo mv clash /usr/local/bin
sudo chmod a+x /usr/local/bin/clash
二、配置Clash
Clash配置文件的默认路径是~/.config/clash
,如果你的Home目录不存在相应文件夹就需要你自己创建,然后把你机场提供的配置文件放到该文件下就可以了,Clash配置文件的默认名称应该是config.yaml
。
mkdir ~/.config/clash
mv your/clash/config/file config.yaml
mv config.yaml ~/.config/clash
另外Clash还需要一个Country.mmdb文件,Country.mmdb是全球IP库,可以实现各个国家的IP信息解析和地理定位,没有这个文件clash无法正常启动,你可以前往GitHub下载。下载完成后同样放在默认路径下就可以了~/.config/clash
。
三、配置终端代理
首先我们需要添加几个环境变量:
sudo vim /etc/environment
然后添加以下配置内容:
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
export no_proxy="localhost, 127.0.0.1, *edu.cn"
系统变量的https_proxy的代理地址和http_proxy的代理地址是一样的,因为Clash使用一个地址同时代理http和https。另外,no_proxy表示其中的地址不需要代理,这一点很重要,比如我们不需要代理我们的校园网地址,因此加入要*edu.cn
。
然后再对相应的终端应用配置代理:
为sudo配置代理
进入sudo配置文件:
sudo visudo
然后添加以下内容:
Defaults env_keep+="http_proxy https_proxy no_proxy"
为apt配置代理
进入apt配置文件:
sudo vim /etc/apt/apt.conf.d/10proxy
然后添加以下内容:
Acquire::http::Proxy "http://127.0.0.1:7890/";
为git配置代理
进入git配置文件:
vim ~/.gitconfig
然后添加以下内容:
[http]
proxy=http://127.0.0.1:7890
[https]
proxy=http://127.0.0.1:7890
为pip配置代理
进入pip配置文件:
vim ~/.config/pip/pip.conf
然后添加以下内容:
[global]
proxy = http://127.0.0.1:7890
http-proxy = http://127.0.0.1:7890
https-proxy = http://127.0.0.1:7890
trusted-host = pypi.python.org global.trusted-host pypi.org global.trusted-host files.pythonhosted.org
为npm配置代理
进入npm配置文件:
vim ~/.npmrc
然后添加以下内容:
proxy=http://127.0.0.1:7890
http-proxy=http://127.0.0.1:7890
https-proxy=http://127.0.0.1:7890
为cargo配置代理
进入cargo配置文件:
vim ~/.cargo/config
然后添加以下内容:
[http]
proxy=http://127.0.0.1:7890
[https]
proxy=http://127.0.0.1:7890
四、使用Clash
配置完成后需要重启树莓派让配置生效,这样配置才能生效。理论上这样一波配置后,大部分终端应用都可以正常使用了,如果你有其他的终端应用可自行参考相关文档进行配置。
重启之后在终端中输入clash,如果输出类似以下内容那么就说明Clash启动成功了。
INFO[0000] Start initial compatible provider 手动选择
INFO[0000] Start initial compatible provider 节点选择
INFO[0000] Start initial compatible provider 故障切换
INFO[0000] Start initial compatible provider 自动选择
INFO[0000] HTTP proxy listening at: [::]:7890
INFO[0000] RESTful API listening at: 127.0.0.1:9090
INFO[0000] SOCKS proxy listening at: [::]:7891
你可以更新一下系统或者打开浏览器测试一下Google,如果可以访问你就可以愉快地玩耍了!
五、开机自启
既然我们都已经可以使用Clash了,当然要让树莓派能够开机自启Clash对吧。在树莓派推荐使用crontab作为自动任务管理器。
输入以下命令可以打开crontab:
crontab -e
第一次使用可能需要你选择默认的编辑器,看个人喜好选择就好,然后在打开的文件末尾添加以下内容:
@reboot /usr/local/bin/clash
六、控制面板
GitHub上有很多优秀的有关Clash Dashboard的项目,这些项目可以非常方便地帮助你查看、设置和管理你的Clash。
从GitHub上克隆Clash Dashbaord到Clash的默认配置文件夹下。
cd ~/.config/clash
git clone https://github.com/Dreamacro/clash-dashboard.git
cd ~/.config/clash/clash-dashboard
git checkout -b gh-pages origin/gh-pages
下载完成后你需要对Clash的配置文件稍作修改,在config.yaml的头部添加或者修改以下两项:
external-ui: clash-dashboard
external-controller: 127.0.0.1:9090
然后在浏览器中输入http://127.0.0.1:9090/ui就可以看到Clash的控制面板了。