以前找資料的時候都是英文文件,現在意外發現已經有社群建立繁體中文的文件,這樣查資料速度會快一些。
分類: 未分類
Ubuntu 20.04 Failed to Change Password while Using cloud-init
Cloud-Init should allow you to modify password after first time login. But if SSH closed while changing password:
WARNING: Your password has expired. You must change your password now and login again! Changing password for ubuntu. Current password: passwd: Authentication token manipulation error passwd: password unchanged Connection to 192.168.0.102 closed.
There might be Cloud-Init issue in older version.
There is a workaround to by-pass force passwd. Find /boot/firmware/user-data
in the boot partition, then you will see options:
# On first boot, set the (default) ubuntu user's password to "ubuntu" and # expire user passwords chpasswd: expire: true list: - ubuntu:ubuntu
Update expire to false if you do not want to change password in first login. Or create your own username/password
in list
if expire
is not work.
Please notice that device is not safe using default user name and password. Change it after you connect to the device.
Google Chrome 大量使用 CPU 運算資源
近期注意到 Google Chrome 瀏覽器大量使用 CPU,但即使將分頁關閉也沒辦法降低 CPU 使用量。後來看到暗黑執行緒提到是 Chrome 在掃描惡意程式。開 monitor 確認有大量 disk I/O 且防毒軟體也跟著在跑,照著說明設定後問題確認解決。
先開啟瀏覽器「設定 => 重設與清理 => 清理電腦」(或輸入網址 chrome://settings/cleanup
開啟設定頁面),會看到 Google Chrome 支援「尋找有害軟體」的功能,此功能會掃描電腦上潛在的惡意程式,因此會造成電腦很卡:

取消勾選此功能,再重新啟動 Google Chrome 應可改善問題。
若上面步驟仍無法解決問題,則需手動修改 Google Chrome 掃描工具坔執行檔名稱 (建議備份)。使用檔案總管開啟路徑:
C:\Users\{{使用者名稱}}\AppData\Local\Google\Chrome\User Data\SwReporter\{{版本號碼}}\
開啟資料夾後會看到執行檔 software_reporter_tool.exe
,更改檔案名稱即可。
備註:不管使用上述掃描工具、防毒軟體或 Windows 內建的惡意程式掃描工具,請確保最少有一項工具執行偵測,以免造成更大損失。
SSH 發送指令至遠端主機發生 terminal error
若不想開啟 teminal 而只想透過 SSH 擷取 remote server 的指令執行結果,可以直接這樣做:
ssh user@your.domain \ ls /var/run/reboot*
不過有些指令會使用 TTY 繪製圖形、顯示特定格式,這時就會出現錯誤訊息:
Error opening terminal: unknown.
例如我在 remote server 執行 watch
指令就會遇到這個錯誤。
已知可以透過參數 -t
來解決這個問題:
ssh -t user@your.domain \ watch -n 2 tail /var/log/kern.log
在 Linux 上用 mdadm 建立磁碟陣列 (RAID)
手上已有一台現成的 NAS,不過自己從頭跑一次才會知道細節。
格式化磁碟
其實使用 mdadm 建立磁碟陣列之前,並不一定需要先建立磁碟分割區,也可以直接使用整顆硬碟直接做。二種作法僅有些微差異,詳細內容可以參考 kernal.org 的討論。
假設除了基本硬碟 sda
以外,其他還有 sdb1
、sdc1
、sdd1
、sde1
、sdf1
、sdg1
共 6 個分割區要格式化為 ext4
,一個方法是 mkfs.ext4
一個一個硬碟慢慢來,另一個是寫 script 自動處理。以下範例是除了 sda
以外的所有分割區都格式化為 ext4
:
# 沒看懂前不要複製貼上,很危險 for DEV in $(ls sd*1 | grep -v sda); do yes y | sudo mkfs.ext4 $DEV done
建立 RAID
東西準備好以後,就可以換 mdadm
上場了。
建立新的 RAID 用的是參數 --create
,指令大致如下:
mdadm --create /dev/md/md0 \ --level=6 \ --raid-devices=6 \ /dev/sd[bcdefg]1
- /dev/md/md0:磁碟陣列建立以後欲使用的 device name。除了 md0 以外,也可以用
md_home
等較為易懂的方式命名。 --level
:要使用什麼類型的磁碟陣列。RAID 1 (mirror) 就給--level=1
;RAID 6 就給--level=6
--raid-devices
:這個磁碟陣列總用要用幾個 device 來建立。由於建立 RAID 時,不一定一次就要給足硬碟,所以這個參數要給正確。/dev/sdX
:要用來建立 RAID 的硬碟、或磁碟分割。把 device ID 當作參數一個一個補齊 (範例是偷懶的寫法)
如果一切正常,就不會顯示錯誤訊息,且可以透過 /proc/mdstat
來檢視 RAID 建立的進度:
.... Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md/md-main started. $ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md127 : active raid6 sdg1[5] sdf1[4] sde1[3] sdd1[2] sdc1[1] sdb1[0] 121024512 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU] [=>...................] resync = 5.2% (1573464/30256128) finish=88.5min speed=5397K/sec unused devices: <none>
RAID 建立完成後,會在 /dev 變成一個 device,把 RAID 的資訊寫入 mdadm.conf 設定檔中:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
在 mount 之前,記得先用 mkfs 格式化。
一切都順利的話,可以在 /dev/disk/by-uuid 看到新的 UUID,接著就可以使用一般的方式去 fstab 設定自動掛載的資料了。
參考資料:A guide to mdadm – Linux Raid Wiki
刪除 RAID
步驟為:停止 RAID => 刪除 RAID。
使用 --stop
來停止、umount RAID md0
:
mdadm --stop /dev/md/md0
mdadm 會在硬碟中寫入 metadata 來識別資訊,可以使用 lsblk
看出來:
$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT NAME SIZE FSTYPE TYPE MOUNTPOINT loop0 60.7M squashfs loop /snap/lxd/21843 .... sda 238.5G disk ├─sda1 60G btrfs part /var/lib └─sda2 178.5G btrfs part sdb 28.9G linux_raid_member disk sdc 28.9G linux_raid_member disk sdd 28.9G linux_raid_member disk sde 28.9G linux_raid_member disk sdf 28.9G linux_raid_member disk sdg 28.9G linux_raid_member disk
接下來使用 --zero-superblock
來把 metadata 清乾淨:
mdadm --zero-superblock /dev/sd[bcdefg]1
最後再用 lsblk
確定一次,只要沒有出現 linux_raid_member
就可以放心將硬體資源挪作他用了。