作者:张华 发表于:2026-06-04
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
一天之内同时坏了两个电脑, 一个威联通nas, 一个华硕nuc. 都一个症状,电源灯不亮, 都买了单独的电源适配器都仍然不亮。
修复威联通nas
后来将nas上的一块硬盘挪到移动硬盘上恢复数据时发生连移动硬盘的灯都不亮了,才知道原来电源灯不亮是因为坏了一块硬盘的原因。 另外,若nas真坏了,那如何恢复数据呢?
hua@y9000p:~$ sudo fdisk -l
...
/dev/sda1 40 1060289 1060250 517.7M 83 Linux
/dev/sda2 1060296 2120579 1060284 517.7M 83 Linux
/dev/sda3 2120584 3906011969 3903891386 1.8T 83 Linux
/dev/sda4 3906011976 3907007999 996024 486.3M 83 Linux
hua@y9000p:~$ sudo mdadm --assemble --scan
mdadm: /dev/md9 has been started with 1 drive (out of 2).
mdadm: /dev/md/2 has been started with 1 drive (out of 2).
mdadm: /dev/md/0 has been started with 1 drive (out of 2).
mdadm: /dev/md13 has been started with 1 drive (out of 2).
hua@y9000p:~$ cat /proc/mdstat
Personalities : [raid1]
md13 : active raid1 sda4[0]
458880 blocks [2/1] [U_]
bitmap: 48/57 pages [192KB], 4KB chunk
md0 : active raid1 sda3[0]
1951945556 blocks super 1.0 [2/1] [U_]
md2 : active raid1 sda2[0]
530128 blocks super 1.0 [2/1] [U_]
md9 : active raid1 sda1[0]
530048 blocks [2/1] [U_]
bitmap: 36/65 pages [144KB], 4KB chunk
unused devices: <none>
2, 用只读模式挂载它
sudo mount -o ro /dev/md0 /mnt/tmp/
ls /mnt/tmp/
sudo umount /mnt/tmp/
sudo mdadm --stop /dev/md0
修复华硕nuc
nuc电源灯不亮是因为静电保护,拆掉主板上的电池(打开华硕nuc之后找不到电池,那是因为在主板反面,但那个主板从壳子上拆不下来,需要朝两个bai一下就行)放电后电源灯就能亮了。
电源灯亮了之后,却屏幕一直黑屏, 那是内存条的事,拆下来用酒精擦接口一个个试就好了。
恢复路由器
其实同一天,路由器也有点问题,倒是没事,但声音太大了。所以换成了手头一个双网口的大唐nuc做路由器.
1, 下载esir的lede op固件 - op-buddha-version-v2\[2026]-x86-64-generic-squashfs-uefi.img.gz
2, 解压: gzip -d op-buddha-version-v2\[2026]-x86-64-generic-squashfs-uefi.img.gz
3, 在ubuntu上用balenaEtcher将op-buddha-version-v2\[2026]-x86-64-generic-squashfs-uefi.img做U盘
4, 将U盘插入到大唐NUC,它默认就进入到了U盘中的op。注意:op必须在键盘上按一下回来才会激活CLI窗口
5, 但上面这步仅是从U盘启动,如何从硬盘启动呢?可以先电脑连接U盘启动的op系统,然后在电脑上运行: scp op-buddha-version-v2\[2026]-x86-64-generic-squashfs-uefi.img root@192.168.99.207:/tmp/ 再在op CLI窗口运行(连个显示器): dd if=/tmp/op-buddha-version-v2\[2026]-x86-64-generic-squashfs-uefi.img of=/dev/sda bs=4M conv=fsync && sync
6, 上面一步如何连接电脑呢?
首先op没有大唐NUC的无线网卡驱动,所以电脑无法通过无线连接op
op默认将eth0用于br-lan, 将eth1用于外网(默认使用dhcp)
而我的y9000p又恰好有线网卡不work, 所以只能通过y9000p连接wifi (这个wifi来自华为wifi6路由器,华为路由器作为下游接着连接op的交换机)
所以最开始将op挂在原来家里老路由器下时,它就直接从老路由器上分配了eth1=192.168.99.206, 此时必须从op CLI窗口中修改/etc/config/firewall中将wan的INPUT从REJECT改成ACCEPT(option input 'ACCEPT')之后再重启' /etc/init.d/network restart'就可以从机器上通过 192.168.99.206来访问WEB了。
7, 将eth1从默认的dhcp改成pppoe - 修改 /etc/config/network后再运行/etc/init.d/network restart
config interface 'wan'
option device 'eth1'
option proto 'pppoe'
option username 'xxx'
option password 'xxx'
8, 坑一,但是,我找另外一台有有线网卡的机器,将它连接op上的eth0接口,会有IP,但无法访问它的WEB界面。 后来发现原来华为路由器上有dhcp,当op在br-lan上也打开dhcp时, 必须将强制设置为1 (option force '1', 即使检测到另一台服务器,也要强制使用此网络上的 DHCP。)
vim /etc/config/dhcp
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option dhcpv4 'server'
option dhcpv6 'server'
option ra 'server'
list ra_flags 'managed-config'
list ra_flags 'other-config'
option force '1'
9, 坑二,在op里修改了配置如/etc/config/network之后,直接拨电源重启后配置将丢失,但用reboot无事(只是看起来慢一些)
10, 坑三,ssh不支持rsa改用ed25519
8#ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519_opalias sshgw='ssh -i ~/.ssh/id_ed25519_op root@192.168.99.1 -p22'
11, 抗四,打开了tailscale造成本机机器无法ping GW, 所以这种涉及网络的还是尽量在那个armbian上做吧。
12, 坑五(下面的方法并不work), 如何将op的硬盘扩容到整块硬盘, 使用cfdisk图形化工具手动将剩余空间创建了/dev/sda3分区
opkg install parted losetup resize2fs blkid
root@op:~#df -h
/dev/sda1 512 33279 32768 16M Linux filesystem
/dev/sda2 33280 2130431 2097152 1G Linux filesystem
/dev/sda3 2131968 976773119 974641152 464.7G Linux filesystem
/dev/sda128 34 511 478 239K BIOS boot
mkfs.ext4 /dev/sda3
然后先在GUI的挂载点(http://192.168.99.1/cgi-bin/luci/admin/system/mounts)处点"生成配置"这样这在挂载点处能看到/mnt/sda3了, 然后编辑这个挂载点:1)点击"已启用" 2)挂载点选"作为根文件系统使用(/),然后使用下列命令来复制根文件系统(但复制出来的/dev/sda1应修改成/dev/sda3):
umount /mnt/sda3 2>/dev/null || true
mkdir -p /tmp/introot
mkdir -p /tmp/extroot
mount --bind / /tmp/introot
mount /dev/sda3 /tmp/extroot
tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -
sync
umount /tmp/introot
umount /tmp/extroot
reboot
#之前
root@op:~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 190.3M 190.3M 0 100% /rom
tmpfs 7.7G 16.4M 7.7G 0% /tmp
/dev/loop0 831.8M 69.2M 762.6M 8% /overlay
overlayfs:/overlay 831.8M 69.2M 762.6M 8% /
/dev/sda1 16.0M 6.6M 9.3M 42% /boot
/dev/sda1 16.0M 6.6M 9.3M 42% /boot
tmpfs 512.0K 0 512.0K 0% /dev
13, 安装docker, 反正上面的/dev/sda3也无法扩展overlay分区,那这里docker刚才直接用它吧
opkg update >/tmp/opkg-update.log
opkg install docker dockerd docker-compose
opkg install python3 python3-pip
mkdir -p /mnt/docker && mount /dev/sda3 /mnt/docker/
root@gw:~# grep -r 'docker' /etc/config/fstab -A2 -B1
config mount
option target '/mnt/docker'
option uuid 'a36d8d4e-2bce-4eb3-99d9-1e85ae8bd3f3'
option enabled '1'
#mount -t overlay overlay -o lowerdir=/mnt/docker,upperdir=/mnt/docker/diff,workdir=/mnt/docker/work /mnt/merged #for overlay2
/etc/init.d/dockerd stop && dockerd --data-root=/mnt/docker #debug it
docker run -d --name nginx --network host nginx:alpine
docker rm -f nginx 2>/dev/null || true
#avoid using the port 80
docker run -d \
--name nginx \
--network host \
nginx:alpine \
sh -c "sed -i 's/listen 80;/listen 8080;/' /etc/nginx/conf.d/default.conf && sed -i 's/listen \\[::\\]:80;/listen [::]:8080;/' /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
wget -O- http://127.0.0.1:8080
docker exec -it nginx sh
14, 安装nas(依赖kernel), 改装用户态samba
opkg install samba4-server luci-app-samba4
#on win: \\192.168.99.1\share
sudo mount -t cifs //192.168.99.1/share /mnt -o username=hua,password=xxx,vers=3.0,iocharset=utf8,uid=$(id -u),gid=$(id -g)
#autofs
sudo mkdir -p /etc/smbcredentials
sudo tee /etc/smbcredentials/op-share >/dev/null <<'EOF'
username=hua
password=xxx
EOF
sudo chmod 600 /etc/smbcredentials/op-share
#use id command to get gid, sudo apt install autofs cifs-utils , use 'username=hua password=password' in op-share
/share -fstype=cifs,rw,credentials=/etc/smbcredentials/op-share,uid=1040570724,gid=1040570724,iocharset=utf8,vers=3.0 ://192.168.99.1/share
root@gw:~# cat /etc/config/samba4
config samba
option workgroup 'WORKGROUP'
option charset 'UTF-8'
option description 'op NAS'
option homes '0'
config sambashare
option name 'share'
option path '/mnt/docker/share'
option read_only 'no'
option guest_ok 'no'
option create_mask '0666'
option dir_mask '0777'
option users 'hua'
root@gw:~# cat /etc/samba/smb.conf |grep '\[share\]' -A9
[share]
path = /mnt/docker/share
valid users = hua
create mask = 0666
directory mask = 0777
read only = no
guest ok = no
vfs objects = io_uring