首页
关于
Search
1
HD9901-RK3399海纳思刷机包
10 阅读
2
hinas版portainer---docker面板,限arm机器
5 阅读
3
DIY HD9901(RK3399) Hinas镜像优化记录-boot优化,长文件名会被自动截断为8.3短文件名
5 阅读
4
DIY HD9901(RK3399) Hinas刷机后,优化--250902
5 阅读
5
linux交换区调整
5 阅读
默认分类
Linux
Windows
幼小学作业
登录
Search
lishx
累计撰写
19
篇文章
累计收到
2
条评论
首页
栏目
默认分类
Linux
Windows
幼小学作业
页面
关于
搜索到
11
篇与
的结果
2025-08-29
空间不足时,解包修改后重新打包镜像
您提到在编译和修改 rootfs 分区时可能会遇到空间不足的问题。直接挂载镜像文件进行操作时,分区的大小是固定的,无法动态扩展。为了解决这个问题,您可以按照以下步骤在更大的空间中进行编译和修改,然后再将修改后的内容打包回镜像文件:1. 挂载镜像文件运行以下命令挂载镜像文件:# 创建挂载点目录 sudo mkdir -p /mnt/hd9901 # 使用 losetup 挂载镜像文件 sudo losetup -fP hd9901.img # 查找 loop 设备名(如 /dev/loop0) sudo losetup -a # 挂载分区(以 rootfs 分区为例) sudo mount /dev/loop0p5 /mnt/hd99012. 将 rootfs 分区的内容复制到临时目录运行以下命令将 rootfs 分区的内容复制到宿主机的临时目录中:# 创建临时目录 sudo mkdir -p /tmp/rootfs_temp # 使用 rsync 复制内容 sudo rsync -a /mnt/hd9901/ /tmp/rootfs_temp/3. 使用 chroot 环境进行编译和修改在临时目录中设置 chroot 环境,以便在类似目标系统的环境中进行编译和修改:# 示例:在 chroot 环境中安装软件包 sudo chroot /tmp/rootfs_temp mount -t proc proc /proc mount -t sysfs sys /sys mount -t devtmpfs dev /dev mount -t devpts pts /dev/pts # 在 chroot 环境中执行命令(如安装编译工具) apt update apt install -y build-essential # 退出 chroot 环境 exit4. 卸载镜像文件完成修改后,运行以下命令卸载镜像:sudo umount /mnt/hd9901 sudo losetup -d /dev/loop05. 重新打包镜像文件使用 mksquashfs 或 tar 命令将修改后的内容重新打包成镜像文件:# 确保镜像文件大小与原文件一致 dd if=/dev/zero of=hd9901_new.img bs=1M count=1944 # 使用 losetup 重新挂载新镜像文件 sudo losetup -fP hd9901_new.img # 查找新的 loop 设备名(如 /dev/loop1) sudo losetup -a # 将原镜像的分区表复制到新镜像 sudo gdisk /dev/loop0在 gdisk 交互界面中,输入 r 进入恢复菜单,然后选择 d 恢复分区表,最后选择 w 写入并退出。6. 验证镜像文件使用 gdisk 或 fdisk 验证新镜像的分区表和内容:sudo gdisk -l hd9901_new.img注意事项数据备份:在重新打包前,确保已备份重要数据。镜像大小:确保新镜像文件大小与原文件一致,以避免数据丢失。分区表:在重新打包时,确保正确复制原镜像的分区表。如果问题仍未解决,请提供以下信息以便进一步诊断:lsblk fdisk -l hd9901.img根据您的描述,您已经完成了对 /dev/loop0p5(即 rootfs 分区)的修改,并希望将修改后的内容重新打包回镜像文件。以下是详细的后续操作步骤:1. 挂载新镜像文件1.1 创建与原镜像文件大小相同的新镜像文件# 确保新镜像文件大小与原文件一致(例如 1944MB) dd if=/dev/zero of=hd9901_new.img bs=1M count=19441.2 使用 losetup 挂载新镜像文件sudo losetup -fP hd9901_new.img1.3 查找新的 loop 设备名sudo losetup -a假设新镜像文件的 loop 设备名为 /dev/loop1。2. 复制分区表2.1 使用 gdisk 复制原镜像的分区表sudo gdisk /dev/loop0在 gdisk 交互界面中:输入 r 进入恢复菜单。选择 d 恢复分区表。选择 w 写入并退出。2.2 将分区表写入新镜像文件sudo gdisk /dev/loop1在 gdisk 交互界面中:输入 r 进入恢复菜单。选择 d 恢复分区表。选择 w 写入并退出。3. 挂载新镜像的 rootfs 分区3.1 查找新镜像的 rootfs 分区设备名sudo losetup -a假设新镜像的 rootfs 分区设备名为 /dev/loop1p5。3.2 挂载新镜像的 rootfs 分区sudo mkdir -p /mnt/hd9901_new sudo mount /dev/loop1p5 /mnt/hd9901_new4. 将修改后的内容复制回新镜像的 rootfs 分区4.1 使用 rsync 同步内容sudo rsync -a /tmp/rootfs_temp/ /mnt/hd9901_new/5. 卸载镜像文件5.1 卸载新镜像的 rootfs 分区sudo umount /mnt/hd9901_new5.2 解除 loop 设备与新镜像文件的关联sudo losetup -d /dev/loop16. 验证新镜像文件6.1 检查分区表sudo gdisk -l hd9901_new.img6.2 检查 rootfs 分区内容# 重新挂载新镜像文件 sudo losetup -fP hd9901_new.img sudo mount /dev/loop1p5 /mnt/hd9901_new # 列出分区内容 ls /mnt/hd9901_new # 卸载新镜像文件 sudo umount /mnt/hd9901_new sudo losetup -d /dev/loop1注意事项数据备份:在重新打包前,确保已备份重要数据。镜像大小:确保新镜像文件大小与原文件一致,以避免数据丢失。分区表:在重新打包时,确保正确复制原镜像的分区表。如果问题仍未解决,请提供以下信息以便进一步诊断:lsblk fdisk -l hd9901_new.img
2025年08月29日
3 阅读
0 评论
0 点赞
2025-08-29
以读写模式按分区挂载镜像进行更改
示例镜像如下:root@x230:/mnt# sudo losetup --find --show hd9901_debian.img /dev/loop21 root@x230:/mnt# sudo kpartx -av /dev/loop21 add map loop21p1 (252:0): 0 8000 linear 7:21 64 add map loop21p2 (252:1): 0 8192 linear 7:21 16384 add map loop21p3 (252:2): 0 8192 linear 7:21 24576 add map loop21p4 (252:3): 0 229376 linear 7:21 32768 add map loop21p5 (252:4): 0 3669983 linear 7:21 262144要将镜像文件及其分区挂载为可读写模式,请按以下步骤操作:创建挂载点目录sudo mkdir -p /mnt/{loader1,loader2,trust,boot,rootfs}设置循环设备并映射分区# 附加镜像到循环设备 sudo losetup --find --show hd9901_debian.img # 输出示例:/dev/loop21 # 映射GPT分区到/dev/mapper sudo kpartx -av /dev/loop21 # 输出示例: # add map loop21p1 (254:0): 0 8000 linear /dev/loop21 64 # add map loop21p2 (254:1): 0 8192 linear /dev/loop21 16384 # ...(其他分区映射)挂载各分区# loader1分区(3.9 MiB) sudo mount -o rw /dev/mapper/loop21p1 /mnt/loader1 # loader2分区(4.0 MiB) sudo mount -o rw /dev/mapper/loop21p2 /mnt/loader2 # trust分区(4.0 MiB) sudo mount -o rw /dev/mapper/loop21p3 /mnt/trust # boot分区(112.0 MiB) sudo mount -o rw /dev/mapper/loop21p4 /mnt/boot # rootfs分区(1.7 GiB) sudo mount -o rw /dev/mapper/loop21p5 /mnt/rootfs验证挂载df -Th | grep /mnt # 应显示所有已挂载分区及其文件系统类型卸载步骤(操作完成后):# 卸载所有分区 sudo umount /mnt/{loader1,loader2,trust,boot,rootfs} # 移除分区映射 sudo kpartx -dv /dev/loop21 # 释放循环设备 sudo losetup -d /dev/loop21注意事项:确保使用sudo或root权限执行所有操作修改文件后建议执行sync命令同步数据如果镜像文件来自不可信来源,挂载前建议先进行文件系统检查:sudo fsck /dev/mapper/loop21p5 # 对rootfs分区进行检查要保持持久化修改,需确保镜像文件未被压缩或挂载为只读高级技巧:创建可写快照:qemu-img create -f qcow2 -b hd9901_debian.img debian_writable.qcow2之后可直接挂载debian_writable.qcow2进行写操作直接修改镜像内容(无需挂载):sudo modprobe nbd max_part=16 sudo qemu-nbd --connect=/dev/nbd0 hd9901_debian.img # 现在可以直接操作/dev/nbd0p1-p5分区
2025年08月29日
2 阅读
0 评论
0 点赞
2025-08-29
根据DTB和内核制作immortalwrt镜像
根据您提供的开发板已有DTB和内核的情况,以下是针对ImmortalWrt镜像制作的定制化步骤指南:一、环境准备(跳过已安装部分)# 1. 安装基础依赖(Debian/Ubuntu示例) sudo apt update && sudo apt install -y \ build-essential ccache git curl wget rsync \ libncurses5-dev gawk gettext unzip \ python3 python3-pip python3-ply \ device-tree-compiler # 确保包含dtc工具 # 2. 创建专用工作目录 mkdir -p ~/immortalwrt-build && cd ~/immortalwrt-build二、源码获取与配置# 1. 克隆指定分支源码(以openwrt-23.05为例) git clone -b openwrt-23.05 --single-branch https://github.com/immortalwrt/immortalwrt cd immortalwrt # 2. 更新软件包源 ./scripts/feeds update -a ./scripts/feeds install -a三、关键配置调整1. 复制现有DTB和内核将您的开发板文件放置到指定目录:# 假设您的文件结构如下: # ├── immortalwrt/ # │ └── target/ # │ └── linux/ # │ └── <target>/ # │ └── <subtarget>/ # │ └── config-<version> # 现有内核配置 # ├── dtb/ # 自定义DTB目录 # └── zImage # 现有内核镜像 # 示例操作(根据实际路径调整): cp /path/to/your/dtb/*.dtb target/linux/<target>/<subtarget>/ cp /path/to/your/zImage target/linux/<target>/<subtarget>/2. 配置编译参数make menuconfig目标系统配置:Target System → 选择对应SoC(如MediaTek、Qualcomm等) Subtarget → 选择子型号(如MT7621) Target Profile → 选择具体开发板型号(或自定义)内核配置:Kernel → [*] Use custom DTB files from target/linux/<target>/<subtarget>/ [*] Use custom kernel image (zImage)文件系统配置:Base system → <*> busybox <*> mtd保存配置:Exit → Save → 输入.config文件名(如custom_config)四、编译优化(可选)# 1. 启用并行编译(根据CPU核心数调整) make -j$(nproc) V=s # 2. 使用ccache加速(首次编译后生效) export USE_CCACHE=1五、镜像生成与验证# 编译完成后镜像位于bin/targets/<target>/<subtarget>/ ls bin/targets/ # 验证关键文件 file bin/targets/<target>/<subtarget>/openwrt-<target>-<subtarget>-squashfs-sysupgrade.bin # 应显示包含您的DTB和内核版本信息 # 使用qemu测试(需安装qemu-utils) qemu-system-aarch64 -M virt -bios bin/targets/<target>/<subtarget>/openwrt-<target>-<subtarget>-vmlinuz \ -dtb bin/targets/<target>/<subtarget>/openwrt-<target>-<subtarget>-dtb.img \ -drive file=bin/targets/<target>/<subtarget>/openwrt-<target>-<subtarget>-rootfs.img,format=raw六、常见问题处理DTB加载失败:检查target/linux/<target>/<subtarget>/路径是否正确确认make menuconfig中启用了自定义DTB选项内核不匹配:确保zImage与DTB的SoC版本完全一致尝试在Kernel菜单中禁用Automatically select kernel version空间不足:添加tmpfs临时编译目录:mkdir ~/immortalwrt-build/tmp mount -t tmpfs -o size=16G tmpfs ~/immortalwrt-build/tmp make O=$HOME/immortalwrt-build/tmp七、高级定制建议自定义软件包:# 在package/目录下创建自定义包 mkdir package/my-custom-package # 参考现有包结构添加Makefile和补丁系统精简:make menuconfig # 在Base system中禁用不需要的服务(如dropbear、uhttpd)固件签名:# 生成带签名的镜像(需openssl) openssl dgst -sha256 -binary bin/targets/<target>/<subtarget>/openwrt-*.bin > firmware.sha256通过以上步骤,您可以在保留现有DTB和内核的基础上,构建包含自定义组件的ImmortalWrt镜像。建议首次编译后保留.config文件以便复现环境。
2025年08月29日
2 阅读
0 评论
0 点赞
2025-08-29
Linux clash的安装以及配置使用
Clash 代理服务搭建与 YACD 面板管理指南本文旨在详细介绍如何在 Linux 系统上搭建 Clash 代理服务,并通过 YACD 面板进行便捷管理。Clash 是一款功能强大的代理工具,支持多种协议和规则,而 YACD 面板则提供了友好的图形界面,方便用户进行配置和管理。一、环境准备确保你的 Linux 系统已经安装了必要的软件包,如 wget、gzip、vi 等。同时,确保你有足够的权限来执行以下操作。二、搭建 Clash 服务创建 Clash 目录并下载解压mkdir /opt/clash cd /opt/clash wget https://github.com/opusb/clash/releases/download/v1.18.0/clash-linux-armv7-v1.18.0.gz gzip -d clash-linux-armv7-v1.18.0.gz mv clash-linux-armv7-v1.18.0 clash chmod +x clash启动 Clash 并处理潜在错误./clash如果出现缺少 Country.mmdb 错误,请自行复制链接下载,并上传到 /root/.config/clash 目录。然后再次启动 Clash。创建 Clash 系统服务vi /etc/systemd/system/clash.service编辑 /etc/systemd/system/clash.service 文件,并粘贴以下内容:[Unit] Description=Clash Daemon After=network.target [Service] Type=simple ExecStart=/opt/clash/clash -d /root/.config/clash Restart=on-failure RestartSec=10 WorkingDirectory=/root/.config/clash CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE [Install] WantedBy=multi-user.target然后执行以下命令以重新加载 systemd 配置、启用 Clash 服务并启动它:systemctl daemon-reload systemctl enable clash systemctl start clash systemctl status clash三、部署 YACD 面板运行以下命令以拉取并运行 YACD 面板容器:docker run -p 1234:80 -d --name yacd --restart=always ghcr.io/haishanh/yacd:master四、配置 Clash更新并合并配置文件首先,通过 wget 命令更新 config.yaml 文件:cd ~ wget -O config.yaml "https://utnyc.no-mad-world.club/link/xxxxxxxxxxxxxxxxxxx" # 请自行更改订阅链接然后,使用 sed 命令添加自定义的国内网站排除规则和删除默认的 Clash 配置,并将自定义的 Clash 配置与更新后的 config.yaml 合并:sed -i '/ - DOMAIN,app.adjust.com/ r /mnt/cn.txt' /root/config.yaml #不需要代理的国内域名,代理排除 sed -i "/port: 7890/,+5 d" /root/config.yaml #删除订阅默认的clash配置,一般是删除hosts之前行的内容,有6行所以设置+5 d cat /mnt/clash.txt /root/config.yaml > /root/.config/clash/config.yaml #将自定义的clash配置与hosts之后的内容合并,并覆盖保存到默认的配置目录其中,/mnt/cn.txt 和 /mnt/clash.txt 分别包含自定义的国内网站排除规则和 Clash 配置。下面提供上面两个文件的参考写法,确保 - DOMAIN,app.adjust.com在你的原始订阅里面是唯一的国内直连规则,每个订阅都不一样,根据实际情况编写。vi /mnt/cn.txt其中最后面要空一排 - DOMAIN-KEYWORD,51nb,🇨🇳 国内网站 - DOMAIN-KEYWORD,dns.army,🇨🇳 国内网站 - DOMAIN-KEYWORD,ibmnb,🇨🇳 国内网站 - DOMAIN-KEYWORD,adblock,🇨🇳 国内网站 - DOMAIN-KEYWORD,trim,🇨🇳 国内网站 - DOMAIN-KEYWORD,mozilla,🇨🇳 国内网站 - DOMAIN-KEYWORD,histb,🇨🇳 国内网站 - DOMAIN-KEYWORD,pan.v1.mk,🇨🇳 国内网站 - DOMAIN-KEYWORD,xiaohongshu,🇨🇳 国内网站 - DOMAIN-KEYWORD,1688,🇨🇳 国内网站 vi /mnt/clash.txt最后面也要空一排port: 7890 socks-port: 7891 allow-lan: true #允许局域网代理 mode: Rule external-controller: 192.168.1.28:9090 #192.168.1.28为本机ip,自行更改 ipv6: true #开启ipv6,方便看ipv6源的电视节目 重启 Clash 服务systemctl restart clash五、设置定时任务建议使用 crontab 设置定时任务来定期更新 config.yaml 文件并处理其他相关任务。编辑 crontab 文件:crontab -e然后添加类似以下的定时任务(请自行更改订阅链接和其他路径):11 */8 * * * wget -O config.yaml "订阅链接" 12 */8 * * * sed -i '/ - DOMAIN,app.adjust.com/ r /mnt/cn.txt' /root/config.yaml 13 */8 * * * sed -i "/port: 7890/,+5 d" /root/config.yaml 14 */8 * * * cat /mnt/clash.txt /root/config.yaml > /root/.config/clash/config.yaml 15 */8 * * * systemctl restart clash # ... 其他任务(如有需要)保存并退出 crontab 编辑器。六、在首页添加 Clash 链接上传 Clash 图标将 Clash 的图标命名为 clash.png,并上传到 /var/www/html/img/png 目录。创建 Clash HTML 文件在 /var/www/html/icons_wan 目录下新建 clash.html 文件,并添加以下内容(请自行更改 NAS IP 和反代端口):<li> <a href="http://<?php echo str_replace(":10010", "", $lanip); ?>:1234" target="_blank"><img class="shake" src="img/png/clash.png" /><strong>clash</strong></a> </li>七、完成设置现在,你已经成功搭建并配置了 Clash 代理服务和 YACD 面板。打开浏览器,访问你的 NAS IP 地址加上 YACD 面板的端口(如 http://NAS_IP:1234),即可进行 Clash 的配置和管理。记得将后端地址设置为你的 NAS IP 和 Clash 监听的端口(如 http://192.168.1.28:9090)。希望这篇指南能帮助你顺利搭建并使用 Clash 代理服务和 YACD 面板!
2025年08月29日
1 阅读
0 评论
0 点赞
2025-08-29
linux折腾记录
sed -i '/regex/ r b.txt' a.txt # regex是正则表达式表示在a.txt的匹配regex的行下面插入b.txt中的内容
2025年08月29日
2 阅读
0 评论
0 点赞
1
2
3