我有一台旧的 D-Link DNS-323,现在不再有更新。
我找到了一种通过 Telnet 连接它的方法,这样我就可以尝试手动更新它。然后我会编译最新的 Samba 版本,但它需要(至少)Python3。所以我还必须编译它。我找到了一个可以在这个有限的 Linux 版本上运行的 gcc 版本。
为了将文件传输到NAS,我在Windows 11下临时激活了SMB1.0。
以下是我目前采取的步骤:
- 开启SMB1.0:https://tompai.pro/computers/d-link-dns-323-requires-smb1-protocol-cant-connect-from-windows-10/
- 安装 fun_plug:https://nas-tweaks.net/371/hdd-installation-of-the-fun_plug-0-7-on-nas-devices/#Steps_for_installing_fun_plug
- 安装 GCC:
- 编译 Python
- 出现的第一个错误:“-std = c11”未被 gcc 识别 ==> 我从 Makefile 中删除了此选项
- 第二:
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
更换原厂固件
- 下载https://ftp.nl.debian.org/debian/dists/jessie/main/installer-armel/current/images/orion5x/network-console/d-link/dns-323/netboot.img在你的电脑。
- 使用 DNS-323 的 Web 界面,在固件更新部分,选择之前下载的文件。
- 继续“更新”您的固件。⚠ 在更新完成之前,请勿关闭/重启您的 DNS-323。
- 重新启动硬件。
查找新 IP 地址并连接
- 获取你的计算机IP地址:
- 通过命令行:
- 打开
cmd
。 ipconfig
- 查找当前正在使用的网络适配器(IP 地址应以 开头)
192.168.
。
- 打开
- 通过 GUI:
- 打开Windows参数/控制面板。
- 到达网络设置。
- 查看当前使用的适配器的详细信息。
- 通过命令行:
- 打开NMap(您可以使用您选择的可以达到相同目标的软件)。
- 在目标框中,您可以输入
192.168.1.0/24
(您计算机的IP地址,除了最后一个数字替换为0)。 - 在命令框中,添加
-p 22
后nmap
。 - 点击扫描按钮。
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 )。
date -s '2020-01-01 11:00:00'
tail -f /var/log/syslog
打开另一个 SSH 连接。我将其命名为 SSH-installation (简称 SSH-i )。
好的!现在,为了辨别我正在做的事情,当我改变上下文时,我会在步骤前面加上它的简称。
选择专业级。
在选择服务器步骤,选择手动输入。
- 类型
archive.debian.org
。 - 接受默认选择。
- 类型
在模块步骤,选择:
fdisk, lvm-cfg, md+lvm, partman ext3, partman raid
。如果这是您的第一次启动,则使用
fdisk
,删除所有分区并确保两个磁盘上都是 GPT。在语言步骤,选择您所在的地区,但不是添加键盘布局/语言环境。
按照步骤进行分割并输入。
如果这是您第一次启动:
- 选择手动的。
- 跟着配置 RAID菜单。我建议使用 RAID-1,因为它对您的数据更安全,但您可以自由选择,它不应该改变以下步骤。
- 重新启动 NAS 并重新开始此部分。
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)
在分割步骤,选择引导式左心室扩张术。
- 给出您想要的名字。
- 选择两个磁盘。
继续安装基础系统。
- 停止关于内核选择。
nano /target/usr/sbin/mkinitramfs
:- 搜索
MODULES=most
。 - 注释掉所有“case”行除了
auto_add_modules
。
- 搜索
在安装基础系统。
- 选择
linux-image-orion5x
。
- 选择
继续配置包管理器。
- 我选择了
No
前两个选择,安全更新仅有的。
- 我选择了
继续使系统可启动和等待。
. /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
我相信上述修改可以取代之前所做的修改,当时安装基础系统步骤。如果您想尝试/测试它。
继续执行其它安装步骤。
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
:- 添加。其中必须用您的电子邮件替换。
MAILADDR [email protected]
[email protected]
- 添加。其中必须用您的电子邮件替换。
- 测试电子邮件:
- 杀死任何管理过程。
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
- https://md.ekstrandom.net/resources/dns323/
- https://wiki.debian.org/InstallingDebianOn/D-Link/DNS-323
- http://www.cyrius.com/debian/orion/d-link/dns-323/
- http://www.cyrius.com/debian/orion/d-link/dns-323/install/
- https://www.debian.org/releases/jessie/
- https://www.linuxquestions.org/questions/debian-26/how-do-i-create-an-initrd-img-file-597883/
恢复
- http://www.cyrius.com/debian/orion/d-link/dns-323/recovery/
- http://dns323.kood.org/hardware%3Aserial
- https://www.ionos.com/help/server-cloud-infrastructure/dedicated-server-for-servers-purchased-before-102818/rescue-and-recovery/software-raid-status-monitoring-linux/
袭击
- https://tldp.org/HOWTO/Software-RAID-HOWTO-6.html
- https://serverfault.com/questions/495392/remove-faulty-state-in-raid-1
桑巴
- https://tompai.pro/computers/d-link-dns-323-requires-smb1-protocol-cant-connect-from-windows-10/
- https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html
- https://www.samba.org/samba/download/
- https://wiki.samba.org/index.php/Build_Samba_from_Source
- https://www.samba.org/samba/history/
- https://wiki.samba.org/index.php?title=Package_Dependencies_Required_to_Build_Samba&oldid=10463#Python
- https://askubuntu.com/questions/917565/checking-smb-version
- https://askubuntu.com/questions/79078/how-to-restart-samba-server
- https://linuxconfig.org/how-to-set-up-a-samba-server-on-debian-10-buster
附加组件
- https://www.cyberciti.biz/faq/how-to-find-fan-speed-in-linux-for-cpu-and-gpu/
- https://unix.stackexchange.com/questions/134797/how-to-automatically-mount-an-usb-device-on-plugin-time-on-an-already-running-sy
- https://github.com/rbrito/usbmount
其他的
- https://nas-tweaks.net/371/hdd-installation-of-the-fun_plug-0-7-on-nas-devices/#Steps_for_installing_fun_plug
- http://dns323.kood.org/howto:crosscompile#pre-compiled_binaries
- https://devguide.python.org/getting-started/setup-building/
致谢
- 由 Freepik - Flaticon 创建的软件终端图标
- irc://irc.debian.org/#debian-arm 上的人员
- StackOverFlow 或其相关网站上的人员。