博远日志

记事本

1
2
3
4
echo -E -n youpassword | sudo -E -s
cd /Volumes/Parallels\ Desktop\ 11
export SYSTEM_VERSION_COMPAT=1
open Install.app

准备容器

注意:这一步并非必要的,比如我就是整个系统都是识别大小写的,所以新建一个文件夹即可

更好的实现是,我在自己的服务器(PVE)创建了一个专门进行编译的ubuntu,这样编译不占用本地性能

1
2
3
4
# 创建一个识别大小写的盘
hdiutil create -size 20g -type SPARSE -fs "Case-sensitive HFS+" -volname OpenWRT OpenWRT.sparseimage
#挂载镜像
hdiutil attach OpenWRT.sparseimage
GUI * 未验证是否能够成功
1
磁盘工具 添加卷宗 选择大小20GB 保留20GB 选择 APFS(区分大小写)
1
cd /Volumes/OpenWRT

使用Brew安装需要的包

1
brew install coreutils findutils gawk grep gnu-getopt gnu-tar wget diffutils git-extras quilt make ncurses pkg-config --verbose

配置环境变量

For x86_64 Apple hardware:

1
2
3
4
5
6
7
8
9
10
PATH="/usr/local/opt/gnu-getopt/bin:$PATH"
PATH="/usr/local/opt/make/libexec/gnubin:$PATH"
PATH="/usr/local/opt/gettext/bin:$PATH"
PATH="/usr/local/opt/coreutils/bin:$PATH"
PATH="/usr/local/opt/findutils/libexec/gnubin:$PATH"
export PATH
# 注释掉的变量反正我是没用到过
# PATH="/usr/local/opt/grep/libexec/gnubin:$PATH"
# PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"
# PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"

For arm64 (Apple Silicon(M1)) Apple hardware:

1
2
3
4
5
6
PATH="/opt/homebrew/opt/make/libexec/gnubin:$PATH"
PATH="/opt/homebrew/opt/gnu-getopt/bin:$PATH"
PATH="/opt/homebrew/opt/gettext/bin:$PATH"
PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"
PATH="/opt/homebrew/opt/findutils/libexec/gnubin:$PATH"
export PATH
1
2
# Build前使用
source /Volumes/OpenWRT/env.sh

或者运行一下命令行

1
2
3
#/bin/bash -c "$(curl -fsSL https://blog.songkunda.cn/files/路由器/doENV.sh)"
/bin/bash -c "$(curl -fsSL https://blog.songkunda.cn/files/%E8%B7%AF%E7%94%B1%E5%99%A8/doENV.sh)"

准备物料

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cd /Volumes/OpenWRT
git clone https://github.com/openwrt/openwrt.git
cd openwrt
git pull

# 更新 所有feeds到最新

./scripts/feeds update -a


# 下载所有menuconfig 需要的feeds
./scripts/feeds install <package_name>
./scripts/feeds install -a

# 如需其他版本
#git branch -a
#git tag

编译

1
2
3
4
5
6
7
8
9
10
11
12
13
## 检查环境
make defconfig download clean world

# 配置软件镜像及内核
make menuconfig
make kernel_menuconfig
# 制作自己的配置文件(diffconfig)
./scripts/diffconfig.sh > K3.config

# 编译软件镜像
# make -j $(nproc) V=99
# verbose 在后面添加" V=99 "
make -j $(nproc)

注意事项

make 报错

/Volumes/OpenWrt/openwrt/include/toplevel.mk:29: *** Please use a newer version of GNU make. The version shipped by Apple is not supported. Stop.

1
2
3
sh /Volumes/OpenWRT/doENV.sh
# 如果你已经运行过上面命令 只需要再source就行了
source /Volumes/OpenWrt/env.sh

make: *** No rule to make target ‘menuconfig’. Stop.

1
2
3
4
5
# 你可能没有在源码目录上
cd /Volumes/OpenWRT/openwrt
make menuconfig


Failed to install stub

1
2
3
4
5
6
7
Checking 'ldconfig-stub'... failed.

Build dependency: Failed to install stub

Prerequisite check failed. Use FORCE=1 to override.
gmake: *** [/Volumes/OpenWrt/openwrt/include/toplevel.mk:180: staging_dir/host/.prereq-build] Error 1

  • 解决办法:
1
2
3
4
rm -rf ./feeds
rm -rf ./staging_dir
rm -rf ./tmp
./scripts/feeds clean -f

luci fatal: 过早的文件结束符(EOF)

1
2
3
4
5
6
7
8
9
10
11
Updating feed 'luci' from 'https://git.openwrt.org/project/luci.git;openwrt-21.02' ...
正克隆到 './feeds/luci'...
remote: Enumerating objects: 8917, done.
remote: Counting objects: 100% (8917/8917), done.
remote: Compressing objects: 100% (4380/4380), done.
error: RPC 失败。curl 18 transfer closed with outstanding read data remaining
fetch-pack: unexpected disconnect while reading sideband packet
fatal: 过早的文件结束符(EOF)
fatal: fetch-pack:无效的 index-pack 输出
failed.

  • 解决方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
cd  ./feeds
git clone git://git.openwrt.org/project/luci.git -j 4 -b openwrt-21.02 -v --depth 1
#正克隆到 'luci'...
#查找 git.openwrt.org ...完成。
#连接到 git.openwrt.org(端口 9418)... 46.101.214.210 完成。
#remote: Enumerating objects: 8917, done.
#remote: Counting objects: 100% (8917/8917), done.
#remote: Compressing objects: 100% (4380/4380), done.
#remote: Total 8917 (delta 2897), reused 6031 (delta 712), pack-reused 0
#接收对象中: 100% (8917/8917), 7.50 MiB | 18.00 KiB/s, 完成.
#处理 delta 中: 100% (2897/2897), 完成.
#正在更新文件: 100% (4474/4474), 完成.


# 完成后 运行命令让他重建luci.index package info 和 target info
#Updating feed 'luci' from 'https://git.openwrt.org/project/luci.git;openwrt-21.02' ...
#已经是最新的。
#Create index file './feeds/luci.index'
#Collecting package info: done
#Collecting target info: done
./scripts/feeds update luci -a

## 注意 以下安装命令要运行2次 第一次 会有部分依赖luci的缺失 第二次正常安装
./scripts/feeds install -a

编译后固件位置

1
2
bin/bcm53xx/xxx-squashfs-sysupgrade.bin
bin/bcm53xx/xxx-squashfs-sysupgrade.bin

苹果笔记本电脑 15寸 MacBook pro A1398胶条 边框黑橡皮圈胶圈

需要工具

  • 1.2 五角螺丝刀(外壳)
  • T5 六角螺丝刀(屏幕卡扣)
  • T8 六角螺丝刀(屏幕连接轴)

操作步骤

拆解视频购买时候商家有送

注意事项

屏幕排线插拔保险扣扣掉后,一定要用镊子把两边翘起来,不要直接拔 比较容易损坏

###参考

MacOS Bash转zsh 错误汇总

0x0:

Error:declare: usage: declare [-afFirtx] [-p] [name[=value] ...]

// update Bash3.2 to Bash 5.0+

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
brew install bash
brew upgrade bash

#设置默认shell
chsh -s /usr/local/bin/bash

#升级系统bash
// sudo rm /bin/bash
sudo mv /bin/bash /bin/bash.bak
sudo ln -s /usr/local/bin/bash /bin/bash


// out :ln: /bin/bash: Operation not permitted
# 需要关闭系统[SIP](https://developer.apple.com/library/archive/documentation/Security/Conceptual/System_Integrity_Protection_Guide/Introduction/Introduction.html)

进入系统Recovery模式 ,重启cmd+R进入:

csrutil disable
csrutil enable

// mv: rename /bin/bash to /bin/bash.bak: Read-only file system
// ln: /bin/bash: File exists
# 第一步
//先检查
csrutil status
// System Integrity Protection status: disabled.
# 第二步
sudo mount -uw /

for Jenkins:

  • 给jenkins设置shell 路径 ,这里需要给系统用户操作jenkins目录的权限
  • 还是升级系统bash划算

0x1:

Error:zsh: bad set of key/value pairs for associative array
1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
zsh --version 
// out: zsh 5.7.1
// 错误提要 localdeclare 报相同错误
// declare bash 4.0以上才支持
TAGS='a 1 b 2 c 3'
local -A tag=($TAGS)
// out :zsh: bad set of key/value pairs for associative array

//该问题为zsh的bug
// 需要将zsh改为5.8+
brew install zsh
brew upgrade zsh
source ~/.zshrc
// 如果为更新成功 需要运行如下语句
// echo 'export PATH="/usr/local/opt/ncurses/bin:$PATH"' >> ~/.zshrc

//更改为
local -A tag=($(echo $TAGS))

//declare取值不需要 declare -x version=${tag[a]}
NS='a'
// 改为直接取值
version =${tag[${NS}]}.${BUILD_NUMBER}

删除EFI Boot 多余启动项

sudo efibootmgr //显示efi的启动项
sudo efibootmgr -b 0000 -B //删除多余的启动项,其中0000是要删除的引导项编号

PVE 中vim 出现乱码

** 原因是系统只安装了 vim-core 阉割版 **

方法一: 安装完整版vim

1
2
3

apt install vim -y

方法二: 使用nano

1
nano [file]

calc 支持 + - * / ()

1
2
3
4
5
// 使用autofix
// -moz-calc
// -webkit-calc
width :calc(100% - 60px);
// 注意IE对calc格式要求严格

Vapor 学习系列

安装

docker(建议)

1
2
3
4
5
6
7
8
9
10

docker pull swift
docker exec -it "ID" /bin/sh
cd ~
git clone https://github.com/vapor/toolbox.git
cd toolbox
# 可能需要挂代理
swift update
make install

macOS

1
brew install  vapor

生成初始项目

1
2
3
4
5
# step 1 先设置 git user 
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
# step 2 生成项目
vapor new "项目名"

注意: macOS 12以下系统 需要修改文件 Package.swift

1
2
3
4
5
6
7
8
9

- swift-tools-version:5.6
# 改为你当前环境版本(最少要到 3.0 才有SPM,建议能最新就最新)
+ swift-tools-version:5.5

# macOS系统裸装才需要修改,给 xcode 和 xctool 识别的
- .macOS(.v12)
# 改为支持10以上系统
+ .macOS(.v10_15)

参考

0%