雙系統,更新BIOS後,Xubuntu進不了。 [論壇 - Ubuntu安裝問題]
正在瀏覽:
1 名遊客
回覆: 雙系統,更新BIOS後,Xubuntu進不了。 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
延續上一個「回覆 - #10」提到的
接著來演化「package-install.sh」這個腳本, 把要安裝的軟體列表,提取出來,放在變數裡。 新的「package-install.sh」這個腳本,內容如下,
2022/10/17 11:09
|
||||||||||
![]() |
回覆: 雙系統,更新BIOS後,Xubuntu進不了。 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
延續上一個「回覆 - #11」提到的,
接著來演化「package-install.sh」這個腳本, 新的「package-install.sh」這個腳本,內容如下,
================================================================================ 把要安裝的軟體列表,提取出來,放在另一個檔案「package-list.txt」, 內容如下,
================================================================================ 上面的腳本也可以寫成如下
2022/10/17 11:14
|
||||||||||
![]() |
回覆: 雙系統,更新BIOS後,Xubuntu進不了。 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
延續上一個「回覆 - #12」提到的,
接著來演化「package-install.sh」這個腳本, 將「cat "package-list.txt"」包裝成一個「function」,名稱是「main_package_find_list_raw」, 新的「package-install.sh」這個腳本,內容如下, #!/usr/bin/env bash main_package_find_list_raw () { cat "package-list.txt" } sudo apt-get install $(main_package_find_list_raw)
2022/10/17 11:21
|
||||||||||
![]() |
回覆: 雙系統,更新BIOS後,Xubuntu進不了。 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
延續上一個「回覆 - #13」提到的,
接著來演化「package-install.sh」這個腳本, 要改寫成,讓「package-list.txt」可以「寫註解」的功能。 新的「package-install.sh」這個腳本,內容如下, #!/usr/bin/env bash util_package_find_list () { local file_path="$1" cat $file_path | while IFS='' read -r line; do trim_line=$(echo $line) # trim ## https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html ## ignore leading # if [ "${trim_line:0:1}" == '#' ]; then continue; fi ## ignore empty line if [[ -z "$trim_line" ]]; then continue; fi echo "$line" done } main_package_find_list () { util_package_find_list "package-list.txt" } sudo apt-get install $(main_package_find_list) 這樣在「package-list.txt」就可以「寫註解」,以「#」為開頭。 ================================================================================ 演化到這,就是我目前重新安裝軟體,採用的方式, 我在新的架構,依照同樣的原理,也做了一些拆解和組合。 ================================================================================ 接下來會說明我「恢復設定的方式」, 待續...
2022/10/17 11:28
|
||||||||||
![]() |
回覆: 雙系統,更新BIOS後,Xubuntu進不了。 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
延續「回覆 - #9」提到的,
接下來會概略說明我「恢復設定的方式」, 我「恢復設定的方式」,並沒有把舊的「家目錄(~/)」底下的所有檔案,完全複製過來, 我只有把我慣用的軟體的設定,透過腳本,覆蓋到新的系統上。 其餘的,就讓軟體自行產生它的預設值。 ================================================================================ 目前大部份我使用到的軟體設定檔,是放在「~/.config/」這個資料夾底下,並且有各自的資料夾。 有少部份的設定檔,則是放在「~/」這個資料夾底下。 而「kde」相關的則是散落在「~/.config/」這個資料夾底下,並沒有在獨立一個資料夾出來。 所以像是這系列的設定檔,像是「xfce」的設定檔,或是軟體的設定檔, 在不考慮例外的狀況下, 基本只要善用「mkdir」,「cp」或是「install」這幾個指令,就可以寫成腳本,來實做復原設定檔的架構了。 一些簡易的腳本範例,我都有存在「GitHub」上,檔名通常是「config-install.sh」。 另外也可以研究「rsync」這個指令的用法。 ================================================================================ 若是另一個討論串「回覆 - #2」討論串提到的方式「製作自己的iso檔」 放在「~/」這個資料夾的設定檔,只要放在「/etc/skel」這個資料夾, 當產生新帳號的時候,就會把「/etc/skel」裡面檔案,複製到「~/」底下 ================================================================================ 待續...
2022/10/17 17:10
|
||||||||||
![]() |
回覆: 雙系統,更新BIOS後,Xubuntu進不了。 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
延續「回覆 - #15」提到的,
若是「gnome」系列的「桌面環境」, 例如: * gnome-shell * gnome-flashback * cinnamon * mate * budgie * pantheon (elementary-os) 或是一些軟體 例如 * gedit * mousepad 這些不是透過設定檔,而是透過「GSettings」的機制來設定, 所以可以透過「gsettings」這個指令,來設定。 有些情況,也可以搭配「dconf」這個指令,來設定。 ## Manpage $ man 1 gsettings $ man 1 dconf $ man 7 dconf 這些新的設定值,會儲存在「~/.config/dconf/user」這個檔案,注意它不是一般的純文字檔 ================================================================================ 除了透過上面指令的方式,也可以透過「gschema.override」的方式,直接設定成預設值 檔案是放在「/usr/share/glib-2.0/schemas/」這個資料夾,副檔名是「.gschema.override」 可以執行「ls -1 /usr/share/glib-2.0/schemas/*.gschema.override」觀看系統已經放置那些檔案 以「gedit」為例, 我產生一個檔案「/usr/share/glib-2.0/schemas/50_gedit.gschema.override」。 關於「50_gedit」這個檔名,不見得要使用這個名稱,只要副檔名「.gschema.override」就行。 然後記得要執行下面指令,才會生效。
## 相關文件 * Class: Gio / Settings / Vendor overrides ================================================================================ 另外有一種「Relocatable schemas」,比較特別, 像是「gnome-terminal」或是「gnome-shell-keybind-custom」, 我目前還是嘗試不出來使用「gschema.override」的方式設定預設值 最近在探索「TROMjaro (中文)」時,發現到另一個方式來設定預設值 參考的專案如下, * gconf-package * gconf-settings 我目前實做的專案如下, * gnome-shell-keybind-custom * cinnamon-keybind-custom * mate-keybind-custom 可以搭配閱讀 $ man 7 dconf $ man 1 dconf > 在發現這個方法前,我實做的方式是自己產生「~/.config/dconf/user」這個檔案,請參考我放在「GitHub」上的紀錄。 ================================================================================ 以上提供參考 最後提醒特別注意的是, 目前我儲存在「GiHub」上的腳本,主要是我個人在使用的,有些尚待整理, 所以就請謹慎了解過後,再使用, 或是只是當作參考用,實作您自己「恢復設定的架構」。 報告完畢 ![]()
2022/10/17 17:28
|
||||||||||
![]() |
回覆: 雙系統,更新BIOS後,Xubuntu進不了。 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
接著回到樓主討論的議題
補充我在「回覆 - #5」提到的, 假設我的「桌機」或是「筆電」,我先統稱「主機」, 內接一個硬碟,而這個硬碟,裡面有一個「分割區」原來就有存在一個「Linux」系統。 當使用我在「回覆 - #5」提到的方式, 安裝一個「Linux」系統在「隨身碟」,也安裝「grub」在「隨身碟」, 在沒有例外狀況發生, 安裝完成後,使用「隨身碟」的「grub」來開機, 理論上「隨身碟」的「grub選單」應該會有一個「選項」, 是可以開機指向到「主機」那個「Linux」系統。 也就是可以開機到「內接硬碟」裡的那個「Linux」系統。 ================================================================================ 假設我這個隨身碟,接上另外一台主機, 這台主機一樣有內接一個硬碟,而這個硬碟,裡面有一個「分割區」原來就有存在一個「Linux」系統。 可以先從「隨身碟」的「grub」來開機,進到「隨身碟」的系統, 這時候可以執行下面的指令 (假設有開os-prober的機制)
或是執行下面指令
就會產生一個新的設定檔「/boot/grub/grub.cfg」。 接著重新開機, 一樣從「隨身碟」的「grub」來開機, 在沒有例外的狀況下, 理論上「隨身碟」的「grub選單」應該會有一個「選項」, 是可以開機指向到「新主機」那個「Linux」系統。 也就是可以開機到「內接硬碟」裡的那個「Linux」系統。 ================================================================================ 註: 上面的「sudo update-grub」或是「sudo grub-mkconfig -o /boot/grub/grub.cfg」 選擇其中一個指令執行就可以了, 基本上「update-grub」就是執行「grub-mkconfig -o /boot/grub/grub.cfg」 您可以執行下面指令來觀看「update-grub」的內容
或是執行
顯示 #!/bin/sh set -e exec grub-mkconfig -o /boot/grub/grub.cfg "$@" ================================================================================ 待續...
2022/10/17 18:52
|
||||||||||
![]() |
回覆: 雙系統,更新BIOS後,Xubuntu進不了。 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
接下來討論,如何修復「grub」,
因為我沒有「Windows」系統,所以不確定會發生什麼相關的例外狀況, 因此以下的例子,是建立在沒有「windows」的前提之下, 所以並不能解決樓主遇到的問題。 以下只是紀錄下來,提供額外的參考。 ================================================================================ ## 方式一: 延續「回覆 - #17」提到的, 先透過「隨身碟」的「grub」開機,開機到「內接硬碟」那個「Linux」系統, 接著執行下面指令 (注意:下面的「/dev/sda」指的是內接硬碟那顆,請找到您環境的那顆代號,另外sda後面也不需要數字)
顯示
要注意的是「sudo grub-install /dev/sda」, 會動到「/dev/sda」那顆硬碟的開機磁區, 所以請謹慎使用, 接著重新開機,改用「內接硬碟」那個「grub」開機。 > 要找到「/dev/sda」,可以善用「lsblk」或是「blkid」這兩個指令。 ================================================================================ $ man grub-install ================================================================================ 待續...
2022/10/17 20:04
|
||||||||||
![]() |
回覆: 雙系統,更新BIOS後,Xubuntu進不了。 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
延續「回覆 - #18」提到的,
討論如何修復「grub」的方式二, ## Link * Debian Wiki / chroot * Arch Wiki / chroot ================================================================================ ## 方式二: 方式二是透過「chroot」的方式。 先透過「隨身碟」的「grub」開機,開機到「隨身碟」那個「Linux」系統, ================================================================================ 執行下面指令,產生一個資料夾「target_root」
================================================================================ 執行下面指令,將「/dev/sda2」這個分割區,掛載到「target_root」這個資料夾
上面的假設是「/dev/sda」是「內接硬碟」這顆 而「內接硬碟分割區 /dev/sda2」原來就有存在一個「Linux」系統。 ================================================================================ 執行下面指令,切換到「target_root」這個資料夾
================================================================================ 執行下面指令,掛載需要的檔案
================================================================================ 執行下面指令,進到「chroot」環境
================================================================================ 執行下面指令,來修復「內接硬碟」的「grub」
要注意的是「sudo grub-install /dev/sda」, 會動到「/dev/sda」那顆硬碟的開機磁區, 所以請謹慎使用。 ================================================================================ 執行下面指令,離開「chroot」
================================================================================ 執行下面指令,卸載剛剛掛載的檔案
================================================================================ 接著重新開機,改用「內接硬碟」那個「grub」開機。 ================================================================================ $ man 8 chroot $ man 8 grub-install ================================================================================ 關於「方式一」和「方式二」在我的環境測試過,是可以成功運作的, 不過我可能沒考慮到其他的因素,因此有可能不適用在不同的環境, 因此以上僅提供參考 補充報告完畢 ![]()
2022/10/17 20:13
|
||||||||||
![]() |
您可以查看帖子.
您不可發帖.
您不可回覆.
您不可編輯自己的帖子.
您不可刪除自己的帖子.
您不可發起投票調查.
您不可在投票調查中投票.
您不可上傳附件.
您不可不經審核直接發帖.