雙系統,更新BIOS後,Xubuntu進不了。 [論壇 - Ubuntu安裝問題]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

« 1 (2)


回覆: 雙系統,更新BIOS後,Xubuntu進不了。
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 36
HP : 177 / 889
MP : 647 / 27574
EXP: 56
離線
延續上一個「回覆 - #10」提到的

接著來演化「package-install.sh」這個腳本,

把要安裝的軟體列表,提取出來,放在變數裡。

新的「package-install.sh」這個腳本,內容如下,


#!/usr/bin/env bash

PACKAGE_LIST="vim neovim micro pcmanfm-qt sakura mpv viewnior"

sudo apt-get install ${PACKAGE_LIST}


10/17 11:09:00
應用擴展 工具箱
回覆: 雙系統,更新BIOS後,Xubuntu進不了。
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 36
HP : 177 / 889
MP : 647 / 27574
EXP: 56
離線
延續上一個「回覆 - #11」提到的,

接著來演化「package-install.sh」這個腳本,

新的「package-install.sh」這個腳本,內容如下,


#!/usr/bin/env bash

PACKAGE_LIST="$(cat package-list.txt)"

sudo apt-get install ${PACKAGE_LIST}



================================================================================

把要安裝的軟體列表,提取出來,放在另一個檔案「package-list.txt」,

內容如下,


vim
neovim
micro
pcmanfm-qt
sakura
mpv
viewnior



================================================================================

上面的腳本也可以寫成如下


#!/usr/bin/env bash

sudo apt-get install $(cat package-list.txt)


10/17 11:14:43
應用擴展 工具箱
回覆: 雙系統,更新BIOS後,Xubuntu進不了。
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 36
HP : 177 / 889
MP : 647 / 27574
EXP: 56
離線
延續上一個「回覆 - #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)



10/17 11:21:20
應用擴展 工具箱
回覆: 雙系統,更新BIOS後,Xubuntu進不了。
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 36
HP : 177 / 889
MP : 647 / 27574
EXP: 56
離線
延續上一個「回覆 - #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」就可以「寫註解」,以「#」為開頭。

================================================================================

演化到這,就是我目前重新安裝軟體,採用的方式

我在新的架構,依照同樣的原理,也做了一些拆解組合

================================================================================

接下來會說明我「恢復設定的方式」,

待續...

10/17 11:28:47
應用擴展 工具箱
回覆: 雙系統,更新BIOS後,Xubuntu進不了。
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 36
HP : 177 / 889
MP : 647 / 27574
EXP: 56
離線
延續「回覆 - #9」提到的,

接下來會概略說明我「恢復設定的方式」,


我「恢復設定的方式」,並沒有把舊的「家目錄(~/)」底下的所有檔案,完全複製過來,

我只有把我慣用的軟體的設定,透過腳本,覆蓋到新的系統上。

其餘的,就讓軟體自行產生它的預設值。

================================================================================

目前大部份我使用到的軟體設定檔,是放在「~/.config/」這個資料夾底下,並且有各自的資料夾。

有少部份的設定檔,則是放在「~/」這個資料夾底下。

而「kde」相關的則是散落在「~/.config/」這個資料夾底下,並沒有在獨立一個資料夾出來。

所以像是這系列的設定檔,像是「xfce」的設定檔,或是軟體的設定檔,

在不考慮例外的狀況下,

基本只要善用「mkdir」,「cp」或是「install」這幾個指令,就可以寫成腳本,來實做復原設定檔的架構了。

一些簡易的腳本範例,我都有存在「GitHub」上,檔名通常是「config-install.sh」。

另外也可以研究「rsync」這個指令的用法。

================================================================================

若是另一個討論串「回覆 - #2」討論串提到的方式「製作自己的iso檔」

放在「~/」這個資料夾的設定檔,只要放在「/etc/skel」這個資料夾,

當產生新帳號的時候,就會把「/etc/skel」裡面檔案,複製到「~/」底下

================================================================================

待續...

10/17 17:10:27
應用擴展 工具箱
回覆: 雙系統,更新BIOS後,Xubuntu進不了。
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 36
HP : 177 / 889
MP : 647 / 27574
EXP: 56
離線
延續「回覆 - #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」就行。

然後記得要執行下面指令,才會生效。


sudo glib-compile-schemas /usr/share/glib-2.0/schemas/




## 相關文件

* 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」上的腳本,主要是我個人在使用的,有些尚待整理,

所以就請謹慎了解過後,再使用,

或是只是當作參考用,實作您自己「恢復設定的架構」。

報告完畢


10/17 17:28:48
應用擴展 工具箱
回覆: 雙系統,更新BIOS後,Xubuntu進不了。
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 36
HP : 177 / 889
MP : 647 / 27574
EXP: 56
離線
接著回到樓主討論的議題

補充我在「回覆 - #5」提到的,

假設我的「桌機」或是「筆電」,我先統稱「主機」,

內接一個硬碟,而這個硬碟,裡面有一個「分割區」原來就有存在一個「Linux」系統。

當使用我在「回覆 - #5」提到的方式,

安裝一個「Linux」系統在「隨身碟」,也安裝「grub」在「隨身碟」,

在沒有例外狀況發生,

安裝完成後,使用「隨身碟」的「grub」來開機,

理論上「隨身碟」的「grub選單」應該會有一個「選項」,

是可以開機指向到「主機」那個「Linux」系統。

也就是可以開機到「內接硬碟」裡的那個「Linux」系統。

================================================================================

假設我這個隨身碟,接上另外一台主機,

這台主機一樣有內接一個硬碟,而這個硬碟,裡面有一個「分割區」原來就有存在一個「Linux」系統。

可以先從「隨身碟」的「grub」來開機,進到「隨身碟」的系統,

這時候可以執行下面的指令 (假設有開os-prober的機制)


sudo update-grub



或是執行下面指令


sudo grub-mkconfig -o /boot/grub/grub.cfg



就會產生一個新的設定檔「/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」的內容


cat /usr/sbin/update-grub



或是執行


cat $(which update-grub)



顯示


#!/bin/sh
set -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"




================================================================================

待續...

10/17 18:52:55
應用擴展 工具箱
回覆: 雙系統,更新BIOS後,Xubuntu進不了。
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 36
HP : 177 / 889
MP : 647 / 27574
EXP: 56
離線
接下來討論,如何修復「grub」,

因為我沒有「Windows」系統,所以不確定會發生什麼相關的例外狀況,

因此以下的例子,是建立在沒有「windows」的前提之下

所以並不能解決樓主遇到的問題。

以下只是紀錄下來,提供額外的參考。

================================================================================

## 方式一:

延續「回覆 - #17」提到的,

先透過「隨身碟」的「grub」開機,開機到「內接硬碟」那個「Linux」系統,

接著執行下面指令 (注意:下面的「/dev/sda」指的是內接硬碟那顆,請找到您環境的那顆代號,另外sda後面也不需要數字)


sudo grub-install /dev/sda



顯示


Installing for i386-pc platform.
Installation finished. No error reported.




要注意的是「sudo grub-install /dev/sda」,

會動到「/dev/sda」那顆硬碟的開機磁區,

所以請謹慎使用,

接著重新開機,改用「內接硬碟」那個「grub」開機。

> 要找到「/dev/sda」,可以善用「lsblk」或是「blkid」這兩個指令。

================================================================================

$ man grub-install

================================================================================

待續...

10/17 20:04:06
應用擴展 工具箱
回覆: 雙系統,更新BIOS後,Xubuntu進不了。
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 36
HP : 177 / 889
MP : 647 / 27574
EXP: 56
離線
延續「回覆 - #18」提到的,

討論如何修復「grub」的方式二,

## Link

* Debian Wiki / chroot
* Arch Wiki / chroot

================================================================================

## 方式二:

方式二是透過「chroot」的方式。

先透過「隨身碟」的「grub」開機,開機到「隨身碟」那個「Linux」系統,

================================================================================

執行下面指令,產生一個資料夾「target_root」


mkdir -p target_root



================================================================================

執行下面指令,將「/dev/sda2」這個分割區,掛載到「target_root」這個資料夾


sudo mount /dev/sda2 target_root



上面的假設是「/dev/sda」是「內接硬碟」這顆

而「內接硬碟分割區 /dev/sda2」原來就有存在一個「Linux」系統。

================================================================================

執行下面指令,切換到「target_root」這個資料夾


cd target_root



================================================================================

執行下面指令,掛載需要的檔案


sudo mount -t proc /proc ./proc/
sudo mount -t sysfs /sys ./sys/
sudo mount --rbind /dev ./dev/



================================================================================

執行下面指令,進到「chroot」環境


sudo chroot .



================================================================================

執行下面指令,來修復「內接硬碟」的「grub」


sudo grub-install /dev/sda



要注意的是「sudo grub-install /dev/sda」,

會動到「/dev/sda」那顆硬碟的開機磁區,

所以請謹慎使用。

================================================================================

執行下面指令,離開「chroot」


exit



================================================================================

執行下面指令,卸載剛剛掛載的檔案


sudo umount ./proc
sudo umount ./sys
sudo umount ./dev



================================================================================

接著重新開機,改用「內接硬碟」那個「grub」開機。

================================================================================

$ man 8 chroot
$ man 8 grub-install

================================================================================

關於「方式一」和「方式二」在我的環境測試過,是可以成功運作的,

不過我可能沒考慮到其他的因素,因此有可能不適用在不同的環境,

因此以上僅提供參考

補充報告完畢


10/17 20:13:14
應用擴展 工具箱

« 1 (2)

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.