赞
踩
本人昨天买了一块SSD, 结果后来发现原来这块SSD存在硬件质量问题, 造成了软件上的种种诡异问题, 如U盘时而识别时而不识别, 如触摸屏左键时而抽风, 如ghost安装win10时几乎到100%的进度时忽然来一个无响应, 重启系统后出现了"To interrupt normal start up, press the blue ThinkVantage button.", 此时键盘无反应, 既进不了系统, 也进不了BIOS. 拨CMOS电源也无效. 最后发现是这块SSD有质量问题. 估计是SSD有控制器主要是软件吧, 控制器软件有bug导致运行ghost这种软件时也能导致硬件挂住.
也正是因为这个问题吧, 七搞八搞, 一不小心在重试的过程中将之前的一块linux分区误删了, 于是之前打算的迁移双系统的想法泡汤(当然, 那些通过分区助手或者ghost来迁移分区的网上文章照着做没一个是成功的).
这样, 有机会事隔多年再一次重装双系统的机会, 但是发现世道变了, 之前百试不爽的方法现在行不通了. 后经查证, 主要原因是ubuntu 18.04开始默认采用UEFI, 而win10默认仍然是MBR. 这样会导致一系列的问题, 如报错: grub-efi-amd64-signed failed to install 18.04, 统一采用UEFI安装.
在BIOS中将Boot Mode设置为UEFI Only, 如果有Secure Boot选项还要disable它(不做这一步可能会造成按F12键之后无法找到U盘)
注: 改成UEFI only之后, 运行双系统, 四系统都没问题, 但后来进不了U盘的livecd, 报: couldn’t get UEFI db list, 所以只得改回Both, 但UEFI优先.
安装win10后需要将禁用掉快速启动, 否则会造成按F12无法选择U盘启动. 菜单路径为: “设置 -> 系统 -> 电源与睡眠 -> 其他电源设置 -> 选择电源按钮的功能 -> 更改当前不可用的设置 -> 启动快速启动”
像安装win10一样, 一样要注意重要一点, 需创建大概300M左右的UEF分区, 另外, 还可以创建一个根分区和一个备份文件用的bak分区.
注意, windows非常霸道, 它是总修改bios里的启动顺序, 将它的"Windows boot Manager"放在"ubuntu grub"的前面, 可以在bios里锁定启动顺序
win7若没有sata的驱动, 所以得先改回IDE, 装完win7之后再改回AHCI, 否则也容易挂在启动界面不动了.
注: 我未遇到以上问题, 可能因为我装的win7并不是原版的, 已经带了sata驱动
如果加装了SSD之后呢? 那得注意:
装完之后进入win10发现thinkpad小红点左键失灵, 再切换进ubuntu发现小红点左键正常(实际上, 5次大概有一次有问题, 只是登录界面左键与右键似乎混乱了, 登录之后就正常了. 再换PE进系统发现小红点左键依然有问题. 所以基本断定和硬件没有关系, 应该是win10上的小红点驱动有问题.
但搜索了很多帖子, 没一个能解决问题的, 联想的小红点win10驱动做得太烂了. 所以决定回到win7, 回到win7之后该问题解决. 另外, PE回到win7的过程中不会伤害之前SSD上安装的ubuntu系统, 也不会伤害原HDD里的双系统.
现在在笔记本x220t上装了win10, 也装了ubuntu 18.04, 但是如何将工作机t440p的根分区迁移到x220t的根分区呢? 因为我们已经在x220t上安装了ubuntu 18.04, 这样省去了采用命令划分EFI分区, 以及最后填充EFI分区的步骤. 现在将精力集中在如何快速迁移根分区上.
sudo -i
apt install openssh-server
passwd
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
service ssh restart
fdisk -l
mount /dev/sdb4 /mnt
# backup 3 files
/mnt/boot/grub/grub.cfg
/mnt/etc/hostname
/mnt/etc/fstab
sudo -i fdisk -l mount /dev/sda9 /mnt # rsync will now copy all files, directories, permissions and owners over to the destination machine. # It also skips all files and directories that are not on the root filesystem, like /dev/, /sys/, /proc/. # If there are filesystems that are mounted separately on the source machine and your want those copied too, use rsync again on those mountpoints too. # NOT USE livecd rsync -xavP --numeric-ids --exclude='/nas' --exclude='/bak' --exclude='/tmp' --exclude='/EFI' --exclude='/media' --exclude='/mnt' / root@192.168.99.128:/mnt/ # USE livecd, use '/mnt/ rsync -xavP --numeric-ids --exclude='tmp' / root@192.168.99.128:/mnt/ rsync -xavP --numeric-ids --exclude='/nas' --exclude='/bak' --exclude='/tmp' --exclude='/EFI' --exclude='/media' --exclude='/mnt' /mnt/ root@192.168.99.128:/mnt/ # then restore above 3 files /mnt/boot/grub/grub.cfg /mnt/etc/hostname /mnt/etc/fstab
mount /dev/sdb8 /mnts
for d in dev sys proc; do mount --bind /$d /mnt/$d; done
chroot /mnt/ grub-install /dev/sdb # canot find EFI directory
chroot /mnt/ update-grub
blkid
e2label /dev/sdb8 "ROOT_SSD"
tee "/mnt/etc/fstab" <<EOF
#UUID can be found via blkid command
#LABEL=boot /boot ext2 sync 0 2
#UUID=735b3be3-779c-4d21-a944-b033225f3ab4 none swap sw 0 0
#LABEL=SWAP none swap sw 0 0
UUID=9401-D2EA /boot/efi vfat defaults 0 2
LABEL=ROOT_SSD / ext4 errors=remount-ro 0 1
EOF
sudo apt install bcache-tools # sdb is ssd, sda is hdd # bcache will refuse to instantiate if it looks like a filesystem already exists on the device sudo umount /data sudo umount /bak sudo wipefs -a /dev/sdb5 sudo wipefs -a /dev/sda5 # creating the bcache, --discard flag is for TRIM sudo make-bcache -C /dev/sdb5 -B /dev/sda5 --block 4k --discard --writeback # creae and mount the filesystem sudo mkfs.ext4 /dev/bcache0 sudo mkdir -p /bak # remember to comment /bak and /data as well, or it will throw: Welcome to emergency mode vi /etc/fstab #UUID=85d5095b-4288-4cc3-8ac7-aae3ed8e872c /bak ext4 defaults 0 2 #UUID=e246b3d0-6905-4602-a3ae-2f2162f9871f /data ext4 defaults 0 2 /dev/bcache0 /bak ext4 defaults 0 2 # other commands ls -la /sys/fs/bcache/ umount /bak echo 1 > /sys/block/bcache0/bcache/stop echo f3e2ac40-5dc4-4e28-880c-4bbb6cd415e3 /sys/block/bcache0/bcache/detach lsblk cat /sys/block/bcache0/bcache/state cat /sys/block/bcache0/bcache/cache_mode cat /sys/block/bcache0/bcache/dirty_data bcache-super-show /dev/sda5 bcache-super-show /dev/sdb5 lsblk #其他, 测试虚机中ceph盘的性能 The IO path is: VM -> RBD -> compute node -> network -> OSD(primary + 2 replicas) -> bcache (nvme + hdd) Stage 1, exclude VM, check IO performance on RBD directly Create a RBD in cinder-ceph pool and run rbd bench to check IOPS rbd create cinder-ceph/canonical-test-rbd --size 20G rbd bench cinder-ceph/canonical-test-rbd --io-size=4K --io-threads=1 --io-total=10G --io-pattern=rand --io-type=write rbd bench cinder-ceph/canonical-test-rbd --io-size=4K --io-threads=1 --io-total=10G --io-pattern=rand --io-type=read rbd bench cinder-ceph/canonical-test-rbd --io-size=4M --io-threads=1 --io-total=10G --io-pattern=rand --io-type=write rbd bench cinder-ceph/canonical-test-rbd --io-size=4M --io-threads=1 --io-total=10G --io-pattern=rand --io-type=read rbd rm cinder-ceph/canonical-test-rbd Stage 2, check network between compute node and the nodes which store test RBD’s primary or replicas This can be done by iperf Stage 3, IO performance on OSD nodes hold the RBD’s primary and 2 replicas We can not test IO performance on OSD devices directly, so need to find a way to test bcache performance on OSD node, we can use /var/lib/virt/image as test We can possibly use this folder /var/lib/virt/images to verify IO performance, but there is ext4 built on this bcache, so file system cache could affect a bit, but we should be able to roughly see the overall performance dd if=/dev/zero of=/var/lib/virt/images/fiotest-image bs=1M count=10240 fio --name=fiotest --rw=randwrite --bs=4k --runtime=30 --ioengine=libaio --iodepth=128 --numjobs=1 --filename=/var/lib/virt/images/canonical-fiotest-image --direct=1 --sync=1 --group_reporting --time_based=1 --eta-newline 1 fio --name=fiotest --rw=randread --bs=4k --runtime=30 --ioengine=libaio --iodepth=128 --numjobs=1 --filename=/var/lib/virt/images/canonical-fiotest-image --direct=1 --sync=1 --group_reporting --time_based=1 --eta-newline 1 fio --name=fiotest --rw=randwrite --bs=4m --runtime=30 --ioengine=libaio --iodepth=128 --numjobs=1 --filename=/var/lib/virt/images/canonical-fiotest-image --direct=1 --sync=1 --group_reporting --time_based=1 --eta-newline 1 fio --name=fiotest --rw=randread --bs=4m --runtime=30 --ioengine=libaio --iodepth=128 --numjobs=1 --filename=/var/lib/virt/images/canonical-fiotest-image --direct=1 --sync=1 --group_reporting --time_based=1 --eta-newline 1 rm -f /var/lib/virt/images/fiotest-image
两个参数:
while true; do echo `date`; cat /sys/block/bcache0/bcache/cache/cache_available_percent; cat /sys/block/bcache0/bcache/dirty_data; cat /sys/block/bcache0/bcache/writeback_rate; sleep 5; done;
#!/bin/sh
# comes dongdong's patch - https://lkml.org/lkml/2021/1/8/110
while true; do echo "`date +%s`, `cat
/sys/block/bcache0/bcache/dirty_data`, `cat
/sys/block/bcache0/bcache/cache/cache_available_percent`, `cat
/sys/block/bcache0/bcache/writeback_rate`" >> $1; sleep 5; done;
bak分区存放数据, 由bcache加速
rsync -xavP --numeric-ids --exclude='images' /bak/ root@192.168.99.128:/bak/
一个分区不够用时, 可以使用gpartd合并相邻的空闲分区.注意一点, 要合并的分区必须是umount状态时才能合并.
# disable scanning for btrfs filesystems when boot sudo apt-get purge btrfs-tools sudo update-initramfs -ukall # enable TRIM feature by adding discard option # what's TRIM - https://blog.csdn.net/quqi99/article/details/50963308 # the option noatime is used to disable access time for a file sudo hdparm -I /dev/sdb |grep TRIM vi /etc/fstab LABEL=ROOT_SSD / ext4 noatime,discard,errors=remount-ro 0 1 sudo mount -o remount /dev/sdb8 sudo mount |grep sdb8 |grep discard # Try not to use swap space unless it's running out of memory. echo 1 > /proc/sys/vm/swappiness # avoid visiting ssd by using ramdisk for /tmp instead of tmpfs vim /etc/fstab tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0 tmpfs /var/log tmpfs defaults,noatime,mode=1777 0 0 sudo mount -o remount / # Set chrome to use ramdisk cache cd ~/.cache/google-chrome/Default rm -rf Cache sudo ln -s /tmp Cache rm -rf Media\ Cache/ sudo ln -s /tmp Media\ Cache # Use noop for I/O elevator cat /sys/block/sda/queue/scheduler sudo vi /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="elevator=noop" sudo update-grub # Test SSD speed $ sudo hdparm -Tt /dev/sdb /dev/sdb: Timing cached reads: 9128 MB in 2.00 seconds = 4569.28 MB/sec Timing buffered disk reads: 818 MB in 3.01 seconds = 272.07 MB/sec # Make sure 4K align $ sudo fdisk -lu |grep sdb |grep sectors Disk /dev/sdb: 232.9 GiB, 250059350016 bytes, 488397168 sectors # Health check $ sudo smartctl -s on -a /dev/sdb |grep PASSED SMART overall-health self-assessment test result: PASSED
为什么新电脑think x1 yoga这次又要安装双系统,那是因为win10上的cmder似乎丢失键盘按键, 见:https://github.com/cmderdev/cmder/issues/258
与: https://blog.csdn.net/quqi99/article/details/105598417
需关闭win10上的硬盘加密功能:
manage-bde -status
manage-bde -?
manage-bde -off c:
manage-bde -off d:
另外,用ubuntu上的Startup Disk Creation创建u盘启动盘时总不好使,后来证明是U盘质量问题.
目前ubuntu 20.4还遇到一个尚未解决的问题,锁屏时敲密码hang在那儿,日志似乎是:
Aug 8 18:34:03 x1 gsd-power[2533]: Error setting property 'PowerSaveMode' on interface org.gnome.Mutter.DisplayConfig: Timeout was reached (g-io-error-quark, 24)
今天买了一个典籍的工控机,安装win10时遇到如下问题:
对于Surface Pro3进入UEFI的方法是,关机,插USB启动盘,按住音量+键再按电源键,看到UEFI界面后松音量键,在UEFI中关闭可信计算,将启动顺序设置成"USB -> SSD",这样再Exit UEFI重启即可进入USB启动盘。但是实测:
ed2k://|file|cn_windows_10_consumer_editions_version_2004_updated_may_2020_x64_dvd_5a83cf4e.iso|5260658688|7B09EFFC08DD0FBF1D8A5558DA8445F5|/
有时候用PE工具制USB启动盘(当然这种方式是不需要的)使用NTFS模式是为了避免拷贝大于4G的ISO文件,ISO文件如果采用解压再拷贝的话可以解除这个限制,直接使用FAT32格式。
1, 关闭安全,搜索"defen"打开windows安全中心,点"病毒与防护->管理设置"关闭所有的安全选项。然后搜索"services.msc"禁用"Security Center"服务。
2, 关闭IPv6, 禁用"IPHelper"服务.
3, 禁用"Windows Search"服务, 因为不会在这台电脑上search太多.
4, 修改电源计划为高性能模式,右击开始按钮,点击“电源选项”→“其他电源选项”,将首选计划修改为”高性能“。且将“性能和能量”项改为“最佳性能”。
5, 禁用Cortana, 搜索"gpedit.msc", 展开“计算机配置—管理模板—Windows 组件—搜索”, 找到“允许使用 Cortana”,右键选择“编辑”, 需重启电脑。
6, 禁用"Windows Update"服务。
7, 禁用OneDrive,搜索"gpedit.msc", 展开“计算机配置—管理模板—OneDrive"下列的一系列项。
8, 但那样设置之后,发生有一个叫Antimalware的服务占用CPU与内存都非常高,注册表中禁用:计算机管理->管理模板->Windows组件 >Windows Defender防病毒->实时保护->不论何时启用实时保护,都会启用进程扫描。 这样仍不生效,继续禁用:计算机管理->管理模板->Windows组件 >Windows Defender防病毒->关闭Microsoft Defender防病毒|关闭例程更新。同时msconfig禁用与安全相关的服务以非microsoft的服务。但还是不行,最后以管理员运行powershell然后运行(REG ADD "hklm\software\policies\microsoft\windows defender" /v DisableAntiSpyware /t REG_DWORD /d 1 /f)解决,它相当于在regedit下在HKEY_LOCAL_MACHINE/SOFTWARE/Policies/Microsoft/Windows Defender路径下添加了名为DisableAntiSpyware的DWORD32=1
9, win10设置系统默认编码为UTF-8
10, 打开Hyper-v, NFS, 虚拟机平台, 适用于Linux的Windows子系统,容器,Telent客户端,TFTP客户端等7个特性,在设置的程序里添加这些特性即可。
11, win10打开远程桌面, Ubuntu上使用Remmina连接RDP桌面。
1, 新建虚拟交换机WAN(外部,连接第一块网卡, 为避免失去RDP连接应勾选允许管理操作系统共享此网络配置器)
2, 新建虚拟交换机LAN(内部,连接第二块网卡, 为避免失去RDP连接应勾选允许管理操作系统共享此网络配置器), 此时,win10的网络连接中,会多出三个虚拟网卡:vEthernet (Default Switch),vEthernet (WAN)和vEthernet (LAN)。
3, img格式转成vhdx格式(注:gz需先解压)
gunzip -d openwrt-gdq-v8-1[2021]-x86-64-generic-squashfs-uefi.img.gz
qemu-img convert openwrt-gdq-v8-1[2021]-x86-64-generic-squashfs-uefi.img -O vhdx -o subformat=dynamic router2021v8UEFI.vhdx
3, 新建虚机eSirLEDE, 第二代(下载的是EFI固件),1024M内存,使用existing eSirLEDE.vhd, 注:此时暂时不选择网络
4, 设置网络,先添加WAN再添加LAN, 顺序很重要,这样,WAN名为eth0,LAN名为eth1
5, 设置虚机,在安全性tab中取消“启用安全启动”(默认就是取消的),并设置始终自动启动此虚拟机。
6, 启动虚机后,编辑(vi etc/config/network)调整wan/lan与eth0/eth1的关系(将lan处的网络改成eth1, wan处的网卡改成eth0),修改lan的IP为:192.168.99.1, 然后用passwd root设置密码。
7, 敲入reboot重启虚机后,虚机里面的br-lan的IP将为192.168.99.1(它连的是eth1). 将电脑连向这第二块网卡(eth0)设置一个IP之后就可以进GUI界面去设置了
我们并不想使用黑群晖,只是想简单的将USB存储挂进win10或者OpenWrt虚机里然后通过rsync同步。
1, 若将USB存储挂载到虚机,需要先在win10下将该盘脱机。然后hyper-v里添加SCSI控制器就可以添加这块脱机的硬盘了
diskpart
list disk
select disk 1
offline disk
#list partition
#select partiion X
#active
但是将磁盘设置为offline之后,用下列命令active时却报:ACTIVE命令只能用于固定MBR磁盘
list partition
select partiion X
active
但在设置的磁盘管理处在磁盘(而非右侧的分区)点右键点”联机“就回来了。
2, 前提是win10能认出这个USB存储,由于之前移动硬盘用Ext4分区了,现在win10并不能挂载它。经过试用,唯一靠谱的是一个收费软件,叫Paragon ExtFS,见: https://www.jianshu.com/p/c9aeed724fb3
3, 虚机添加了硬盘之后,若硬盘消失,虚机会启动失败。
4, win10上能成功运行的nfs server开源软件只有haneWIN,但它和Paragon ExtFS不能结合,必须得将硬盘从Ext4转回NTFS。
5, 但通过虚机用硬盘提供nfs后,在其他机器通过(sudo mount -t nfs 192.168.99.1:/mnt/sdb1 /mnt/win/sdb1)时报错"mount(2) system call failed: No error information"。
mount(2) system call failed: No error information.
fsck.ext4 -y /dev/sdb2
之后如果在http://192.168.99.1/cgi-bin/luci/admin/nas/nfs页只mount /mnt会报下列错,应该mount /mnt/sdb1
mount.nfs: access denied by server while mounting 192.168.99.1:/mnt/sdb1
且在使用rsync时对中文处理不友好(deleting doc/me/xxx/#344#273#262#350#243#201/), 网上说可以通过“rsync -avzPu --iconv=“GBK,UTF-8” --size-only”解决。
/usr/bin/rsync -avztur --progress --delete --exclude 'windisk' /mnt/nas /mnt/sdb1
/usr/bin/rsync -avztur --progress --delete --exclude 'windisk' admin@192.168.2.103:/share/HDA_DATA/Public/ /mnt/sdb1
6, 另外,通过虚机使用USB硬盘,在USB抽拨之后,openwrt中原sda变成sdb了,导致usb原来的sdb无法加载。所以似乎在虚机里使用容易插拨的USB存储并不是一个好的选择。
附 - win10上使用haneWIN
20210829更新:haneWIN速度只在太慢了(只有1M每秒),现在换成使用windows共享文件夹也就是samba的模式(速度大概在15M每秒 )
# 在win10中在“电脑->管理->用户”创建一个名为nfs的本地用户,然后在要创建共享文件夹的目录上点击右键创建共享文件夹
# use share file instead of hanewin, hanewin is too slow ( fuser -k /mnt/win_share/ && umount /mnt/win_share )
# sudo mount -t cifs -o username=nfs,password=password //win/win_share /mnt/tmp/
#/mnt/win_share -fstype=cifs,rw,username=nfs,password=password,vers=1.0,file_mode=0777,dir_mode=0777 ://win/win_share
/mnt/win_share -fstype=cifs,rw,username=nfs,password=password,file_mode=0777,dir_mode=0777 ://win/win_share
/mnt/win_bak -fstype=cifs,rw,username=nfs,password=password,file_mode=0777,dir_mode=0777 ://win/win_bak
下面是 win10使用haneWIN的方法:
现在改用在win10上通过Paragon ExtFS + haneWIN (NFS Server)来提供共享存储(ubuntu要想访问需设置utf编码):
下载(https://r.hanewin.net/nfs1258.exe)安装后需以管理员打开(否则,配置项全是灰的)在设置一个exports (D:\ -alldirs -name:win_bak -public), 然后restart它即可, 它默认使用的就是utf-8编码。
ubuntu上用nfs client连接它:
D:\ -alldirs -name:win_bak -public -maproot:0
G:\ -alldirs -name:win_share -public -maproot:0
showmount -e 192.168.2.164
sudo mount -t nfs win:/win_bak /mnt/win_bak -o vers=3 -o nolock
sudo mount -t nfs win:/win_share /mnt/win_share -o vers=3 -o nolock
在"高级安全Windows Defender防火墙打开了111,1058,2049三个端口,但仍然报错“mount.nfs: access denied by server while mounting”。原因是它不能从Paragon ExtFS读取EXT4的文件,必须得将硬盘格式切换回NTFS啊。
NTFS盘挂载到ubuntu下遇到read-only问题:
sudo e2fsck /dev/sdd
sudo hdparm -r0 /dev/sdd #close write-protected
sudo ntfsfix /dev/sdd1
sudo mount -o rw /dev/sdd1 /media/hua/win/
sudo mount -o remount,rw /dev/sdd1 /media/hua/win/
在http://192.168.99.1/cgi-bin/luci/admin/nas/nfs使用nfs client挂载时报missing错误是因为输入框里没有填东西(只是提示误以为是默认值)。挂载了3个目录:
192.168.2.164:/win_bak/* -> /mnt/win_bak
192.168.2.164:/win_share/* -> /mnt/win_share
192.168.2.103:/Public -> /mnt/nas
或将上面的全删除就能启动了,然后再编辑:
root@OpenWrt:~# cat /etc/config/nfs config mount option enabled '1' option target '/mnt/win_bak' option options 'rw,nolock' option source 'win:/win_bak' option delay '1' config mount option enabled '1' option target '/mnt/win_share' option options 'rw.nolock' option source 'win:/win_share' option delay '3' config mount option enabled '1' option options 'rw,nolock' option delay '5' option source 'nas:/Public' option target '/nas'
但此时又报下列错, 解决这个问题的关键是在haneWIN中添加’-maproot:0’参数
root@OpenWrt:~# mkdir /mnt/win_bak/tmp
mkdir: can't create directory '/mnt/win_bak/tmp': Permission denied
同时安装openssh, 在"setting -> application -> optional function"安装openssh server即可.
ssh安装好之后,可以使用基于ssh的tftp了,在"电脑->管理->用户"中创建一个本地用户,之后如何将用户权限只限定在某个目录呢?答案是编辑隐藏文件(在view菜单中显示隐藏文件)(C:\ProgramData\ssh\sshd_config),同时要编辑这个文件先在这个文件的属性中将权限改成可编辑,然后添加:
Subsystem sftp sftp-server.exe internal-sftp
...
Match User ftpuser
ChrootDirectory G:\www\sftp
# Disable tunneling, authentication agent, TCP and X11 forwarding.
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
PermitTTY no
PermitTunnel no
ForceCommand internal-sftp
最后,在服务中重启openssh即可,然后就可以通过tftp命令或者winscp来拷贝文件了.若要在外网访问的话记得添加端口映射.
注意:我之前一直失败,原因是将G\www\sftp写错成了G:\www\tftp,非常难查.
还有一个大问题是,在虚机里运行OpenWrt时,其他机器连接时经常会从br-lan的dhcp拿不到IP,而人工设置了网络又没问题。这块不是很稳定。
config interface 'lan'
option type 'bridge'
option proto 'static'
option netmask '255.255.255.0'
option _orig_ifname 'eth0'
option _orig_bridge 'true'
option ifname 'eth0 eth1 eth2 eth3 eth4'
option ipaddr '192.168.99.1'
option ip6assign '64'
config interface 'wan'
option proto 'dhcp'
option _orig_ifname 'eth1'
option _orig_bridge 'false'
option ifname 'eth5'
第一级路由器(192.168.2.0/24)到第二级路由器(192.168.99.0/24):
# cat /etc/rc.local
route add -net 192.168.99.0 netmask 255.255.255.0 gw 192.168.2.47
exit 0
ssh设置:
mkdir ~/.ssh
dropbearkey -t rsa -f ~/.ssh/id_rsa
dropbearkey -y -f ~/.ssh/id_rsa |sed -n 2p > ~/.ssh/id_rsa.pub
# https://community.onion.io/topic/2538/resolved-ssh-from-omega-to-linux-server-without-password/9
ln -s ~/.ssh/id_rsa ~/.ssh/id_dropbear
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys && chmod 644 ~/.ssh/authorized_keys
ssh admin@192.168.2.103 "tee -a /root/.ssh/authorized_keys" < ~/.ssh/id_rsa.pub
#/usr/bin/rsync -avztur --progress --delete --exclude 'windisk' admin@192.168.2.103:/share/HDA_DATA/Public/ /mnt/sdb1
cat << EOF | sudo tee /bak/bin/sshpass.sh
#!/bin/bash
sshpass -f /home/hua/.pwd ssh $*
EOF
chmod +x /bak/bin/sshpass.sh
#sshfs -o password_stdin hua@win:G:\share /mnt/win <<< 'your pass'
sshfs -o reconnect,allow_other,follow_symlinks,ssh_command='/bak/bin/sshpass.sh' hua@win:G:\share /mnt/win
#autofs
/mnt/win -fstype=fuse,port=22,reconnect,allow_other,follow_symlinks,ssh_command=/bak/bin/sshpass.sh :sshfs\#hua@win\:G:\share
#/etc/fstab
sshfs#hua@win:G:\share /mnt/win fuse ssh_command=/bak/bin/sshpass.sh 0 0
sudm mount -a
入手了一个MaxTang J6412,安装win11的过程如下:
大唐nuc, 拆机安装内存(单根只能安装在最上面那槽否则开机时显示器不亮)和m.2 2280 ssd, 还支持一个2.5的sata硬盘(剩下的白铁条和插槽及线都是为它的).
0, 安装win11(Del键进BIOS), 填序列号,并激活
1, win11上打开远程桌面,然后在ubuntu上通过remmina来连接 (也可以使用rdesktop, 如: sudo rdesktop -z -r sound:local -g workarea -D -K -a 16 -u hua -p xxx 192.168.99.207). 但是有一个问题,即win11中一个用户仅支持一个session, 即使修改'gpedit.msc>计算机配置>管理模板>Windows组件>远程桌面服务>远程桌面会话主机>连接'也是没用的。 见: https://blog.csdn.net/weixin_45493092/article/details/123744524 , 及: https://www.technize.net/how-to-easily-enable-multiple-rdp-remote-desktop-sessions-in-windows-11/
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Get-ExecutionPolicy
#then run the script https://github.com/maxbakhub/winposh/blob/main/termsrv_rdp_patch.ps1
#The current logged on user does not have ownership privileges on c:\windows\system32\termsrv.dll
#use powershell to run the script again:
net user administrator /active:yes
net user administrator xxxx
另外,还有一个问题,通过HDMI与鸿蒙电视连接时,电脑不能设置休眠显示器,否则电视会说HDMI无信号. 或者将应用快速启动取消: https://answers.microsoft.com/zh-hans/windows/forum/all/windows10/6786f5b9-0456-4c4d-8263-1823383dcd24
2, 启用Hypev-v, NFS, Telnet Client, 容器,适用于Linux的Windows子系统,虚拟机平台等功能
3, 安装vim, git里集成了vim所以安装git即可, 然后将C:\Program files\Git\usr\bin加入环境变量即可. 这样可使用git下的vim/cat/scp等一系列命令.
4, win11上安装openssh-server (设置 -> 应用 -> 可选功能 -> 添加可选功能), 然后在services中启动它,最后ubuntu上连接它:ssh hua@xxx
它是 可结合wsl命令和git中的vim/cat这些命令来方便操作的(注:要想ssh过来也能用vim也必须将C:\Program files\Git\usr\bin加入hua这个环境变量中)
win11上也可以产生key(ssh-keygen, cat C:\Users\hua/.ssh/id_rsa.pub), 可在win11上用vim C:\Users\hua\.ssh\known_hosts将ubuntu的key加进去
5, 先安装ubuntu子系统方便使用wsl命令(https://learn.microsoft.com/zh-cn/windows/wsl/install-manual),先设置(wsl --set-default-version 2), 然后安装更新包(https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi), 最后appstore中安装ubuntu或者命令行安装(wsl --install -d Ubuntu-22.04)
6, 安装android子系统。在‘设置->时间和语言’将国家和地区改成美国, 不需要重启,这时才能在微软商店中搜到'Amazon Appstore'来安装bare, 但此时可能因为特殊国情打不开微软商店, 在路由器上开全局与使用openconnect均不好使,微软商店属于UWP应用运行在沙箱中无法使用本地代理,需要做如下设置允许UWP使用代理之后并且只能设置HTTP代理就好了(具体方法可参考: https://oreo.moe/blog/%E8%BD%AF%E4%BB%B6/%E8%BF%90%E8%A1%8C%E9%94%99%E8%AF%AF/Microsoft%20Store%20%E8%AE%BF%E9%97%AE%E5%8A%A0%E9%80%9F%E6%95%99%E7%A8%8B@HoganTR/ )
CheckNetIsolation.exe loopbackexempt -a -p=SID (SID从HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings下一个个找)
目前只能从amazon appstore里安装android应用,若想安装任意应用,搜索'andorid'打开'适用于Android的Windows子系统设置'启用'开发人员模式'与'高级网络'后,然后从ubuntu上通过adb连接它(adb connect 192.168.99.207:58526),然后可用adb install xx.apk来安装任意应用
7, 新建hypver-v虚机安装openwrt - https://blog.csdn.net/quqi99/article/details/82466639
8, 安装驱动总裁(它不限速)来安装wifi6无线网卡驱动. 但是这个wifi6网卡如何给openwrt来用呢?passthough必须是windows server才支持(https://blog.vlinyu.com/archives/windows-hyper-v-discrete-device-assignment-dda). 打开热点后会生成一个本地连接(eg: 本地连接10, 可搜索网络连接来查看本来连接), 假设以太网2是能上网的网卡,然后得在以太网2上点右键设置共享给本地连接10, 这样连热点的才能上网。打开热点后win11变成了一个路由器,如何继续将它变成一个透明代理呢?试试clash for windows (1.46.6 work), v2rayN或别的windows上的透明代理(proxycap。也可以用vmware代替hyper-v试试直通
9, 远程wol唤醒,这款nuc的bios里并不需要做设置,但win11中需要在网卡适配器处将wol功能打开,另外在路由器上只能使用etherwake命令而不是wol命令来唤醒(之间一直不work, 是因为使用了wol命令)
10, 断开自动开机, 在bios->chipset -pci -> State After G3由S5 state(上电关机)改成(S0 state(上电自启)
关于一个帐号不能有多个session的问题,我试了下面在安全模式下通过脚本termsrv_rdp_patch.ps1修改termsrv.dll的方法,修改成功了,但测试功能时还是失败了。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Get-ExecutionPolicy
#then run the script https://github.com/maxbakhub/winposh/blob/main/termsrv_rdp_patch.ps1
#The current logged on user does not have ownership privileges on c:\windows\system32\termsrv.dll
#use powershell to run the script again:
net user administrator /active:yes
net user administrator xxxx
#"c:\windows\system32\termsrv.dll" now owned by user "nuc\Administrator"
#so we must to run this script in security mode (在锁屏界面一直一直按住shift键来重启进入安全模式后直接找到这个脚本后右键点击在powershell中运行, 或从setting -> Windows Update -> Advance -> Restore -> 高级启动(但这条路径并不存在))
1, 在hyper-v中创建两个external vSwitch(WAN, LAN)分别与两个物理NIC关联 (此时,如果还用wifi热点的话,需要修改WAN网卡适配器的属性将其共享给wifi热点所在的本地网卡) 2, 新建~/.wslconfig文件设置其使用WAN这个vSwitch来代替之前默认的WSL vSwitch hua@NUC C:\Users\hua>cat ~/.wslconfig [wsl2] networkingMode=bridged vmSwitch=WAN 3, 网上一般说的上面就结束了,但上面的步骤并不work,后来发现了这个网页提到了(https://blog.gazer.win/essay/wsl2-bridged-network.html)并且'wsl -d Ubuntu22.04'在wsl容器内部配置/etc/wsl.conf NOTE: 现在似乎不要/etc/wsl.conf也行,不清楚之前是什么原因一直不work vim /etc/wsl.conf [network] generateHosts=true generateResolvConf=true 4, 然后回到powershell或window-termimal重启wsl (wsl --shutdown ; wsl), 此时wsl容器的IP才变成和物理网络同网段的192.168.99.0/24的IP 5, wsl2如何支持多网卡呢?答案是不支持,见: https://github.com/microsoft/WSL/issues/9113 6, openwrt也可以运行在wsl容器中,但有两个问题1)不支持多网卡 2)openwrt的init被wsl接管导致访问 GUI时看到很多rpc不work, 但可以用opkg安装包,确实只能做测试用,见: https://zhuanlan.zhihu.com/p/499799037
虚拟机无法直接使用host的无线网卡,因为虚拟机没有无线模块. 试了一下这样曲线救图(也可直接在hyper-v中创始external bridge时将无线网关接入,但也在虚机内部也不会呈现无线网卡):
a, 在hyper-v中创建一个名为vWireless的internal vSwitch,这样在host上多了一个vWireless的网卡适配器
b, 将vWireless与wifi6网卡适配器同时选中点右键再点桥接, 这样又多出一个桥接的网卡适配器
c, 虚机里添加一块从vWireless vSwitch的网卡
这样没成功,虚机里多出的eth2网卡没有IP。即使有IP它在虚机内部也不是无线网卡啊. 所以似乎基于虚机的soft router里无法使用wifi, 想要有wifi只能是将win11作路由器(做热点+网络共享给热点网卡+透明代理eg:proxycap)或者直接将openwrt安装在硬件上(但需确实openwrt有无线网卡的驱动)
cd /tmp & wget http://iscute.cn/tar/chfs/2.0/chfs-linux-arm-2.0.zip unzip -o chfs-linux-arm-2.0.zip -d /usr/local/bin chmod 777 /usr/local/bin/chfs /bin/sh -c 'chfs --path="/mnt/sda4/chfs" --log="/var/log/chfs.log" --port=8080 --rule=":::share:r|admin:pass:rwd:hua_dir:rw|ying:pass::ying_dir:rw|upload:pass::upload:rw"' cat << EOF |tee /etc/systemd/system/chfs.service [Unit] Description=chfs Wants=network-online.target After=network-online.target [Service] Type=simple Environment=password=passw0rd ExecStart=/bin/sh -c 'chfs --path="/mnt/sda4/chfs" --log="/var/log/chfs.log" --port=8080 --rule=":::share:r|admin:pass:rwd:hua_dir:rw|ying:pass::ying_dir:rw|upload:pass::upload:rw"' Restart=always [Install] WantedBy=multi-user.target EOF #Windows client supports raidrive webdev client - http://192.168.99.194:8080/webdav
x220t不支持tpm不能安装win11,要想安装win11的话,可以在 Windows 11 安装界面按 Shift + F10 打开命令行界面,执行如下命令:
REG ADD HKLM\SYSTEM\Setup\LabConfig /v BypassTPMCheck /t REG_DWORD /d 1
REG ADD HKLM\SYSTEM\Setup\LabConfig /v BypassSecureBootCheck /t REG_DWORD /d 1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。