参考

参考

我有一台旧的 D-Link DNS-323,现在不再有更新。

我找到了一种通过 Telnet 连接它的方法,这样我就可以尝试手动更新它。然后我会编译最新的 Samba 版本,但它需要(至少)Python3。所以我还必须编译它。我找到了一个可以在这个有限的 Linux 版本上运行的 gcc 版本。

为了将文件传输到NAS,我在Windows 11下临时激活了SMB1.0。

以下是我目前采取的步骤:

Parser/pegen.c:63: error: 'for' loop initial declaration used outside C99 mode
Parser/pegen.c: In function 'growable_comment_array_deallocate':
Parser/pegen.c:125: error: 'for' loop initial declaration used outside C99 mode
Parser/pegen.c: In function '_get_keyword_or_name_type':
Parser/pegen.c:140: error: 'for' loop initial declaration used outside C99 mode
Parser/pegen.c: In function '_resize_tokens_array':
Parser/pegen.c:196: error: 'for' loop initial declaration used outside C99 mode
Parser/pegen.c: In function '_PyPegen_is_memoized':
Parser/pegen.c:307: error: 'for' loop initial declaration used outside C99 mode
Parser/pegen.c: In function '_PyPegen_get_last_nonnwhitespace_token':
Parser/pegen.c:444: error: 'for' loop initial declaration used outside C99 mode
Parser/pegen.c: In function '_PyPegen_soft_keyword_token':
Parser/pegen.c:550: error: 'for' loop initial declaration used outside C99 mode
Parser/pegen.c: In function '_PyPegen_Parser_Free':
Parser/pegen.c:807: error: 'for' loop initial declaration used outside C99 mode
Parser/pegen.c: In function 'reset_parser_state_for_error_pass':
Parser/pegen.c:818: error: 'for' loop initial declaration used outside C99 mode

有人可以帮我使用 SMB 版本 >= 2.0 吗,这样我就可以停用 Windows 中的该功能(从而更安全)。

答案1

我遇到过很多问题,这里就不一一列举了。我选择的解决方案是改用 Debian。

您可以在此处查看完整的说明故事。

以下是说明的复制粘贴:


警告在继续之前请阅读这些说明

⚠ 确保备份,因为此过程将清除您的所有数据。⚠
如果您不知何故被困在某个地方,您可能会找到解决方案,您可能会得到帮助,但请始终记住,您可能需要使用串行方法恢复到原始固件。⚠
D-Link DNS-323 不再受 Debian 支持。


Debian

更换原厂固件

查找新 IP 地址并连接

  • 获取你的计算机IP地址:
    • 通过命令行:
      • 打开cmd
      • ipconfig
      • 查找当前正在使用的网络适配器(IP 地址应以 开头)192.168.
    • 通过 GUI:
      • 打开Windows参数/控制面板。
      • 到达网络设置。
      • 查看当前使用的适配器的详细信息。
  • 打开NMap(您可以使用您选择的可以达到相同目标的软件)。
  • 在目标框中,您可以输入192.168.1.0/24(您计算机的IP地址,除了最后一个数字替换为0)。
  • 在命令框中,添加-p 22nmap
  • 点击扫描按钮。
Scanning 26 hosts [1 port/host]
Discovered open port 22/tcp on 192.168.1.HIDDEN
Discovered open port 22/tcp on 192.168.1.HIDDEN
Discovered open port 22/tcp on 192.168.1.123
Discovered open port 22/tcp on 192.168.1.HIDDEN

所有HIDDEN关键字实际上都是数字,但为了保护隐私,我将它们进行了模糊处理。我将它们留在这里,以便您可以看到您可以有多个设备打开了端口 22。因此,从那里,您可以丢弃所有已知的 IP 地址。如果剩下多个,您可以尝试通过 SSH 连接,如果连接成功,则说明您找到了它。这里的 IP 地址192.168.1.123是我的设备(这不是真正的设备)。

  • 打开油灰或者 WSL(适用于 Linux 的 Windows 子系统),我现在更喜欢用 Putty 来处理 SSH。
  • ssh [email protected]
Username: installer
Password: install

安装操作系统

  • 使用第一个 SSH 连接直接进入 shell。我将其命名为 SSH-behind-the-scene(缩写为 SSH-b SSH-b)。

  • date -s '2020-01-01 11:00:00'

  • tail -f /var/log/syslog

  • 打开另一个 SSH 连接。我将其命名为 SSH-installation (简称 SSH-i SSH-i)。

好的!现在,为了辨别我正在做的事情,当我改变上下文时,我会在步骤前面加上它的简称。

  • SSH-i选择专业级

  • 选择服务器步骤,选择手动输入

    • 类型archive.debian.org
    • 接受默认选择。
  • 模块步骤,选择:fdisk, lvm-cfg, md+lvm, partman ext3, partman raid

  • SSH-b如果这是您的第一次启动,则使用fdisk,删除所有分区并确保两个磁盘上都是 GPT。

  • SSH-i语言步骤,选择您所在的地区,但不是添加键盘布局/语言环境。

  • 按照步骤进行分割并输入。

  • 如果这是您第一次启动:

    • 选择手动的
    • 跟着配置 RAID菜单。我建议使用 RAID-1,因为它对您的数据更安全,但您可以自由选择,它不应该改变以下步骤。
    • 重新启动 NAS 并重新开始此部分。
  • SSH-b cat /proc/mdstat

如果你得到:

The RAID is currently syncing. (This is a paraphrase)

使用while true; do printf "\033\143"; cat /proc/mdstat; echo "CTRL-C to quit"; sleep 10; done直到获得以下结果然后重新启动。

如果你立即得到以下结果,那么继续:

The RAID is active. (This is a paraphrase)
  • SSH-i分割步骤,选择引导式左心室扩张术

    • 给出您想要的名字。
    • 选择两个磁盘。
  • 继续安装基础系统

    • 停止关于内核选择。
  • SSH-b nano /target/usr/sbin/mkinitramfs

    • 搜索MODULES=most
    • 注释掉所有“case”行除了 auto_add_modules
  • SSH-i安装基础系统

    • 选择linux-image-orion5x
  • 继续配置包管理器

    • 我选择了No前两个选择,安全更新仅有的。
  • 继续使系统可启动等待

  • SSH-b . /lib/chroot-setup.sh

  • 改为MODULES=loaded和。/target/etc/initramfs-tools/conf.d/driver-policy/target/etc/initramfs-tools/initramfs.conf

  • chroot /target lsmod | cut -f 1 -d\ > /target/etc/initramfs-tools/modules

  • 确保/target/etc/initramfs-tools/modules第一行不是“模块”,如果是,请删除它。

  • nano /target/usr/sbin/mkinitramfs

    • 搜索MODULES=most
    • 注释掉所有“case”行包括 auto_add_modules
  • chroot_cleanup

我相信上述修改可以取代之前所做的修改,当时安装基础系统步骤。如果您想尝试/测试它。

  • SSH-i继续执行其它安装步骤。

  • SSH-b shutdown -r now。 (如果需要的话)

重启后...

打造完整的 NAS

注意:我不能100%确保没有无用sudo

我决定创建一个主文件夹,存放我的所有共享内容,首先我有:

  • mkdir -p /share/data
  • chmod 777 /share/data
  • mkdir -p /share/scripts
  • chmod 777 /share/scripts

在这里我将这些文件的权限设置为完全,但你可以降低它或者做任何你想做的事情。

须藤

  • su
  • apt install sudo
  • usermod -aG sudo USERNAME. 其中 USERNAME 是您在 Debian 安装部分使用的用户名。
  • 重新启动 SSH 会话。

后缀

  • sudo apt install postfix
    • 选择具有智能主机的互联网。

扇子

  • sudo apt-get install lm-sensors
  • sudo sensors-detect
    • YES致所有人
  • sudo /etc/init.d/kmod start
  • sudo apt-get install fancontrol
  • sudo pwmconfig
  • sudo /etc/init.d/fancontrol start

monitor-fans.sh执行模式:

  • 无参数:告诉您风扇是否运转。
  • --install:每5分钟安装一次监控。
  • --uninstall:卸载监控。
  • wget -O /share/scripts/monitor-fans.sh https://raw.githubusercontent.com/djon2003/DNS-323/2.3-Add-ons/files/monitor-fans.sh
  • sudo /share/scripts/monitor-fans.sh --install

网络时间协议 (NTP)

  • sudo apt install ntp

新的语言环境(针对 UTF-8)

  • sudo dpkg-reconfigure locales

RAID 监控

  • sudo nano /etc/mdadm/mdadm.conf
  • 测试电子邮件:
    • 杀死任何管理过程。
    • sudo mdadm --monitor --scan --test
  • 测试失败:
    • 确保以下命令正在运行或运行它:mdadm --monitor --scan &
    • mdadm --manage --set-faulty /dev/md0 /dev/sdb1
    • 等待接收电子邮件。
    • mdadm /dev/md0 -r /dev/sdb1
    • mdadm /dev/md0 -a /dev/sdb1

桑巴

  • sudo apt-get install samba
  • sudo bash -c 'echo "include = /etc/samba/smb.share.conf2" >> /etc/samba/smb.conf'
  • sudo wget -O /etc/samba/smb.share.conf https://raw.githubusercontent.com/djon2003/DNS-323/2.3-Add-ons/files/smb.share.conf
  • sudo systemctl restart smbd

USB端口

  • 安装 exFAT 支持:sudo apt install exfat-fuse exfat-utils
  • 安装 NTFS 支持:sudo apt install ntfs-3g
  • 打印机:我将把这个练习留给读者。就这个而言,我已经能够做到,但这对我的模型来说是正确的。也许将来会做到。

自动挂载/自动共享 USB 磁盘

编译并安装 USBMount

  • sudo apt-get install debhelper build-essential
  • mkdir /share/temp-install
  • cd /share/temp-install
  • wget https://github.com/rbrito/usbmount/archive/refs/heads/master.zip
  • unzip master.zip
  • cd usbmount-master
  • sudo dpkg-buildpackage -us -uc -b
  • dpkg -i ../usbmount_0.0.24_all.deb
  • cd /
  • rm -rf /share/temp-install

配置和脚本确保共享有效

  • sudo nano /etc/usbmount/usbmount.conf
    • 添加文件系统 exfat ntfs fuseblk ntfs-3g
    • 代替安装选项值由 开始uid=1000,gid=1000,nodev
  • sudo wget -O /etc/usbmount/mount.d/01_create_samba_share https://github.com/djon2003/DNS-323/raw/2.3-Add-ons/files/01_create_samba_share
  • sudo wget -O /etc/usbmount/umount.d/01_remove_samba_share https://github.com/djon2003/DNS-323/raw/2.3-Add-ons/files/01_remove_samba_share
  • sudo mkdir /etc/samba/smb.d/
  • wget -O /share/scripts/clear-phantom-shares.sh https://github.com/djon2003/DNS-323/raw/2.3-Add-ons/files/clear-phantom-shares.sh
  • sudo /share/scripts/clear-phantom-shares.sh --install

有趣的套餐

  • sudo apt-get install usbutils:USB 端口的工具。
  • sudo apt install lshw
    • lshw -C network:显示网络适配器。
  • sudo apt-get install eject
    • eject /dev/sdc:断开/卸载 USB 驱动器
  • sudo apt-get install udisks2:USB 实用程序。即关闭电源。就我而言,使用udisksctl power-off -b /dev/sdc会使我的 USB HDD 完全关闭。USB 重新连接不起作用。我不得不拔下电源线并重新插入所有电源线才能再次检测到磁盘。但可能很有用。

参考

Debian

恢复

袭击

桑巴

附加组件

其他的

致谢

相关内容