newifi_D2_新3_lede_插U盘扩容overlay_装可道云
转载注明来源: 本文链接 来自osnosn的博客,写于 2021-09-17.
参考
- 官方文档【Extroot configuration】,感觉较复杂,阅读吃力。
- 【软路由LEDE折腾overlay分区扩容之路】
- 参考价值高:【Openwrt的Overlay 文件系统是什么?如何扩容增加可用空间】
其他文章
- 虚拟机映像扩容,见【openwrt_21.02_img_空间扩容_改分区表大小】
设备情况
- newifi D2 (新3路由器 mt7621),有不死 breed,刷了 LEDE。overlay 剩余空间 5MB。
- 买了个 32GB 的 U 盘,插上去,openwrt 识别为 sda, sda1 。sda1 是 vfat 格式(win格式化的)。
- 如果是官方版openwrt,不识别U盘,需要
opkg install block-mount kmod-fs-ext4 kmod-usb-storage-uas
选装kmod-sdhci(SD卡支持) kmod-fs-exfat kmod-fs-vfat
选装e2fsprogs blkid fdisk
磁盘工具。
如果还不行,再试试(2.0驱动)kmod-usb2 kmod-usb-ehci kmod-usb-ohci kmod-usb-uhci kmod-scsi-generic
- 如果是官方版openwrt,不识别U盘,需要
- 挂载在 /mnt/sda1
- 修改 /etc/opkg.conf 中,改
option rootfs_overlay /overlay
为option rootfs_overlay /mnt/sda1
软件包界面,看到剩余空间变大。但实际安装软件包,还是装到仅有5MB的overlay中,很快就满了。导致任何配置的修改,都无法保存。只能恢复出厂设置。
扩容 overlay, 其实是用U盘空间替换原来的 overlay (成功)
- 不修改
/etc/opkg.conf
。 U盘格式化为 ext4, 作为新的 overlay 分区。 - fdisk 创建磁盘 sda1。通常 U盘可以正常使用,就无需重新分区。除非你想再分出一个 swap 区。
- 如果没有 fdisk 指令,安装
opkg install fdisk
- 如果没有 fdisk 指令,安装
mkfs.ext4 /dev/sda1
格式化 sda1 分区,为 ext4 文件系统格式- 如果没有 mkfs.ext4 指令,安装
opkg install e2fsprogs
- 或者不格式化。挂载后只删除U盘中 upper 和 work 两个目录。
- 如果没有 mkfs.ext4 指令,安装
mount /dev/sda1 /mnt/sda1
将sda1分区挂载到目录cp -r /overlay/* /mnt/sda1
将overlay内容拷贝到sda1- 因为要替换原来的 overlay,所以要把内容全部 copy 过来。
- 在openwrt的web管理界面, 挂载sda1分区, 用途为"overlay使用", 并启用。
- openwrt WEB管理界面 --> 系统 --> 挂载点,
编辑挂载点,勾上"启用此挂载点",挂载点选"作为外部overlay使用",点击“保存&应用"。
提交后,web界面上看,似乎没挂上。 不理他,直接重启整个路由。
- openwrt WEB管理界面 --> 系统 --> 挂载点,
- 重启openwrt后查看,软件空间已扩容。
- 发现原来的 overlay 挂载在
/mnt/mtdblock6
。U盘挂载为 overlay。软件包页面显示,空间变大了。
- 发现原来的 overlay 挂载在
装可道云
- (nginx,php7配置ok。安装kodbox成功,但不能上传文件。安装kodExplorer失败。)
- tencent源似乎不稳定,
- 原为
src/gz openwrt_core https://mirrors.cloud.tencent.com/lede/snapshots/targets/ramips/mt7621/packages
改为src/gz openwrt_core https://mirrors.ustc.edu.cn/lede/snapshots/targets/ramips/mt7621/packages
- 换源,批量修改:
sed -i 's/mirrors.cloud.tencent.com/mirrors.ustc.edu.cn/g' /etc/opkg/distfeeds.conf
- 原为
opkg install nginx
可道云要 nginx 支持。安装失败,则用opkg --force-overwrie install nginx
不装这行,不替换uhttpd了。"opkg install nginx-mod-luci" openwrt的web配置界面,用nginx替换uhttpd。避免端口冲突。
修改/etc/config/nginx
中的 80口,改为88。(与uhttpd不冲突即可)
执行/etc/init.d/nginx restart
,或者在web界面的"启动项"中,重启 nginx。- nginx 修改端口在
/etc/config/nginx
。缺省为 80 443。
修改root路径在/etc/nginx/uci.conf.template
。缺省为root=/www;
- uhttpd 修改端口在
/etc/config/uhttpd
。缺省为 80。 - php7-fpm 修改 doc_root 在
/etc/php.ini
。缺省为doc_root="/www"
。或者注释掉这行。 opkg install php7-fpm
可道云要 php7.3 以上的支持。
opkg install php7-mod-pdo php7-mod-pdo-sqlite php7-mod-sqlite3
打算不使用mysql,使用sqlite3。
opkg install php7-mod-gd php7-mod-iconv php7-mod-json php7-mod-mbstring php7-mod-curl php7-mod-xml
opkg install php7-mod-session
没这个,数据库管理后台进不去。- php7-fpm 缺省在
/var/run/php7-fpm.sock
上监听。
php7-fpm 缺省以 nobody 身份执行。
- php7-fpm 缺省在
- 创建以下几个配置文件。
# file: /etc/nginx/php7-fpm.conf
location ~ \.php(?:$|\/) {
fastcgi_pass unix:/var/run/php7-fpm.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
try_files $fastcgi_script_name =404;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info if_not_empty;
include fastcgi_params;
}
.
# file: /etc/nginx/conf.d/kod.locations
location /kod{
allow all;
index index.php index.htm index.html;
include php7-fpm.conf;
}
- 搞不明白 location 中, 有 php-fpm 时, root 或 alias 的配置项的效果。所以还是使用 symbolic links 算了。
mkdir /overlay/kod
ln -s /overlay/kod /www/kod
- 去可道云官网下载源码,copy到openwrt的
/overlay/kod/
目录中,解压。- openwrt 中有 unzip 命令可以解压 .zip,如果没有
opkg install unzip
- 不要 kodbox,要下载个人使用的 kodExplorer。(kodbox安装后,无法使用,不能上传文件。)
- openwrt 中有 unzip 命令可以解压 .zip,如果没有
- 权限设置,让 php-fpm 可以访问,
chown -R nobody /overlay/kod
- 用浏览器,访问
http://路由器的IP/kod/
开始安装可道云。根据提示一步一步安装。
(实际访问时,返回空白页面,无法进入安装,不知道少了什么组件)- 数据选择 sqlite3 或者 pdo + sqlite3 (新3就不跑 MariaDB-10 这么重的应用了)
Newifi_mini 插 USB2.0 盘(FAT32)
- mt7620 , openwrt-19.07
- 安装,kmod-usb-storage block-mount kmod-fs-vfat
kmod-usb2 kmod-usb-core kmod-usb-ehci kmod-usb-ohci已经有了。
总共占用300-400kb 的 flash空间。 kmod-usb3不需要。
kmod-usb-uhci不需要,无用。- 装 kmod-fs-vfat, 其他的按需,比如 kmod-fs-ext4 kmod-fs-exfat kmod-fs-ntfs,
- 装 block-mount 后,重启 op。web配置页面,设置挂载 U 盘。
- 挂载点->添加。在,高级设置->挂载选项。
- 对于vfat,填入"utf8"。也许就能看到u盘的中文文件名。
- 对于ext4,可以加入"noatime"。
- 挂载点->添加。在,高级设置->挂载选项。
opkg安装软件到u盘
- 不改动opkg默认设置,只是把某几个比较大的软件包,指定安装到U盘上。
- 【官方文档 Non-standard installation destinations】
- 【Openwrt 安装软件到U盘或硬盘】,【opkg 安装到 U 盘】
- 只能安装一般软件,不能把 kmod 包,安装到外部存储上。
- 过程
记住安装软件时不要漏了--dest usb,这样才会安装到U盘或硬盘上。如:mkdir /mnt/sda1/pkgs/ echo dest usb /mnt/sda1/pkgs/ >> /etc/opkg.conf #或者手工在opkg.conf的最后一行后加入dest usb /mnt/sda1/pkgs/
opkg --dest usb install python ln -s /mnt/sda1/pkgs/usr/bin/python /usr/bin/python
- 如果安装时出现错误
extract_archive: Cannot create symlink from ???? to ????: Operation not permitted.
是因为U盘的文件系统不支持软链接。 比如 fat, vfat 就不支持软连接。
问题不大,不能 link,就 copy 一份。
所以,U盘最好使用 ext4 文件系统。 - 如果装了某个包,使用了动态库。执行时出现类似
Error relocating ./xxx: ????: symbol not found
的错误。- 或者,把
/mnt/sda1/pkgs/usr/lib/
中对应的库文件, 软连接到/usr/lib/
中。 - 或者,指定环境变量
export LD_LIBRARY_PATH=/mnt/sda1/pkgs/usr/lib
,
可以写在/etc/profile
中,加一行export LD_LIBRARY_PATH=
。
- 或者,把
- 执行新装的程序,不想打这么长的路径,可以把
/mnt/sda1/pkgs/usr/bin
加入到PATH环境变量中。
可以修改/etc/profile
中配置export PATH=
的行。 - opkg安装的软件包,如果包含
/etc/config/
配置,和/etc/init.d/
启动脚本。
因为装到u盘了,所以不会出现在luci的webUI界面中。
也许需要copy到正确的位置,并修改内容。
我没使用它们,也没copy过来。而是直接写命令在/etc/rc.local
中启动。 - 改 U盘文件系统格式,为 ext4。
临时安装opkg install e2fsprogs badblocks
(约占rom 1.2MB空间)。
先备份 U盘内容,然后卸载 U盘文件系统,umount /mnt/sda1
格式化为 ext4,mkfs.ext4 /dev/sda1
如果需要,用 badblocks搜索一下坏块,用 e2fsck 标记坏块。(这步非常耗时,128MB的空间,折腾了1个多小时)。
挂载文件系统,挂载参数加上noatime
,减小 U盘写入量。
从备份中恢复 U盘内容。
移除磁盘工具,opkg remove e2fsprogs badblocks --autoremove
- 不行的话,手工一项项删吧。
需要删的包libuuid1 libblkid1 libcomerr0 libss2 libext2fs2 e2fsprogs badblocks
- 不行的话,手工一项项删吧。
Newifi_D2 插 USB2.0/3.0 盘
- mt7621 , openwrt-22.03
- 安装,kmod-usb-storage-uas kmod-usb-storage block-mount kmod-fs-vfat
kmod-usb3 kmod-usb-core kmod-usb-xhci-hcd kmod-usb-xhci-mtk已经有了。
通常 USB3 的设备支持uas,速度更快。 kmod-usb2不需要。- 装 kmod-fs-vfat, 其他的按需,比如 kmod-fs-ext4 kmod-fs-exfat kmod-fs-ntfs,
- 装 block-mount 后,重启 op。web配置页面,设置挂载 U 盘。
- 挂载点->添加。在,高级设置->挂载选项。
- 对于vfat,填入"utf8"。也许就能看到u盘的中文文件名。
- 对于ext4,可以加入"noatime"。
- 挂载点->添加。在,高级设置->挂载选项。
转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/15303262.html
来自 osnosn的博客 https://www.cnblogs.com/osnosn/ .