Win 10 UEFI + Ubuntu 18.04 UEFI 双系统 (by quqi99)
問題
本人昨天買了一塊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設置
在BIOS中將Boot Mode設置為UEFI Only, 如果有Secure Boot選項還要disable它(不做這一步可能會造成按F12鍵之后無法找到U盤)
注: 改成UEFI only之后, 運行雙系統, 四系統都沒問題, 但后來進不了U盤的livecd, 報: couldn’t get UEFI db list, 所以只得改回Both, 但UEFI優先.
安裝win10
- 下載大白菜UEFI專版 - http://www.bigbaicai.com/download.html?down2 (20210321更新,注:目前已沒有UEFI專版,下載普通版即可。使用大白菜一般只能通過ghost iso安裝,選擇msdn iso原版時總是說無法選擇iso,原版iso可以通過ultraiso寫入usb即可。當然大白菜也提供了PE工具箱)
- 下載win10 ghost - axel -n 10 http://xz.win10cjb.com/18.5/win10_64/DEEP_Win10x64_201805.rar
- 制作大白菜啟動U盤, 如果界面上有UEFI字眼就點上(不記得了, 有就點上), 還要注意一點, 記得點里面的格式轉換, 將FAT32格式(HDD-FAT32)轉換成NTFS(HDD-NTFS)轉換, 否則HDD-FAT32格式不能拷貝大于4G的ghost文件哦,
- 按F12選U盤啟動進入大白菜后, 用DiskGenius工具重新分區, 必須將BIOS+MBR格式轉UEFI+GPT格式. 分區表格式為GUID而不是MBR, window上管EFI分區叫ESP/MSR分區
- 注意, 不要修改推薦的卷標, 這個卷就是指向的ESP/MSR分區.
安裝win10后
安裝win10后需要將禁用掉快速啟動, 否則會造成按F12無法選擇U盤啟動. 菜單路徑為: “設置 -> 系統 -> 電源與睡眠 -> 其他電源設置 -> 選擇電源按鈕的功能 -> 更改當前不可用的設置 -> 啟動快速啟動”
安裝ubuntu 18.04
像安裝win10一樣, 一樣要注意重要一點, 需創建大概300M左右的UEF分區, 另外, 還可以創建一個根分區和一個備份文件用的bak分區.
注意, windows非常霸道, 它是總修改bios里的啟動順序, 將它的"Windows boot Manager"放在"ubuntu grub"的前面, 可以在bios里鎖定啟動順序
安裝win7
win7若沒有sata的驅動, 所以得先改回IDE, 裝完win7之后再改回AHCI, 否則也容易掛在啟動界面不動了.
注: 我未遇到以上問題, 可能因為我裝的win7并不是原版的, 已經帶了sata驅動
加裝SSD
如果加裝了SSD之后呢? 那得注意:
- 裝win10時同樣需要進大白菜或老毛桃后用DiskGenius在SSD上劃分ESP/MSR分區
- 裝ubuntu時, 分區處也要創建EFI分區, 同時grub設置安裝在SSD上, 相當于: grub-install /dev/sdX.
- bios里選擇哪塊硬盤啟動. 其實在SSD上安裝grub后, 這個grub會連HDD上原先的win10與ubuntu一起放在啟動列表里. 注意, windows非常霸道, 它是總修改bios里的啟動順序, 將它的"Windows boot Manager"放在"ubuntu grub"的前面, 可以在bios里鎖定啟動順序
- 有時候需要對ssd優化, 例如不要將swap分區放在ssd以延長壽命, 如更改i/o調度策略為noop, 如使用bcache
問題
裝完之后進入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分區的步驟. 現在將精力集中在如何快速遷移根分區上.
- 目的機x220t因為有寫操作, 故要以livecd啟動, 啟動ssh server, 并將根分區加載到/mnt
- 源機t440p只有讀操作故不需要以livecd啟動. 但如果以livecd啟動的話, 未加載根分區所依賴的分區如/bak分區, 此時如果又沒掛載/bak分區的話, rsync命令遷移一些指向/bak分區的軟鏈時會報錯退出. 人工刪除該軟鏈重新運行即可. 且需要注意 rsync命令中的/mnt/后應該有/, 否則會將mnt目錄遷移到根分區的mnt目錄下.
- 可選, 如果之前沒有備份/mnt/boot/grub/grub.cfg, 這時也可以重新生成. 更新grub, 此時會報"canot find EFI directory", 這樣會導致這時生成grub時無法找到原HDD中的雙系統, 不要緊, 只要找到目前SSD中的雙系統即可. 呆會下一步再運行一下grub命令即可解決
- 可選, 如果之前沒有備份/mnt/etc/fstab, 這時也可以重新生成. 修復fstab, 之前運行上述遷移命令前忘了備份x220t上的fstab系統, 導致它被覆蓋, OK, 我們修復它.
- 這時重啟系統, 就可以以grub選擇啟動SSD上的雙系統了, 如果還想把HDD的原有的雙系統也加到grub的話, 那進ubuntu系統后再執行一次update-grub命令即可.
- 這種遷移方式效果非常好, 一個rsync命令搞定, 各種工作軟件不需要再重裝了. 呵呵
bcache
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-rbdStage 2, check network between compute node and the nodes which store test RBD’s primary or replicas This can be done by iperfStage 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兩個參數:
- sequential_cutoff默認為4k, 就是大于4k的就是繞開NVME直接往HDD寫, 為0就是disable這個特性。所以這個要設置為0, 不然IO性能會很差。
- 另外bcache的cache_available_percent(/sys/block/bcache0/bcache/cache/cache_available_percent)來看bacache的ssd/cache是不是被寫滿了,被寫滿了IO(沒寫時是100,降到30就差不多快滿了)會直接寫backing HDD,這樣IO會很慢。
恢復bak分區
bak分區存放數據, 由bcache加速
rsync -xavP --numeric-ids --exclude='images' /bak/ root@192.168.99.128:/bak/調整分區
一個分區不夠用時, 可以使用gpartd合并相鄰的空閑分區.注意一點, 要合并的分區必須是umount狀態時才能合并.
SSD優化
# 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/secTiming 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: PASSED20200808更新
為什么新電腦think x1 yoga這次又要安裝雙系統,那是因為win10上的cmder似乎丟失鍵盤按鍵, 見:https://github.com/cmderdev/cmder/issues/258
與: https://blog.csdn.net/quqi99/article/details/105598417
需關閉win10上的硬盤加密功能:
另外,用ubuntu上的Startup Disk Creation創建u盤啟動盤時總不好使,后來證明是U盤質量問題.
目前ubuntu 20.4還遇到一個尚未解決的問題,鎖屏時敲密碼hang在那兒,日志似乎是:
20210321更新 - 安裝工控機
今天買了一個典籍的工控機,安裝win10時遇到如下問題:
- 正常情況是按F2進BIOS
- 但使用大白菜通過Ghost安裝一個win10之后,無法進入BIOS
- 在win10中禁用快速啟動后仍然無法進入BIOS
- 原來典籍現在默認的是UEFI而不是BIOS,win10對BIOS和UEFI都做了手腳,對于BIOS是禁用快速啟動可按F2進BIOS,但對于win10是啟動win10后再按shift不動再點擊restart,這樣再進入UEFI (也可在啟動win10后在setting中搜索UEFI進入)。那問題來了,BIOS是可以設置來電啟動的,現在使用UEFI如何設置此功能呢?
- 如果刪除win10之后,就再也沒有鍵進入UEFI了,這時可以使用F11來選擇usb或者進入UEFI
- 從msdn下載的iso不是ghost,可通過UltraISO寫入U盤中。密鑰可通過skms + slmgr注冊. 我們這里使用原版的iso (只是通過大白菜分區了)
- 但是在安裝win10選擇分區時,報:windows canot be installed to this disk, the selected disk is of the GPT partiton style, 也許是因為用大白菜分區為GPT的原因嗎?
- 于是進UEFI將改成’UEFI only",但這會造成無法識別啟動U盤,只好將"Boot option filter"又改回"UEFI and Legacy",但只是將Storage改為’UEFI only", 但問題依舊。
- 然后在win10分區的界面按"shift + f10", 輸入diskpart, 然后再輸入’list disk’, ‘select disk 0’, ‘clean’, 'convert mbr’這樣會將之前大白菜建的GPT分區全部刪除再轉化成MBR分區。
- 這樣就用msdn原版iso安裝win10成功了。
- 區域設置成US,這樣microsoft store不會閃退(還不能用的話可以reset, 右鍵點擊開始按鈕>運行>輸入wsreset回車,等待彈出的黑色窗口消失后自動打開Microsoft Store再進行使用),同時也可以安裝Your Phone
- 重置網絡 - netsh int ip reset && netsh winsock reset
- hyper-v下安裝android-x86或Bliss OS(更好), 它不是anroid模擬器,而是基于x86的android
20210322更新 - Surface Pro3如何進入USB啟動盤
對于Surface Pro3進入UEFI的方法是,關機,插USB啟動盤,按住音量+鍵再按電源鍵,看到UEFI界面后松音量鍵,在UEFI中關閉可信計算,將啟動順序設置成"USB -> SSD",這樣再Exit UEFI重啟即可進入USB啟動盤。但是實測:
- 大白菜制作的PE + Ghost啟動盤可以進入PE (UEFI格式)
- UltraISO制作的MSDN ISO啟動盤無法進入 (MBR格式)
原因是UltraISO制作的是MBR格式,改為微軟官方的MediaCreationTool20H2工具制作usb啟動盤就OK了(不需要事先下載鏡像,它會通過網絡自動下載,速度還可以)。
要將win10 1909升級到2004的話,直接點擊usb啟動盤或者ISO中中的setup.exe自動升級,升級要注意一點,之前的安裝就應該采用中文版的,現在usb里也得是中文版,這樣升級之前個人數據和應用數據才不會丟。否則,語言不同只能將個人數據留下來。
使用MediaCreationTool20H2是不需要事先下載ISO的,當然如果一定要下載,下面有一個迅雷的鏈接,是win10 2004版 (包括home, pro等):
優化win10
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-810, 打開Hyper-v, NFS, 虛擬機平臺, 適用于Linux的Windows子系統,容器,Telent客戶端,TFTP客戶端等7個特性,在設置的程序里添加這些特性即可。 11, win10打開遠程桌面, Ubuntu上使用Remmina連接RDP桌面。配置Hyper-v
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
20210323更新 - 存儲的安裝
我們并不想使用黑群暉,只是想簡單的將USB存儲掛進win10或者OpenWrt虛機里然后通過rsync同步。
1, 若將USB存儲掛載到虛機,需要先在win10下將該盤脫機。然后hyper-v里添加SCSI控制器就可以添加這塊脫機的硬盤了
但是將磁盤設置為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"。
之后如果在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/sdb16, 另外,通過虛機使用USB硬盤,在USB抽撥之后,openwrt中原sda變成sdb了,導致usb原來的sdb無法加載。所以似乎在虛機里使用容易插撥的USB存儲并不是一個好的選擇。
附 - win10上使用haneWIN
20210829更新:haneWIN速度只在太慢了(只有1M每秒),現在換成使用windows共享文件夾也就是samba的模式(速度大概在15M每秒 )
下面是 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連接它:
在"高級安全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 mountoption enabled '1'option target '/mnt/win_bak'option options 'rw,nolock'option source 'win:/win_bak'option delay '1'config mountoption enabled '1'option target '/mnt/win_share'option options 'rw.nolock'option source 'win:/win_share'option delay '3'config mountoption 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),同時要編輯這個文件先在這個文件的屬性中將權限改成可編輯,然后添加:
最后,在服務中重啟openssh即可,然后就可以通過tftp命令或者winscp來拷貝文件了.若要在外網訪問的話記得添加端口映射.
注意:我之前一直失敗,原因是將G\www\sftp寫錯成了G:\www\tftp,非常難查.
20210323更新 - 裸機安裝
還有一個大問題是,在虛機里運行OpenWrt時,其他機器連接時經常會從br-lan的dhcp拿不到IP,而人工設置了網絡又沒問題。這塊不是很穩定。
第一級路由器(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 0ssh設置:
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/sdb120210716 Update - sshfs + autofs + sshpass
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總結
以上是生活随笔為你收集整理的Win 10 UEFI + Ubuntu 18.04 UEFI 双系统 (by quqi99)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker 精通之微服务
- 下一篇: java 判断数字变化增减_java S