顯示具有 Linux 標籤的文章。 顯示所有文章
顯示具有 Linux 標籤的文章。 顯示所有文章

2024-01-17

新安裝 Debian 12(Bookworm)之後的調整

2023-03-03

Linux 上用 Solaar 連接羅技的 Unifying 滑鼠或鍵盤

在 Debian Linux 上可以使用 Solaar 來管理羅技的 Unifying 滑鼠或鍵盤,可以透過「管理/軟體」搜尋 Solaar 並安裝,也可以透過指令:「sudo apt install solaar」來安裝。

啟動 Solaar 後按照畫面指示插拔接受器,並與滑鼠或鍵盤配對即可。

配對之後,滑鼠的選項中有個「Scroll Wheel HID++ Scrolling」不要勾,不然中間的滾輪會失效。

2021-10-03

修正 mdadm: No arrays found in config file or automatically 錯誤

前言

最近因為 VirtualBox 的 VM 硬碟空間不夠了,調整 VDI 檔容量之後,利用 GParted 將硬碟分區重新調整一下,原本的硬碟分區規畫為:

/dev/sda1    /
/dev/sda5    swap
其中的 swap 是在 logical partition 裡的,但是我後來調整為
/dev/sda1	/
/dev/sda2	swap
也就是移除了 logical partition,新增一個 primary partition 做為 swap。也就是這個動作使得 swap 磁碟分區的 UUID 改變了,於是開機時出現了以下的錯誤訊息:
mdadm: No arrays found in config file or automatically
同時 swap 也不見了(當然!),因為在 /etc/fstab 中記載的 UUID 找不到了。

釐清了錯誤發生原因,解決問題的方法就簡單分成三個步驟:

  1. 找出現有 Partition 的 UUID
  2. 更新 /etc/fstab 中的 UUID
  3. 更新 initramfs 和 GRUB 的設定
列出各 Partition 的 UUID
sudo blkid -o list
輸出的結果是如下很整齊的表格形式

更新 /etc/fstab 中的 UUID

將原本 /etc/fstab 中的 SWAP 磁區 UUID 改成正確的。

更新 initramfs 和 GRUB 的設定
update-initramfs -u
update-grub
完成之後重開機,在開機過程中就沒看到錯誤訊息,swap 也有 mount 上了。


參考網址:

2021-03-13

將 XFCE 改造成 Mac 外觀

 

在 Reddit 的 Linux Mint 板看到一張 screenshot,覺得介面很乾淨,作者說是參考影片 Customize Your Xfce Desktop Look Like MacOS Big Sur 做出來的,但是有改了些許步驟。


 


 


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-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

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 資料庫被鎖的問題)

2020-04-07

Hyper-V 搬移硬碟

使用 Hyper-V 建立虛擬機器後,如果想要複製機器可以使用匯出/匯入的方式,匯出/匯入亦可透過 Power Shell 操作,或者想先建立一個 Base machine,之後利用 Base machine 快速建立其他機器時,亦可利用匯出/匯入的功能。

匯入的類型選擇第三種「複製虛擬機器(建立新的唯一識別碼)」,存放虛擬機器的資料夾必須和原來的不同。匯出時會連同檢查點一起匯出,不是單純的把虛擬硬碟匯出。




兩個需求


  • Base 和其他後來建立機器的映像檔放在同一個資料夾
  • Base 映像檔已經合併了所有的檢查點( 快照,Snapshot)
匯入 base 的機器時,虛擬機器的硬碟(vhdx 檔)檔名仍和原來的一樣,因此必須指定另一個資料夾,不符合我第 1 個需求。在匯入時如果之前做過快照,會連同檢查點的檔案一起匯入,而 Hyper-V 的檢查點是種差異磁碟,如果將最早的 vhdx 檔改名直接複製,則中間做過的系統更新就會消失。

那要如何同時滿足這兩個需求呢?後來在 [如何手動還原 Hyper-V 的 VM 與 Snapshots 到另一台主機] 找到將 Snapshot 合併回父 vhdx 的方法,同時又可以指定新檔名的方法,這樣就能直接建立一台新的虛擬機器,並指定 vhdx 檔做為硬碟。


合併 Snapshot 並指定新檔名

  1. 選取編輯磁碟便會啟動編輯磁碟精靈
  2. 選取最新的 avhdx 檔,或是想要合併的檢查點
  3. 選擇合併
  4. 合併至新的虛擬硬碟並指定檔名
  5. 建立新的虛擬機器,並連接新的虛擬硬碟
  6. 在虛擬機器列表中便可看到新舊機器


CentOS 啟動網路

我的 Base 是 CentOS 8,在建立新虛擬機器後,遇到沒有網路的問題,以下是啟動網路的方法。
  1. 用 ifconfig 指令查看網路,如果沒有就先看一下 /sbin/ 底下有沒有 ifconfig,再沒有就安裝 net-tools
     
    # 安裝 net-tools
    sudo dnf install net-tools
    
  2. 啟動網路,我的是 eth0,就輸入以下指令
     
    sudo ifup eth0
  3. 如果希望開機便自動啟動網路,修改檔案 /etc/sysconfig/network-scripts/ifcfg-eth0,將 ONBOOT=no 改為ONBOOT=yes


利用差異磁碟可節省實際硬碟空間

將父磁碟設為唯讀,新增子磁碟為「差異磁碟」,在建立新虛擬機器時連接至子磁碟,這樣可以節省硬碟空間,不過一旦虛擬機器太多時,父磁碟將成為效能瓶頸。

參考網頁


  1. Day-12 Hyper-V 3.0實戰之-另一種備份的方式(匯出匯入虛擬機器)
  2. [Hyper-V]如何在Hyper-V 3.0上進行虛擬主機的複製
  3. 如何手動還原 Hyper-V 的 VM 與 Snapshots 到另一台主機
  4. Linux CentOS Network unreachable 處理解決方式
  5. [HyperV] 差異磁碟

2020-03-29

解決總是出現「請輸入解鎖登入鑰匙圈的密碼」提示訊息的困擾

使用 Chromium 時,每次都會出現「請輸入解鎖登入鑰匙圈的密碼」的提示訊窗,透過 Google 查詢後,得到的總是 Ubuntu Linux 系統上的解決方法,首先要開啟「密碼及加密金鑰」這個程式,但在 Manjaro Linux 上就是找不到,在 Pacman 中搜尋關鍵字「password」也沒有。

Seahorse 就是「密碼及加密金鑰」

從英文網頁中知道要安裝 Seahorse 這個程式,但它的名字實在和密碼不相關,於是遲遲不敢安裝,最近大著膽子給它裝下去了,發現原來它就是尋找許久的「密碼及加密金鑰」。

之後就照著 google 到的方法做就好。



參考網頁:
  1. Mint 18 啟動 Chromium 會要求「輸入預設鑰匙圈的密碼」解決方法
  2. Ubuntu如何設定Chrome不彈出輸入密碼對話框

2020-03-23

Manjaro Linux 安裝後的調整

因為硬碟排線故障致使我誤以為硬碟壞掉而買了一顆新的硬碟,在重灌系統的過程時,想說應該要紀錄一下安裝後的調整,以便日後能迅速地設定成自己順手的樣子。


設定 Locale

  1. 查看目前系統使用的 locale
    locale
    
  2. 列出已經安裝生成的語系
    locale -a
    
  3. 切換語系到 zh_TW.UTF-8
    sudo localectl set-locale LANG=zh_TW.UTF-8 
    
  4. 如果想要換的 locale 還沒有生成,先編輯 /etc/locale.gen 取消註解之後,執行以下指令生成
    sudo locale-gen
    

 

 安裝並設定輸入法 fcitx

  1. 安裝 fcitx
    sudo pacman -Syu fcitx-gtk2 fcitx-gtk3 fcitx-qt5 fcitx-table-extra fcitx-configtool fcitx-chewing
    
  2. 編輯 ~/.profile 檔,內容如下,可先將舊檔改名留存,之後要重開機
    export QT_IM_MODULE=fcitx
    export GTK_IM_MODULE=fcitx
    export XMODIFIERS="@im=fcitx"
    
  3. 新增鍵盤輸入法為嘸蝦米(boshiamy),並進行細部設定
  4. 參考網址: Chakra Linux 安裝 Fcitx 中文輸入法教學

 

同步 Linux 與 Windows 的時間認定

  1. Linux 下原本是將 BIOS 時間認定成 UTC+0,要查看原來的設定可以輸入以下指令:
    timedatectl | grep local
    
    會看如下的結果
    RTC in local TZ: no
    
  2. 想讓 Linux 使用本地時間,指令如下:
    sudo timedatectl set-local-rtc 1 --adjust-system-clock 
  3. 設定裡頭的「時間與日期」也可以達到同樣的效果

 

設定右下角時鐘顯示格式

  1. 滑鼠右鍵點擊右下角的時鐘後,選擇「設定組態」
  2. 在「設定組態」裡選擇「使用自訂日期格式」並在「日期格式」欄中輸入
    %Y-%m-%d %n %H:%M:%S
    

 

安裝常用的軟體

  1. Chromium、TeXLive、noto-fonts-cjk、VS Code、Notepad ++、Seahorse
  2. pacman -Syu texlive-bin texlive-core texlive-latexextra texlive-langchinese texlive-science texlive-pictures seahorse



2020-01-30

Windows 10 更新後,開機出現 grub rescue

最近更新 Windows 10 到 1909 版本,但在更新之後重開機卻進入 grub rescue,這個情形已經不是第一次發生了,有必要做個筆記以防之後再次發生。

步驟上跟參考網址的第1篇大致相同,但在 insmod normal 之後還是不能進入作業系統,所以以下按照我的電腦實際狀況寫一遍解決流程:

  1. 利用 ls 指令查詢磁區情形
  2. 逐一以 ls 看能不能查詢,我的是 Linux 磁區是 (hd0,msdos3),輸入 ls (hd0,msdos3) 之後會顯示 filesystem 是 XFS,其餘的磁區則是 unknown。
  3.  
    ls (hd0,msdos3)
     
  4. set 指令查詢現在的 prefix 和 root 設定值
  5. 利用 set 指令將 prefix 和 root 改為正確的磁區
  6.  
    set root=(hd0,msdos3)
    set prefix=(hd0,msdos3)/boot/grub
     
  7. 切換到 normal 模式
  8. insmod normal
    normal
    
  9. 之後開始和參考網址的內容不同,我選擇 Windows 10 和 Linux 都無法進入作業系統。移動光條到 Linux 選項式後,輸入「e」編輯內容,發現其中的 root 磁區和實際的情形不同,將其改為正確的 (hd0,msdos3) 之後即可開機進入 Linux
  10. 安裝 GRUB,我的開機磁碟是 /dev/sda
  11. sudo grub-install /dev/sda
    
  12. 更新 GRUB 選單
  13. sudo grub-update
    

參考網址:
  1. 雙系統升級 Windows 10 後造成 ubuntu 開機進入 grub rescue
  2. 升級Windows 10 grub開機選單修復
  3. [archlinux+win10]win10 更新,進入grub rescue??
  4. ArchWiki GRUB(正體中文)                    

2020-01-07

Manjaro Linux 為 VirtualBox 的 Guest OS 時的調整

安裝 VirtualBox Guest Addition

  1. 在 VM 選單的「裝置」中選取「插入 Guest Additon CD 映像」
  2. 加入映像檔之後會自動執行安裝,如果沒有自動執行那就自己執行 VBoxLinuxAdditions.run
    ./VBoxLinuxAdditions.run
  3. 然後重新開機即可

安裝 VirtualBox Extension Pack

  1. 安裝 VirtualBox Extension Pack,之後可以支援 USB 2.0
    pamac build virtualbox-ext-oracle
    
  2. 將自己的帳號加到 Vboxusers 使用者群組
    sudo gpasswd -a $USER vboxusers
    
  3. 登出後再登入,設定就會生效,如果不想登出,則可以使用下列指令
    sudo modprobe vboxguest vboxvideo vboxsf
    sudo systemctl enable --now vboxservice.service
    


參考資料:Manjaro Wiki - VirtualBox

Manjaro Linux 更新 Mirror list

最近在 VirtualBox 上安裝 Manjaro Linux 時遇到一個問題:pacman 的設定裡沒有更新套件的 Server。

稍微查詢了一下發現 pacman 的設定檔是在 /etc/pacman.conf,可以將套件的 server 位址寫死在 pacman.conf 裡面,也可以從 /etc/pacman.d/mirrorlists 讀入 server 的位址。

但我發現 /etc/pacman.d/mirrorlists 檔案裡沒有任何 server 的位址,於是參考 Pacman-mirrors 裡的說明,執行下列指令就能自動新增 mirror 站的位址。
 sudo pacman-mirrors --country Taiwan && sudo pacman -Syyu

其中 sudo pacman -Syyu 是同步資料庫並且更新系統。

參考資料:Pacman-mirrors

2019-02-25

設定 VirtualBox 的共用資料夾,以 Manjaro Linux 為 Guest OS


  1. 查詢目前 Kernel 的版本
  2. uname -r
  3. 安裝下列套件,其中 xxx 是前步驟查到的 Kernel 版本編號,如我目前安裝的是 4.19.24-1.MANJARO,則 xxx = 419
  4. virtualbox-guest-dkms
    virtualbox-guest-utils
    linux-headers-virtual
    linux-headers-xxx
  5. 將使用者加入 vboxsf 群組,編輯 /etc/group 並在 vboxsf 最後一個冒號加上使用者帳號
  6. 安裝 Guest Additions
    • 在 VirtualBox 中插入 Guest Additions CD 映象,會自動掛載到 /run/media/user-name/ 底下
    • 進入該目錄後執行安裝指令
      sudo ./VBoxLinuxAdditions.run
  7. 在 VirtualBox 中設定共用資料夾後重新開機

參考網址:

2019-02-10

Fedora 上讀寫 exFAT 格式的隨身碟

  1. 設定 RPM Fusion Repository
  2. sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
  3. 安裝 exfat-utils 及 fuse-exfat 套件
  4. sudo dnf install exfat-utils fuse-exfat
  5. 插入 USB 隨身碟即會自動掛載 USB 隨身碟,如果沒有自動掛載,可利用下面指令掛載:
    1. 建立 USB 隨身碟掛載點
    2. sudo mkdir /mnt/usb
    3. 查詢 USB 隨身碟所在,可利用磁區大小判斷何者為隨身碟
    4. lsblk
    5. 掛載 USB 隨身碟
    6. sudo mount -v -t auto /dev/sdX /mnt/usb

參考網址:
Installing Free and Nonfree Repositories
教學:在 Fedora 上面讀寫 exFAT 格式硬碟

2018-11-14

Fedora 28 升級到 Fedora 29

Fedora 29 已經發布,從 Fedora 28 升級到 Fedora 29 須經四個步驟,分別是:
  1. 更新原系統上已安裝的軟體
  2.  sudo dnf upgrade --refresh 
  3. 安裝 DNF plugin
  4.  sudo dnf install dnf-plugin-system-upgrade 
  5. 透過 DNF 更新系統
  6.  sudo dnf system-upgrade download --releasever=29 
  7. 升級並重開機
  8.  sudo dnf system-upgrade reboot 
  9. 如果升級之後發生問題,可以參考 Resolving post-upgrade issues
參考網址:Upgrading Fedora 28 to Fedora 29

2018-08-28

移除使用者的密碼

如果直接以 user_account 的身份執行「passwd -d user_account」會移除密碼但也會停用該帳號,正確的作法應該是:

  1. sudo visudo 將該帳號 user_account 加入 NOPASSWD
  2.  user_account ALL=(ALL) NOPASSWD:ALL 
  3. 再以 user_account 身份執行
    sudo passwd -d `whoami`
    即可。


參考資料:https://askubuntu.com/questions/281074/can-i-set-my-user-account-to-have-no-password