search
arrow_back 返回
鲁班猫修改终端图案

鲁班猫修改终端图案

鲁班猫修改终端图案

这是鲁班猫原本在开机后终端打印的图案日志 image

我们可以修改根文件系统,改成我们自己的图案

拉取SDK源文件

可以看我“Ubuntu在线下载鲁班猫SDK源文件”这篇文章

修改根文件系统

修改这个文件SDK/debian/overlay/etc/update-motd.d/00-header image

#!/bin/sh
#

[ -r /etc/lsb-release ] && . /etc/lsb-release

printf "\n"
printf '\033[1;34m\n'
cat <<'EOF'
             OO                 OO      
            OOOO               OOOO     
           OOOOOO             OOOOOO    
          OOOOOOOO           OOOOOOOO   
         OOOOOOOOOO         OOOOOOOOOO  
        OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 
        OOOO=======================OOOO 
        OOO[  ████████   ████████  ]OOO 
        OOO[  ████████   ████████  ]OOO 
        OOOO=======================OOOO 
        OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 
        OOOOOO\   OOOOOOOOOOO   /OOOOOO 
        OOOOOOOOOOOOO\   /OOOOOOOOOOOOO 
        OOOOOOOOOOOOOO\_/OOOOOOOOOOOOOO  /OOO
        OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO_/OOO 
          ____  _  __               _____  _  
         / __ \| |/ /              |  __ \(_) 
        | |  | | ' /  __ _ _   _   | |__) | | 
        | |  | |  <  / _` | | | |  |  ___/| | 
        | |__| | . \| (_| | |_| |  | |    | | 
         \____/|_|\_\\__,_|\__, |  |_|    |_| 
                            __/ |             
                           |___/
EOF
printf '\033[0m\n'

if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
	# Fall back to using the very slow lsb_release utility
	DISTRIB_DESCRIPTION=$(lsb_release -s -d)
fi
printf "\n"
printf "Welcome to %s (%s %s %s)\n" "$DISTRIB_DESCRIPTION" "$(uname -o)" "$(uname -r)" "$(uname -m)"

编译根文件系统

# 选择SDK配置文件
./build.sh lunch

# 如果之前构建过要先删除
rm -f debian/linaro-gnome-rootfs.img

# 构建Debian
./build.sh debian

编译完成,是这个文件,记住它,后面需要用到 image

大小是4个G image

下载工具

去鲁班猫网盘下载Linux_Pack_Firmware_v2.29.zip image

下载完后解压传到Ubuntu或者先传到Ubuntu再解压,传的位置没要求 image

同时还要下载一个完整的镜像,把完整的镜像文件传到Linux_Pack_Firmware/rockdev目录下并重命名为update.img image

#重命名镜像为update.img,第一个参数根据实际镜像名称而定
mv lubancat-rk3588-debian11-gnome-20260113_update.img update.img

#重命名镜像为update.img,第一个参数根据实际镜像名称而定 mv lubancat-rk3588-debian11-gnome-20260113_update.img update.img

解包镜像

# 先在rockdev目录下将所有文件的权限改成可执行,不然会显示权限不够
chmod +x *
# 解包
./unpack.sh

image

将前面编译出来的根文件系统镜像替换掉output里面的rootfs.img,命名要一致 image

镜像打包

#进入输出目录
cd Linux_Pack_Firmware/rockdev/output

#打包镜像,根据实际芯片名称而定

#如果有权限问题或者报错
sudo chown -R $USER:$USER ~/Documents/Linux/Tools/Linux_Pack_Firmware/rockdev/output

#rk3588/rk3588s打包执行,下面是两个命令
../afptool -pack ./ update_tmp.img || pause

../rkImageMaker -RK3588 MiniLoaderAll.bin update_tmp.img update.img -os_type:androidos || pause

烧录 image

成功 image

改成彩色

#!/bin/sh
#

[ -r /etc/lsb-release ] && . /etc/lsb-release

printf "\n"
printf '\033[1;34m\n'
cat <<'EOF'
             OO                 OO      
            OOOO               OOOO     
           OOOOOO             OOOOOO    
          OOOOOOOO           OOOOOOOO   
         OOOOOOOOOO         OOOOOOOOOO  
        OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 
        OOOO=======================OOOO 
        OOO[  ████████   ████████  ]OOO 
        OOO[  ████████   ████████  ]OOO 
        OOOO=======================OOOO 
        OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 
        OOOOOO\   OOOOOOOOOOO   /OOOOOO 
        OOOOOOOOOOOOO\   /OOOOOOOOOOOOO 
        OOOOOOOOOOOOOO\_/OOOOOOOOOOOOOO  /OOO
        OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO_/OOO 
EOF

# OKayPi banner gradient using your 5 colors (cyan → green → yellow → orange → magenta).
# Falls back to plain text if awk is unavailable.
if command -v awk >/dev/null 2>&1; then
	cat <<'OKAYPI' | awk '
function lerp(a, b, t) { return int(a + (b - a) * t + 0.5) }
BEGIN {
  n = 5
  # Approximated from your reference image dots
  r[1] = 0;   g[1] = 185; b[1] = 255  # cyan
  r[2] = 35;  g[2] = 220; b[2] = 0    # green
  r[3] = 235; g[3] = 235; b[3] = 0    # yellow
  r[4] = 255; g[4] = 170; b[4] = 0    # orange
  r[5] = 255; g[5] = 0;   b[5] = 200  # magenta
}
{
  L = length($0)
  if (L < 2) { print; next }
  for (i = 1; i <= L; i++) {
    ch = substr($0, i, 1);
    x = (i - 1) / (L - 1)          # 0..1
    p = x * (n - 1) + 1            # 1..n
    k = int(p)
    t = p - k
    if (k >= n) { k = n - 1; t = 1 }

    rr = lerp(r[k], r[k + 1], t)
    gg = lerp(g[k], g[k + 1], t)
    bb = lerp(b[k], b[k + 1], t)
    printf "\033[38;2;%d;%d;%dm%s", rr, gg, bb, ch;
  }
  printf "\033[0m\n";
}
' 
          ____  _  __               _____  _  
         / __ \| |/ /              |  __ \(_) 
        | |  | | ' /  __ _ _   _   | |__) | | 
        | |  | |  <  / _` | | | |  |  ___/| | 
        | |__| | . \| (_| | |_| |  | |    | | 
         \____/|_|\_\\__,_|\__, |  |_|    |_| 
                            __/ |             
                           |___/
OKAYPI
else
	cat <<'OKAYPI'
          ____  _  __               _____  _  
         / __ \| |/ /              |  __ \(_) 
        | |  | | ' /  __ _ _   _   | |__) | | 
        | |  | |  <  / _` | | | |  |  ___/| | 
        | |__| | . \| (_| | |_| |  | |    | | 
         \____/|_|\_\\__,_|\__, |  |_|    |_| 
                            __/ |             
                           |___/
OKAYPI
fi

printf '\033[0m\n'

if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
	# Fall back to using the very slow lsb_release utility
	DISTRIB_DESCRIPTION=$(lsb_release -s -d)
fi
printf "\n"
printf "Welcome to %s (%s %s %s)\n" "$DISTRIB_DESCRIPTION" "$(uname -o)" "$(uname -r)" "$(uname -m)"

image

改成3D

#!/bin/sh
#

[ -r /etc/lsb-release ] && . /etc/lsb-release

printf "\n"
printf '\033[1;34m\n'
cat <<'EOF'
             OO                 OO      
            OOOO               OOOO     
           OOOOOO             OOOOOO    
          OOOOOOOO           OOOOOOOO   
         OOOOOOOOOO         OOOOOOOOOO  
        OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 
        OOOO=======================OOOO 
        OOO[  ████████   ████████  ]OOO 
        OOO[  ████████   ████████  ]OOO 
        OOOO=======================OOOO 
        OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 
        OOOOOO\   OOOOOOOOOOO   /OOOOOO 
        OOOOOOOOOOOOO\   /OOOOOOOOOOOOO 
        OOOOOOOOOOOOOO\_/OOOOOOOOOOOOOO  /OOO
        OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO_/OOO 
EOF

# Reset from the blue header before gradient text
printf '\033[0m\n'

# OKayPi banner gradient using your 5 colors (cyan → green → yellow → orange → magenta).
# IMPORTANT: your banner contains Unicode box/block characters; awk (mawk) may split UTF-8 bytes and break colors.
# So we prefer python3 for correct Unicode handling and aligned gradients.
mode=16
case "${COLORTERM-}" in *truecolor*|*24bit*) mode=rgb ;; esac
case "${TERM-}" in *256color*) [ "$mode" = "16" ] && mode=256 ;; esac

if command -v python3 >/dev/null 2>&1; then
	python3 - "$mode" <<'PY'
import sys

mode = sys.argv[1] if len(sys.argv) > 1 else "16"

banner = """\
     ██████╗  ██╗  ██╗                    ██████╗  ██╗
    ██╔═══██╗ ██║ ██╔╝  ██████╗ ██╗   ██╗ ██╔══██╗ ╚═╝
    ██║   ██║ █████╔╝   ╚═══██║ ╚██╗  ██║ ██████╔╝ ██╗
    ██║   ██║ ██╔═██╗  ███████║  ╚██╗ ██║ ██╔═══╝  ██║
    ╚██████╔╝ ██║  ██╗ ╚██████║   ╚████╔╝ ██║      ██║
     ╚═════╝  ╚═╝  ╚═╝  ╚═════╝    ╚══██║ ╚═╝      ╚═╝
                                 █████╔╝             
                                 ╚════╝
"""

lines = banner.splitlines()

anchors = [
    (0,   185, 255),  # cyan
    (35,  220,   0),  # green
    (235, 235,   0),  # yellow
    (255, 170,   0),  # orange
    (255,   0, 200),  # magenta
]

def lerp(a, b, t):
    return int(round(a + (b - a) * t))

def clamp(x, lo, hi):
    return lo if x < lo else hi if x > hi else x

def rgb_to_xterm256(r, g, b):
    r6 = clamp(int((r + 25) / 51), 0, 5)
    g6 = clamp(int((g + 25) / 51), 0, 5)
    b6 = clamp(int((b + 25) / 51), 0, 5)
    cube = 16 + 36 * r6 + 6 * g6 + b6

    gray = clamp(int((((r + g + b) / 3) - 8 + 5) / 10), 0, 23)
    gray_idx = 232 + gray

    def cube_rgb(v):
        return 0 if v == 0 else 55 + v * 40

    cr, cg, cb = cube_rgb(r6), cube_rgb(g6), cube_rgb(b6)
    gv = 8 + gray * 10
    d_cube = (r - cr) ** 2 + (g - cg) ** 2 + (b - cb) ** 2
    d_gray = (r - gv) ** 2 + (g - gv) ** 2 + (b - gv) ** 2
    return gray_idx if d_gray < d_cube else cube

maxL = max((len(s) for s in lines), default=1)
if maxL < 2:
    print(banner)
    raise SystemExit(0)

for s in lines:
    if not s:
        sys.stdout.write("\n")
        continue
    for i, ch in enumerate(s):
        x = i / (maxL - 1)
        p = x * (len(anchors) - 1)
        k = int(p)
        t = p - k
        if k >= len(anchors) - 1:
            k = len(anchors) - 2
            t = 1.0
        r = lerp(anchors[k][0], anchors[k + 1][0], t)
        g = lerp(anchors[k][1], anchors[k + 1][1], t)
        b = lerp(anchors[k][2], anchors[k + 1][2], t)

        if mode == "rgb":
            sys.stdout.write(f"\033[38;2;{r};{g};{b}m{ch}")
        elif mode == "256":
            sys.stdout.write(f"\033[38;5;{rgb_to_xterm256(r,g,b)}m{ch}")
        else:
            idx = clamp(int(round(x * (len(anchors) - 1))), 0, len(anchors) - 1)
            c16 = [36, 32, 33, 33, 35][idx]
            sys.stdout.write(f"\033[{c16}m{ch}")
    sys.stdout.write("\033[0m\n")
PY
elif command -v awk >/dev/null 2>&1; then
	# ASCII-safe fallback (may not render correctly with Unicode glyphs)
	cat <<'OKAYPI'
     ██████╗  ██╗  ██╗                    ██████╗  ██╗
    ██╔═══██╗ ██║ ██╔╝  ██████╗ ██╗   ██╗ ██╔══██╗ ╚═╝
    ██║   ██║ █████╔╝   ╚═══██║ ╚██╗  ██║ ██████╔╝ ██╗
    ██║   ██║ ██╔═██╗  ███████║  ╚██╗ ██║ ██╔═══╝  ██║
    ╚██████╔╝ ██║  ██╗ ╚██████║   ╚████╔╝ ██║      ██║
     ╚═════╝  ╚═╝  ╚═╝  ╚═════╝    ╚══██║ ╚═╝      ╚═╝
                                 █████╔╝             
                                 ╚════╝
OKAYPI
fi

printf '\033[0m\n'

if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
	# Fall back to using the very slow lsb_release utility
	DISTRIB_DESCRIPTION=$(lsb_release -s -d)
fi
printf "\n"
printf "Welcome to %s (%s %s %s)\n" "$DISTRIB_DESCRIPTION" "$(uname -o)" "$(uname -r)" "$(uname -m)"

image

评论

Cover
晴天 周杰伦
OKayFlow 正在共享键鼠中... 将鼠标向左大跨度甩回,或在主电脑上按 Scroll Lock 键强制退出
OKayFlow
工具箱

工具箱