2022年11月10日星期四

Armbian for Amlogic TV Boxes

Armbian 

Armbian(中文名:岸边) 系统是基于 Debian/Ubuntu 而构建的专门用于 ARM 芯片的轻量级 Linux 系统。Armbian 系统精益、干净,并且 100% 兼容并继承了 Debian/Ubuntu 系统的功能和丰富的软件生态,可以安全稳定地运行在 TF/SD/USB 及设备的 eMMC 里。

现在你可以将电视盒子的安卓 TV 系统更换为 Armbian 系统,让他成为一台功能强大的服务器。本项目为 Amlogic,Rockchip 和 Allwinner 盒子构建 Armbian 系统。支持写入 eMMC 中使用,支持更新内核等功能。使用方法详见Armbian 使用文档。

最新的 Armbian 固件可以在 Releases 中下载。欢迎 Fork 并进行个性化定制。如果对你有用,可以点仓库右上角的 Star 表示支持。

Armbian 固件说明

芯片设备可选内核Armbian 固件
a311dKhadas-VIM3全部aml_a311d.img
s922xBeelink-GT-King, Beelink-GT-King-Pro, Ugoos-AM6-Plus, ODROID-N2, X88-King全部aml_s922x.img
s905x3X96-Max+, HK1-Box, Vontar-X3, H96-Max-X3, Ugoos-X3, TX3(QZ), TX3(BZ), X96-Air, X96-Max+_A100, A95XF3-Air, Tencent-Aurora-3Pro(s905x3-b), X96-Max+Q1, X96-Max+100W全部aml_s905x3.img
s905x2X96Max-4G, X96Max-2G, MECOOL-KM3-4G, Tanix-Tx5-Max, A95X-F2全部aml_s905x2.img
s912Tanix-TX8-Max, Tanix-TX9-Pro(3G), Tanix-TX9-Pro(2G), Tanix-TX92, Nexbox-A1, Nexbox-A95X-A2, A95X, H96-Pro-Plus, VORKE-Z6-Plus, Mecool-M8S-PRO-L, Vontar-X92, T95Z-Plus, Octopus-Planet, Phicomm-T1全部aml_s912.img
s905dMECOOL-KI-Pro, Phicomm-N1全部aml_s905d.img
s905xHG680P, B860H, TBee-Box, T95, TX9, Q96-mini(s905l-b)全部aml_s905x.img
s905wX96-Mini, TX3-Mini, W95, X96W/FunTV全部aml_s905w.img
s905Beelink-Mini-MX-2G, Sunvell-T95M, MXQ-Pro+4K全部aml_s905.img
s905l3aE900V22C/D, CM311-1a-YST, M401A, M411A, UNT403A, UNT413A, ZTE-B863AV3.2-M全部aml_s905l3a.img
s905lb/3bM302A/M304A, E900V22E, BesTV-R3300L(s905l-b)全部aml_s905l2.img
aml_s905lb-r3300l.img
s905l2/3MGV2000, MGV3000, Wojia-TV-IPBS9505, CM311-1(s905l3), HG680-LC(s905l3)全部aml_s905l2.img
rk3588Radxa-Rock5B, HinLink-H88Krk3588rockchip_boxname.img
rk3568FastRhino-R66S, FastRhino-R68S, HinLink-H66K, HinLink-H68K6.x.yrockchip_boxname.img
rk3399EAIDK-610, KING3399, TN33996.x.yrockchip_boxname.img
rk3328beikeyun, l1pro全部rockchip_boxname.img
allwinnervplus(h6)全部allwinner_boxname.img

💡提示:当前 s905 的盒子只能在 TF/SD/USB 中使用,其他型号的盒子同时支持写入 EMMC 中使用。更多信息请查阅支持的设备列表说明。

安装及升级 Armbian 的相关说明

选择和你的盒子型号对应的 Armbian 固件,使用 Rufus 或者 balenaEtcher 等工具将固件写入 USB 里,然后把写好固件的 USB 插入盒子。

安装 Armbian 到 EMMC

  1. Rockchip 平台的安装方法请查看说明文档中的 8.2章节。

  2. Amlogic 和 Allwinner 平台,登录 Armbian 系统 (默认用户: root, 默认密码: 1234) → 输入命令:

armbian-install
可选参数默认值选项说明
-mnoyes/no使用 Mainline u-boot
-ayesyes/no使用 ampart 分区表调整工具
-lnoyes/noList. 显示全部设备列表

举例: armbian-install -m yes -a no

更新 Armbian 内核

登录 Armbian 系统 → 输入命令:

# 使用 root 用户运行 (sudo -i)
# 如果不指定参数,将更新为最新版本。
armbian-update
可选参数默认值选项说明
-k最新版内核名称设置更新内核名称
-vstablestable/rk3588/dev指定内核版本分支
-mnoyes/no使用主线 u-boot
-byesyes/no更新内核时自动备份当前系统使用的内核
-r""""[救援] 使用 USB 中的系统内核更新 eMMC

举例: armbian-update -k 5.15.50 -v dev -m yes

如果当前目录下有成套的内核文件,将使用当前目录的内核进行更新(更新需要的 4 个内核文件是 header-xxx.tar.gz, boot-xxx.tar.gz, dtb-xxx.tar.gz, modules-xxx.tar.gz。其他内核文件不需要,如果同时存在也不影响更新,系统可以准确识别需要的内核文件)。如果当前目录没有内核文件,将从服务器查询并下载同系列的最新内核进行更新。在设备支持的可选内核里可以自由更新,如从 5.10.125 内核更新为 5.15.50 内核。

更新内核时会自动备份当前系统使用的内核,存储路径在 /ddbr/backup 目录里,如果不需要可以删除。

💡 因特殊原因导致的更新不完整等问题,造成系统无法从 eMMC 启动时,可以从 USB 中启动任意内核版本的 Armbian 系统,运行 armbian-update -r 命令可以把 USB 中的系统内核更新至 eMMC 中,实现救援的目的。

安装常用软件

登录 Armbian 系统 → 输入命令:

armbian-software

使用 armbian-software -u 命令可以更新本地的软件中心列表。根据用户在 Issue 中的需求反馈,逐步整合常用软件,实现一键安装/更新/卸载等快捷操作。包括 docker 镜像、桌面软件、应用服务 等。详见更多说明。

修改 Armbian 配置

登录 Armbian 系统 → 输入命令:

armbian-config

为 Armbian 创建 swap

如果你在使用 docker 等内存占用较大的应用时,觉得当前盒子的内存不够使用,可以创建 swap 虚拟内存分区,将磁盘空间的一定容量虚拟成内存来使用。下面命令输入参数的单位是 GB,默认为 1。

登录 Armbian 系统 → 输入命令:

armbian-swap 1

控制 LED 显示

登录 Armbian 系统 → 输入命令:

armbian-led

根据 LED 屏显示控制说明 进行调试。

在 TF/SD/USB 中使用 Armbian

激活 TF/SD/USB 的剩余空间,请登录 Armbian 系统 → 输入命令:

armbian-tf

根据提示输入 e 将剩余空间扩容至当前系统分区和文件系统,输入 c 将创建新的第 3 分区。

或者手动分配剩余空间

备份/还原 EMMC 原系统

支持在 TF/SD/USB 中对盒子的 EMMC 分区进行备份/恢复。建议您在全新的盒子里安装 Armbian 系统前,先对当前盒子自带的安卓 TV 系统进行备份,以便日后在恢复电视系统等情况下使用。

请从 TF/SD/USB 启动 Armbian 系统 → 输入命令:

armbian-ddbr

根据提示输入 b 进行系统备份,输入 r 进行系统恢复。

在 Armbian 中编译内核

在 Armbian 中编译内核的用法详见 编译内核 说明文档。登录 Armbian 系统 → 输入命令:

armbian-kernel -u
armbian-kernel -k 5.10.125

更多使用说明

将本地系统中的全部服务脚本更新到最新版本,可以登录 Armbian 系统 → 输入命令:

armbian-sync

在 Armbian 的使用中,一些可能遇到的常见问题详见 documents

本地化打包

  1. 克隆仓库到本地 git clone --depth 1 https://github.com/ophub/amlogic-s9xxx-armbian.git

  2. 安装必要的软件包(脚本仅在 x86_64 Ubuntu-20.04/22.04 下做过测试)

sudo apt-get update -y
sudo apt-get full-upgrade -y
# For Ubuntu-22.04
sudo apt-get install -y $(cat compile-kernel/tools/script/ubuntu2204-build-armbian-depends)
  1. 进入 ~/amlogic-s9xxx-armbian 根目录,在根目录下创建文件夹 build/output/images ,并上传 Armbian 镜像文件 ( 如:Armbian_21.11.0-trunk_Odroidn2_current_5.15.50.img ) 到 ~/amlogic-s9xxx-armbian/build/output/images 目录里。原版 Armbian 镜像文件名称中的发行版本号(如:21.11.0)和内核版本号(如:5.15.50)请保留,它将在重构后用作 Armbian 固件的名称。

  2. 进入 ~/amlogic-s9xxx-armbian 根目录,然后运行 sudo ./rebuild -b s905x3 -k 5.10.125 命令即可生成指定 board 的 Armbian 镜像文件。生成的文件保存在 build/output/images 目录里。

本地化打包参数说明

参数含义说明
-bBoard指定电视盒子型号,如 -b s905x3 . 多个型号使用 _ 进行连接,如 -b s905x3_s905d . 使用 all 表示全部型号。型号代码详见 model_database.conf 中的 BOARD 设置。
-kKernel指定 kernel 名称,如 -k 5.10.125 . 多个内核使用 _ 进行连接,如 -k 5.10.125_5.15.50
-aAutoKernel设置是否自动采用同系列最新版本内核。当为 true 时,将自动在内核库中查找在 -k 中指定的内核如 5.10.125 的同系列是否有更新的版本,如有 5.10.125 之后的最新版本时,将自动更换为最新版。设置为 false 时将编译指定版本内核。默认值:true
-vVersion指定内核 版本分支 名称,如 -v stable_rk3588 。指定的名称须与分支目录名称相同。默认使用 stable_rk3588 分支版本。
-rKernelRepository指定内核仓库地址,如 -r https://github.com/ophub/kernel/tree/main/pub 。默认使用 ophub/kernel 的内核仓库。
-sSize对固件的 ROOTFS 分区大小进行设置,默认大小为 2560MiB, 固件大小必须大于 2048MiB. 例如: -s 2560
-tRootfsType对固件的 ROOTFS 分区的文件系统类型进行设置,默认为 ext4 类型,可选项为 ext4 或 btrfs 类型。例如: -t btrfs
-nCustomName设置固件名称中的签名部分。默认值为空。可根据需要添加签名如 _server,_gnome_desktop 或 _ophub 等,设置自定义签名时请勿包含空格。
-gGH_TOKEN可选项。设置 ${{ secrets.GH_TOKEN }},用于 api.github.com 查询。默认值:无
  • sudo ./rebuild : 使用默认配置,对全部型号的电视盒子进行打包。
  • sudo ./rebuild -b s905x3 -k 5.10.125 : 推荐使用. 使用默认配置进行相关内核打包。
  • sudo ./rebuild -b s905x3_s905d -k 5.10.125_5.15.50 : 使用默认配置,进行多个内核同时打包。使用 _ 进行多内核参数连接。
  • sudo ./rebuild -b s905x3 -k 5.10.125 -s 2560 : 使用默认配置,指定一个内核,一个型号进行打包,固件大小设定为2560MiB。
  • sudo ./rebuild -b s905x3 -v dev -k 5.10.125 : 使用默认配置,指定型号,指定版本分支,指定内核进行打包。
  • sudo ./rebuild -b s905x3_s905d 使用默认配置,对多个型号的电视盒子进行全部内核打包, 使用 _ 进行多型号连接。
  • sudo ./rebuild -k 5.10.125_5.15.50 : 使用默认配置,指定多个内核,进行全部型号电视盒子进行打包, 内核包使用 _ 进行连接。
  • sudo ./rebuild -k 5.10.125_5.15.50 -a true : 使用默认配置,指定多个内核,进行全部型号电视盒子进行打包, 内核包使用 _ 进行连接。自动升级到同系列最新内核。
  • sudo ./rebuild -t btrfs -s 2560 -k 5.10.125 : 使用默认配置,设置文件系统为 btrfs 格式,分区大小为 2560MiB, 并指定内核为 5.10.125 ,对全部型号电视盒子进行打包。

使用 GitHub Actions 进行编译

  1. 关于 Workflows 文件的配置在 build-armbian.yml 文件里。

  2. 全新编译:在 Actions 页面里选择 Build armbian ,根据 Armbian 官方支持的 OS 版本,可以选择 Ubuntu 系列:jammy,或者 Debian 系列:bullseye 等。点击 Run workflow 按钮即可编译。更多参数的设置方法可以在 Armbian 官方文档 里查阅。

  3. 再次编译:如果 Releases 中有已经编译好的 Armbian_.*-trunk_.*.img.gz 文件,你只是想再次制作其他不同 board 的盒子,可以跳过 Armbian 源文件的编译,直接进行二次制作。在 Actions 页面中选择 Use Releases file to build armbian ,点击 Run workflow 按钮即可二次编译。

  4. 使用其他 Armbian 固件,如 Armbian 官方固件下载网站 armbian.tnahosting.net 提供的 odroidn2 固件,仅在流程控制文件 rebuild-armbian.yml 中引入本仓库的脚本进行 Armbian 重构,即可适配其他盒子的使用。在 Actions 页面里选择 Rebuild armbian ,输入 Armbian 的网络下载地址如 https://dl.armbian.com/*/Armbian_*.img.xz ,或者在流程控制文件 rebuild-armbian.yml 中通过 armbian_path 参数设定重构文件的加载路径。代码如下:

- name: Rebuild Armbian
  uses: ophub/amlogic-s9xxx-armbian@main
  with:
    build_target: armbian
    armbian_path: build/output/images/*.img
    armbian_board: s905d_s905x3_s922x_s905x
    armbian_kernel: 5.10.125_5.15.50
    gh_token: ${{ secrets.GH_TOKEN }}

GitHub Actions 输入参数说明

关于 GitHUB RELEASES_TOKEN 的相关设置可参考:RELEASES_TOKEN。相关参数与本地打包命令相对应,请参考上面的说明。

参数默认值说明
armbian_path无设置原版 Armbian 文件的路径,支持使用当前工作流中的文件路径如 build/output/images/*.img ,也支持使用网络下载地址如: https://dl.armbian.com/*/Armbian_*.img.xz
armbian_boards905d_s905x3设置打包盒子的 board ,功能参考 -b
armbian_kernel5.10.125_5.15.50设置内核 版本,功能参考 -k
auto_kerneltrue设置是否自动采用同系列最新版本内核,功能参考 -a
version_branchstable_rk3588指定内核 版本分支 名称,功能参考 -v
kernel_repoophub/kernel指定内核仓库地址,功能参考 -r
armbian_size2560设置固件 ROOTFS 分区的大小,功能参考 -s
armbian_fstypeext4设置固件 ROOTFS 分区的文件系统类型,功能参考 -t
armbian_sign无设置固件名称中的签名部分,功能参考 -n
gh_token无可选项。设置 ${{ secrets.GH_TOKEN }}。功能参考 -g

GitHub Actions 输出变量说明

上传到 Releases 需要给仓库添加 ${{ secrets.GITHUB_TOKEN }} 和 ${{ secrets.GH_TOKEN }} 并设置 Workflow 读写权限,详见使用说明。

参数默认值说明
${{ env.PACKAGED_OUTPUTPATH }}out打包后的固件所在文件夹的路径
${{ env.PACKAGED_OUTPUTDATE }}04.13.1058打包日期(月.日.时分)
${{ env.PACKAGED_STATUS }}success打包状态:success / failure

Armbian 固件默认信息

名称值
默认 IP从路由器获取 IP
默认账号root
默认密码1234

挂载EMMC:

示例:
mkdir -p /mnt/emmc/boot
mkdir -p /mnt/emmc/system
mount /dev/mmcblk2p1 /mnt/emmc/boot
mount /dev/mmcblk2p2 /mnt/emmc/system

修改/boot/uEnv.txt文件:
FDT=/dtb/amlogic/meson-g12a-x96-max.dtb

挂载img镜像:
losetup -f -P --show os.img
mount /dev/loop0p1 /mnt/emmc/boot
mount /dev/loop0p2 /mnt/emmc/system

挂载网络硬盘:
apt install cifs-utils
apt install smbclient

mount -t cifs -o username=admin,password=1234,gid=0,uid=0, //192.168.1.52/Data /mnt/SMB


2022年10月22日星期六

使多个DWG文件在一个AutoCAD窗口中打开的设置方法

方法一:

1、命令行输入 SDI  设置值为 0

2、文件打开方式在程序里选择 AutoCAD DWG launcher

选择  .dwg  文件, 右键→打开方式→选择默认程序→选择AutoCAD DWG launcher打开;不要选AutoCAD Application。并且勾选”始终此此程序打开此类文件“,AutoCAD DWG launcher是提供DWG文件的缩略图预览功能,AutoCAD Application是CAD的主要应用程序

AutoCAD DWG launcher 程序路径:C:\Program Files\Common Files\Autodesk Shared\AcShellEx\AcLauncher.exe

3、把AutoCAD Application程序( acad.exe )属性>兼容性>设置中“以管理员身份运行此程序” 的勾去掉

4、AutoCAD里选择“工具”--“选项”菜单,弹出选项对话框,选中“显示”一栏,将“显示文件选项卡”复选框选中,再点击“应用”---“确定”(AutoCaD2008以下版本没有)

2022年10月5日星期三

armbian 系统使用备注

更新
系统更新
sudo apt-get update  -y && sudo apt-get upgrade  -y && sudo apt-get dist-upgrade -y
垃圾清理
sudo apt-get autoclean && sudo apt-get clean && sudo apt-get autoremove && history -c && dpkg -l |grep "^rc"|awk '{print $2}' |xargs aptitude -y purge

设置SSH
允许root用户远程登陆,修改/etc/ssh/sshd_config文件:
sudo vim /etc/ssh/sshd_config

#修改端口,添加或取消注释启用配置
Port 57822
LoginGraceTime 120  
PermitRootLogin yes  
StrictModes yes  

刷新状态:
sudo service ssh restart 

设定root用户密码
输入 sudo passwd 命令,输入一般用户密码并设定root用户密码

自动安装标准软件包(按需执行)
unminimize

设置日志缓存
开启armbian-ramlog
sudo systemctl enable armbian-ramlog
查看 /var/log挂载
df -h | grep /var/log

清空系统日志
sudo find /var/log -mindepth 1 -delete  &&  sudo find /var/log.hdd -mindepth 1 -delete
或
sudo systemctl stop armbian-ramlog
sudo rm -rf /var/log/*  /var/log.hdd/*
sudo systemctl restart armbian-ramlog

# 每天 0点执行同步日志同步
修改/etc/cron.d/armbian-truncate-logs文件
0 0 * * *  

更新软件源
Debian系统源:
Ubuntu系统源:
armbian源:

示例:
/etc/apt/sources.list.d/debian.sources文件
Types: deb URIs: https://mirrors.aliyun.com/debian # URIs: http://deb.debian.org/debian Suites: trixie trixie-updates trixie-backports Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg Types: deb URIs: https://mirrors.aliyun.com/debian-security # URIs: http://security.debian.org/ Suites: trixie-security Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

/etc/apt/sources.list.d/armbian.sources文件
Types: deb
URIs: https://mirrors.aliyun.com/armbian
# URIs: http://apt.armbian.com
Suites: trixie
Components: main trixie-utils trixie-desktop
Signed-By: /usr/share/keyrings/armbian-archive-keyring.gpg


电源安全关闭
poweroff

启用硬件随机数生成器(HWRNG)服务(提升熵值,提升部分服务初始化速度)
sudo systemctl enable --now rng-tools-debian

内核更新(需要设备能正常访问GitHub)
armbian-update
更新脚本文件路径:
/usr/sbin/armbian-update

设定指定目录读写权限
chmod -R 777 /mnt

删除文件(rm -rf / 绝对不要执行!会清空系统根目录)
删除目录
rm -rf   /路径及目录名
删除文件
rm -f   /路径及文件名

软连接目录
#建立软链接  /mnt/Data/.halo(真实目录)与 /root/.halo (将要生成的软连接的路径)
ln -s /mnt/Data/.halo   /root/.halo
ln -s  /var/log   /usr/local/openp2p/log

安装dkms组件(管理内核模块的框架)
sudo apt install dkms

Systemd服务控制:
# 刷新 Systemd
sudo systemctl daemon-reload 
#命令+指定服务名
# 开机自启
sudo systemctl enable  
# 启动
sudo systemctl start  
# 重启
sudo systemctl restart   
# 停止
sudo systemctl stop  
# 查看运行状态
sudo systemctl status  
# 禁用服务(取消开机自启)
sudo systemctl disable  
# 查看服务是否启用
systemctl is-enabled  

终端使用proxychains4加速网络:
sudo apt install proxychains4
终端内使用:
proxychains bash

#screen简单使用:
创建后台窗口,本次以update为窗口名字演示
screen -S update
#恢复后台窗口
screen -r update
#结束后台窗口
screen -S update -X quit

多个同名的screen会话,可以执行:screen -ls 查看对应会话的session_id,然后使用screen -D -r + session_id 进行恢复。
screen -D -r session_id
退出指定会话 screen -X -S + session id quit
screen -X -S session_id quit

远程执行脚本改本地执行:
示例:
远程命令:
wget -qO- https://raw.githubusercontent.com/komari-monitor/komari-agent/refs/heads/main./install.sh | sudo bash -s -- -e https://ss.cn:58282 -t ISxUoeCAdd653xTmU6Jscf
改本地执行:
sudo bash install.sh -e https://ss.cn:58282 -t ISxUoeCAdd653xTmU6Jscf

#查看磁盘分区情况
# 块设备树,看分区
lsblk
挂载点
df -lhT
df -h

# 带传输类型TRAN=usb筛选
lsblk -o NAME,MODEL,SIZE,TYPE,TRAN,MOUNTPOINT

# 看文件系统、UUID
blkid

内置分区挂载:
示例:
挂载boot分区:
mount /dev/mmcblk2p1 /mnt
挂载系统分区:
mount /dev/mmcblk2p2 /media
-挂载命令    -待挂载分区    -将要挂载到的目录(实际存在)
分区卸载
umount /dev/sdb1
-卸载命令    -将要卸载的目录

USB相关命令
看端口拓扑、速率驱动
lsusb -t
看所有 USB 设备
lsusb
列出USB设备详细信息(输出全部信息)
lsusb -v

#查看全部USB设备sysfs路径
ls /sys/bus/usb/devices/

#看USB debug全部信息(含供电信息)
cat /sys/kernel/debug/usb/devices

#udev 监控热插拔
udevadm monitor --subsystem-match=usb

插拔抓日志
dmesg -w

# 查看内核USB信息
dmesg | grep -i usb

# 关闭USB自动节能(永久保持供电)
echo on | sudo tee /sys/bus/usb/devices/usb1/power/control
echo on | sudo tee /sys/bus/usb/devices/usb2/power/control

自动挂载SD卡:
rc.local 文件内添加命令
sleep 3
mount /dev/mmcblk1p1 /mnt/Data
exit 0

开机自动挂载指定硬盘
查看磁盘信息
blkid

格式化命令如下:
mkfs.ext4 /dev/sda(换成自己的硬盘名)
或格式化成ntfs格式
mkfs.ntfs /dev/sda(换成自己的硬盘名)
首先介绍一下手动挂载和卸载硬盘,
比如把你的硬盘挂载到/mnt/disk
如果没有这个目录,你需要先创建目录,执行 mkdir -p /mnt/disk  (/mnt/disk是你想要创建的目录路径).
mount /dev/sda1 /mnt/disk/
或
mount UUID="14DC0E4ADC0E2698" /mnt/disk/
上面的UUID是对应于/dev/sda1的,两种方式都可以挂载。
挂载完成后,cd到/mnt/disk/目录,然后执行ls,就可以看到挂载的硬盘里的内容了

卸载执行下面的命令就行

umount dev/sda1(设备名)
或
umount /mnt/disk(挂载目录)
以上代码只是示例,需要换成对应的名称和挂载目录

下面是自动挂载

1-通过修改fstab挂载(不推荐)

不推荐这种方法,一旦你的硬盘拔下来了,然后在开机之前没装上,你的系统基本就废了,进不去系统,需要重刷,不适用于可能经常插拔的移动硬盘。

执行如下命令:

nano /etc/fstab

在打开的窗口下面空白处输入以下代码

UUID="14DC0E4ADC0E2698" /mnt/disk ntfs auto 0 0

以上代码的含义分别是:你硬盘的UUID(通过blkid命令获取)、想要挂载到的目录(要提前建好目录)、你硬盘的文件系统(ext4或ntfs),后面的auto 0 0照抄就行,要注意这几个参数之间都是有一个空格的。编辑好之后,Ctrl+X退出,Y保存,回车确认,这样就设置好了开机自动挂载硬盘。

2-通过rc.local(推荐)

这种方法的好处是,你即使拔下来硬盘开机,也不会进不去系统,等你下次插上硬盘开机还是会自动挂载,非常方便!

依次执行如下操作:

nano /etc/init.d/mount.sh

输入以下内容

#! /bin/sh
# sleep 1
mount UUID="14DC0E4ADC0E2698" /mnt/disk/

记得把你自己硬盘的UUID和你要挂载的目录替换上去,保存退出。然后执行下面的命令:

nano /etc/rc.local

在exit0之前添加下面的代码:

sh /etc/init.d/mount.sh

然后保存退出即可,这样开机自动挂载硬盘就搞定了,这种方法比较安全,推荐使用。



设置LAN+Wlan同时在线:


*查看已有连接*

nmcli connection show

1-删除旧的 netplan 生成的 WiFi(如有必删,无则跳过):

nmcli con delete "netplan-wlan0-YH-5G"

或

nmcli connection delete "WiFi名称"

也可以用 UUID 删除,更稳:

nmcli connection delete "你的UUID"

2-添加WIFI:(示例-SSID:YH-5G 密码为:12345678   无线模式为:隐藏)

nmcli connection add type wifi \

ifname wlan0 \

con-name YH-5G \

ssid "YH-5G" \

wifi.hidden yes \

wifi-sec.key-mgmt wpa-psk \

wifi-sec.psk "12345678"

3-然后启动连接:

nmcli connection up YH-5G

4-然后设置双网同时在线(有线优先):

nmcli connection modify "Wired connection 1" ipv4.route-metric 50

nmcli connection modify "YH-5G" ipv4.route-metric 100

5-最后重启网络:

systemctl restart NetworkManager

6-验证是否成功:

ip addr

eth0 有 IP(UP)wlan0 有 IP(UP)则成功。

7-创建开机自启脚本并赋予权限(直接复制执行):

cat > /usr/local/bin/dual-net-auto.sh << 'EOF'

#!/bin/bash

sleep 3

# 启动有线

nmcli connection up "Wired connection 1"

# 启动隐藏WiFi

nmcli connection up "YH-5G"

# 设置路由优先级(有线优先)

nmcli connection modify "Wired connection 1" ipv4.route-metric 50

nmcli connection modify "YH-5G" ipv4.route-metric 100

EOF


# 赋予执行权限

chmod +x /usr/local/bin/dual-net-auto.sh

8-创建系统服务(开机自动运行):

cat > /etc/systemd/system/dual-net.service << 'EOF'
[Unit]
Description=Auto start LAN + WLAN on boot
After=NetworkManager.service
[Service]
Type=simple
ExecStart=/usr/local/bin/dual-net-auto.sh
[Install]
WantedBy=multi-user.target
EOF


9-启用开机自启(最后一步):

systemctl daemon-reload

systemctl enable dual-net

systemctl start dual-net

10-重启验证是否成功

reboot

2022年10月2日星期日

通过jsDelivr引用资源

通过github仓库+jsDelivr引用资源

基本使用方法:

https://cdn.jsdelivr.net/gh/你的用户名/你的仓库名@发布的版本号/文件路径

例如:

https://cdn.jsdelivr.net/gh/doocs/md@1.5.9/src/assets/images/favicon.png

注意:版本号不是必需的,是为了区分新旧资源,如果不使用版本号,将会直接引用最新资源,除此之外还可以使用某个范围内的版本,查看所有资源等,具体使用方法如下:

加载任何Github发布、提交或分支
https://cdn.jsdelivr.net/gh/user/repo@version/file
示例:
原始地址:

加载指定版本,示例 jQuery v3.2.1 

使用版本范围而不是特定版本,示例jquery@3.2.x 或jquery@3.x.x https://cdn.jsdelivr.net/gh/jquery/jquery@3.2/dist/jquery.min.js

完全省略该版本以获取最新版本

将“.min”添加到任何JS/CSS文件中以获取缩小版本,如果不存在,将为会自动生成https://cdn.jsdelivr.net/gh/jquery/jquery@3.2.1/src/core.min.js 

在末尾添加 / 以获取资源目录列表 




公共jsDelivr目前有以下备选站:
分别由不同的赞助商提供,

https://cdn.jsdelivr.net/                         由fastly提供
https://fastly.jsdelivr.net/                     由fastly提供
https://gcore.jsdelivr.net/                    由G-Core Labs提供
https://testingcf.jsdelivr.net/                由CloudFlare提供
其实 cdn.jsdelivr.net 就是由上述几家服务的综合,只不过在特定情况只解析某一个特定服务商。

至于速度,请自行去类似Ping 之类的网站上测试。

前端静态文件CDN备选站
如果你在寻找前端库的CDN,那么有以下几个CDN站值得一试:

https://www.staticfile.org/ – 由七牛云及掘金提供支持
https://www.bootcdn.cn/ – 由极兔云联合BootStrap中文网提供
https://cdn.bytedance.com/ – 字节跳动提供,内容与cdnjs一致,推荐使用
https://www.sourcegcdn.com/ – 由 AHDark 创立,支持npm及GitHub(白名单)
https://cdnjs.com/ – 由CloudFlare等提供支持
https://unpkg.com/ – 也是CloudFlare提供支持,仅限npm包
以上站点可能对于一些包的更新不是那么及时,所以jsd如果没有大面积不可用,还是可以作为最好的选择的。

2022年10月1日星期六

让Windows程序在后台静默运行


       在Windows系统中,程序默认是要有窗口显示的,而且运行中的任务一般还要在任务栏上有所反应,这样便于切换操作。不过有些时候我们可能只想它默默地在后台运行,那么可以隐藏程序的运行界面

新建一个vbs后缀的空白文件,然后粘贴以下代码:

Dim WShell
Set WShell = CreateObject("WScript.Shell")
WShell.Run "background.exe", 0
Set WShell = Nothing

        替换以上background.exe为需要后台运行的可执行文件/程序(如:exe)路径,如把此vbs和需运行的文件放在同一文件夹,则只需指定文件名称即可。
保存此vbs,双击执行,指定的可执行文件的进程将在后台默默运行,同时可在任务管理器中看到该程序进程。