osnosn

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

newifi_D2_新3_lede_插U盘扩容overlay_装可道云

转载注明来源: 本文链接 来自osnosn的博客,写于 2021-09-17.

参考

其他文章

设备情况

  • 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
  • 挂载在 /mnt/sda1
  • 修改 /etc/opkg.conf 中,改 option rootfs_overlay /overlayoption rootfs_overlay /mnt/sda1
    软件包界面,看到剩余空间变大。但实际安装软件包,还是装到仅有5MB的overlay中,很快就满了。导致任何配置的修改,都无法保存。只能恢复出厂设置。

扩容 overlay, 其实是用U盘空间替换原来的 overlay (成功)

  • 不修改 /etc/opkg.conf。 U盘格式化为 ext4, 作为新的 overlay 分区。
  • fdisk 创建磁盘 sda1。通常 U盘可以正常使用,就无需重新分区。除非你想再分出一个 swap 区。
    • 如果没有 fdisk 指令,安装 opkg install fdisk
  • mkfs.ext4 /dev/sda1 格式化 sda1 分区,为 ext4 文件系统格式
    • 如果没有 mkfs.ext4 指令,安装 opkg install e2fsprogs
    • 或者不格式化。挂载后只删除U盘中 upper 和 work 两个目录。
  • mount /dev/sda1 /mnt/sda1 将sda1分区挂载到目录
  • cp -r /overlay/* /mnt/sda1 将overlay内容拷贝到sda1
    • 因为要替换原来的 overlay,所以要把内容全部 copy 过来。
  • 在openwrt的web管理界面, 挂载sda1分区, 用途为"overlay使用", 并启用。
    • openwrt WEB管理界面 --> 系统 --> 挂载点,
      编辑挂载点,勾上"启用此挂载点",挂载点选"作为外部overlay使用",点击“保存&应用"。
      提交后,web界面上看,似乎没挂上。 不理他,直接重启整个路由。
  • 重启openwrt后查看,软件空间已扩容。
    • 发现原来的 overlay 挂载在 /mnt/mtdblock6。U盘挂载为 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 身份执行。
  • 创建以下几个配置文件。
# 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安装后,无法使用,不能上传文件。)
  • 权限设置,让 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 包,安装到外部存储上。
  • 过程
    mkdir /mnt/sda1/pkgs/
    echo dest usb /mnt/sda1/pkgs/ >> /etc/opkg.conf  #或者手工在opkg.conf的最后一行后加入dest usb /mnt/sda1/pkgs/
    
    记住安装软件时不要漏了--dest usb,这样才会安装到U盘或硬盘上。如:
    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/ .


posted on 2021-09-17 10:27  osnosn  阅读(3437)  评论(0编辑  收藏  举报