2021-03-13

Manjaro Linux 更新 GRUB 後無法抓到 Windows

最近 GRUB2 因為安全性的關係需要更新到最新的版本,但更新之後原本的多重開機選單就會失效,抓不到原本安裝的 Windows 了,搜尋了一下原來並不是只有我這樣,而 Manjaro Linux 的公告[Stable Update] 2021-03-08- Kernels, Plasma 5.21.2, Haskell, Kodi, Grub, KDE-Dev裡就有寫怎麼解決這個問題了。

  • Grub got some needed security updates 65. Note that os-prober is now disabled by default for security reasons: broken patch 40; fixed patch 61. More infos about it here 176. To restore the old behavior, open a terminal and issue sudo echo GRUB_DISABLE_OS_PROBER=false >> /etc/default/grub && sudo update-grub

如想恢復開機選單,要在 /etc/default/grub 裡加入一行

 GRUB_DISABLE_OS_PROBER=false 
之後執行
 sudo update-grub 
後就好了。

2021-03-06

好看的 VS Code icon

最近在看 JustDjango 的《Getting Started With Django Tutorial // Build a CRM》,覺得他用的 VS Code icon 很好看,所以也安裝來使用。

他用的是 Material Icon Theme,這邊做個紀錄才不用一直去翻影片。

2021-02-23

Debian buster 使用 backports 的 Linux kernel

 紀錄一下如何安裝 backports 的新版 Linux Kernel,stable 的 Kernel 比較舊,有時候不支援新一點的硬體,就要換成新版的 Kernel 才可能支援。

  1. 新增 backports 到 source.list,並更新資料庫
  2.  echo deb http://deb.debian.org/debian buster-backports main contrib non-free | sudo tee /etc/apt/sources.list.d/buster-backports.list
     sudo apt update 
  3. 安裝 Linux Kernel 及韌體
  4.  sudo apt install -t buster-backports linux-image-amd64 firmware-linux firmware-linux-nonfree

參考網址:How to upgrade the Debian 10 kernel from backports without recompiling it from scratch

2021-02-09

改變 Visual Studio Code 程式碼顏色配置

一直都想為 Visual Studio Code 換個程式碼色彩提示佈景,但在選單中又找不到怎麼改,現在才發奮要查出來怎麼換,同時也找到了一個喜歡的色彩佈景。

從  [檔案] 選單中的 [喜好設定] 選擇 [色彩佈景主題],快速鍵是「Ctrl+K, Ctrl+T」,就會看到幾個內建的色彩佈景主題,如果這裡面沒有喜歡的,也能再到延伸模組裡找。

幸運地找到一款叫做「Dark+ Material」的色彩佈景主題,某些關鍵字會比較亮,讓我更加專注避免錯誤。

2020-06-02

Fedora Linux 上使用 ddclient 更新動態 DNS

我想在 Linux 上使用 no-ip 的動態 DNS 服務,但我一直無法使用官方的 DUC,之後發現 ddclient 這支軟體可以更新許多免費動態 DNS 的服務,於是試著用 ddclient 來更新 no-ip。

安裝 ddclient

sudo dnf install ddclient

修改 /etc/ddclient.conf

ddclient.conf 裡已經準備好許多動態 DNS 服務所需的設定,但沒有給 no-ip 用的,所以請自行加入以下這段
## No-IP
protocol=noip
use=web, web=checkip.dyndns.com/
server=dynupdate.no-ip.com
login=no-ip 的帳號
password='no-ip 的密碼' 
no-ip.domain   # 在 no-ip 申請的域名

執行 ddclient

sudo ddclient

可以登入 no-ip 的網站,去看看所設定的域名 IP 有沒有更新,可能不會馬上更新要等一下。

參考網頁:
  1. 使用 ddclient 更新 No-IP

Linux 上移除 No-IP 的 Dynamic DNS Update Client

no-ip 是個提供動態 DNS 服務的網站,在 Windows 環境下可以安裝它的 Dynamic DNS Update Client(DUC) for Windows 來更新域名對應的 IP。no-ip 也有提供 Linux 下的 Dynamic DNS Update Client,目前是 2.1.9 ,也有安裝及使用的教學

照著官方的教學安裝時,遇到「make: not founded」的訊息,在 Fedora Linux 下使用以下的指令就能安裝 make
sudo dnf group install "Development Tools"
之後照著官方教學即可。

問題來了,官方的 DUC 不能使用,所以我想將它移除,找了一下終於知道要怎麼移除了,先在 no-ip.2.1.9-1/Makefile 最後面加上以下這段
uninstall: ${TGT}
        rm ${BINDIR}/${TGT}
        rm ${CONFDIR}/no-ip2.conf
要注意 rm 前的空白是 Tab 造成的不是空格,如果使用空格會有錯誤。

之後 cd/usr/local/src/no-ip.2.1.9-1/ 執行
sudo make uninstall
sudo remove
就能移除 DUC 了。

參考網頁:
  1. How to Install the Dynamic Update Client on Linux
  2. How to uninstall noip-duc

Linux 自動網路校時

在 Hyper-V 虛擬機器上設定了 crontab 卻不會執行,後來發現不是 cron 的問題,而是虛擬機器的時鐘變慢了,導致 cron 不會按時執行。我的解決方法是利用網路校時,並且排進 crontab 每 30 分鐘就校時一次。

網路校時的指令是
sudo ntpdate time.stdtime.gov.tw
選用的 NTP 伺服器是 time.stdtime.gov.tw。接著將正確時間寫入硬體時鐘
sudo hwclock -w

利用 crontab 定期校時
*/30 * * * * root (/usr/sbin/ntpdate time.stdtime.gov.tw && /sbin/hwclock -w) &> /dev/null

原先我是設定每 6 小時校時一次,沒想到過了一晚再看虛擬機器裡的時鐘竟然慢了 12 小時,只好改成每 30 分鐘就校時一次,希望能有所改善。

在查資料的時候,才發現原來 Hyper-V 本身就有讓 VM 與 Host 對時的服務,但我不知道為什麼我的電腦上沒有作用。可能是因為語系的關係,查詢有開啟「時間同步化」服務的 VM 的 powershell script 要改成如下:
Get-VMIntegrationService -VMName * | Where {$_.Name -eq '時間同步化'} | Select-Object VMName, Name, Enabled


參考網址:
  1. Linux 設定 crontab 例行性工作排程教學與範例
  2. Linux 設定 NTP 同步系統時間,自動網路校時教學
  3. How To Fix Hyper-V Clock Skew Issues

2020-05-29

Linux 掛載 Windows 的網路芳鄰

Linux 要使用 Windows 分享出來的網路芳鄰的時候,需要將該共用的資料夾掛載到 Linux 上,利用
 
sudo mount -t cifs //xxx.xxx.xxx.xxx/share_folder /Linux/mount_point -o username=USER_NAME,password=PASSWORD
可以直接將 Windows 的共用資料夾掛載起來。也可以寫在 /etc/fstab 裡,一開機就自動掛載,但如果 Windows 當機或故障了,在 Linux 才可能產生連帶問題,可以透過 autofs 套件可以在用到網路芳鄰的時候,自動掛載資源到指定的資料夾,比直接寫在 /etc/fstab 裡還好。

我的 Host OS 是 WINDOWS,利用 Hyper-V 建立以 Fedora Linux 32 為 Guest OS 的虛擬機器,如果使用其他 Distro. 只有在安裝套件時會稍稍不同,設定檔的寫法則是一樣的。

  1. 安裝 autofs 和 cifs.utils套件
  2. sudo dnf install autofs cifs.utils
    
  3. 建立認證用的帳號密碼文件,我放在 /home/User_Name/.secret.txt,中間不能有空白
  4. # /home/User_Name/.secret.txt
    username=USER_NAME_in_WINDOWS
    password=PASSWORD_of_USER
    
    將 .secret.txt 的權限改成 600(rw-------)
    chmod 600 /home/User_Name/.secret.txt
    
  5. 先在 /etc/auto.master 新增一筆紀錄如下,表示要將設定檔 /etc/auto.myneighborhood (待建立)中設定的網路芳鄰資源掛載到 /mount_point,而 /mount_point 必須已存在。
  6. # /etc/auto.master
    /mount_point    /etc/auto.myneighborhood
    
  7. 接著新增 /etc/auto.myneighborhood
  8. # /etc/auto.myneighborhood
    folder_name -fstype=cifs,rw,noperm,credentials=/home/User_Name/.secret.txt,uid=User_Name,gid=User_Group,nobrl    ://xxx.xxx.xxx.xxx/share_folder
    
    credentials 後面接認證用的帳號密碼文件,避免直接將帳號、密碼寫在設定檔裡;nobrl 選項可以避免 SQLite 資料庫被鎖起來。
  9. 重新啟動 autofs 服務
  10. sudo systemctl stop autofs.service
    sudo systemctl start autofs.service
    
  11. 「使用」 /home/User_Name/mount_point/folder_name,例如進入 folder_name。
  12. cd /home/User_Name/mount_point/folder_name
    
    當「使用」到 folder_name 時 autofs 才會自動掛載,剛開始不知道,想說為什麼 start autofs.service 以後,ls -l /home/User_Name/mount_point 看不到內容,後來才知道要真的進到該目錄才會真正掛載。
  13. 參考資料:
    1. How to mount remote Windows shares
    2. Samba Client CentOS 使用 Windows 網芳磁碟設定
    3. Linux systemd 系統服務管理基礎教學與範例
    4. 將sqlite放在windows-share上跨平台使用 (提到的 nobrl 參數解決了 SQLite 資料庫被鎖的問題)