1. 程式人生 > >Win10(UEFI)+Archlinux+Tensorflow+Caffe雙系統安裝血淚總結!

Win10(UEFI)+Archlinux+Tensorflow+Caffe雙系統安裝血淚總結!

有著一股子騷勁和適合寫程式碼這兩點優勢混合的Archlinux讓我有著足夠動力去嘗試這個新玩意,在Win10上裝Arch的雙系統和單裝Arch還是有一些不一樣的,在裝的過程中,踩了不少坑,浪費了很多時間,在此總結一下,希望給各位入坑的時候走得順利一點。

Win10(UEFI)

怎麼看自己的系統是否是UEFI版呢?如果在磁碟管理上看見有個100M左右的分割槽,那麼那個分割槽一般就是EFI分割槽了。

為什麼這要是UEFI版呢?因為我在裝雙系統的時候,arch的記憶體是從C盤割出來的,這塊割出來的分割槽我這裡是sda4了,而裝arch至少需要兩個分割槽,一個是/mnt用於裝arch系統和七七八八的東西,一個是/mnt/boot/EFI,用於儲存系統啟動項。在arch中,EFI分割槽的格式通常是fat32,這與/mnt的ext4不同,所以這兩個一般是不同分割槽,而在我的電腦上只割了一塊記憶體給arch,如果再割一小塊也很麻煩,當然這不是主要原因,主要原因是在系統啟動上,相比於傳統Bios+Arch的方法,Win10(UEFI)系統本身就有一個EFI分割槽,用於存放Win10的啟動項,在這,我們直接將win10的EFI分割槽(我這裡是sda1)掛載在/mnt/boot/上,將Win10的這個EFI分割槽也作為Arch的EFI分割槽,最後裝了Arch以後,EFI資料夾裡面就會既有Arch也有Win10的啟動項,這時就會在開機的時候提供選擇,如果是傳統Bios+Arch,要讓電腦選擇從哪個資料夾下載入啟動項會麻煩一點。關於瞭解EFI分割槽可以看:

https://blog.itswincer.com/posts/ad42f575/。

至於怎麼裝win10就不解釋了,另請高就吧。

正式開始

1.製作一塊Archlinux的系統盤,注意要用RAW寫入方式。

2.給電腦分出一塊區域用於裝arch。

3.插入U盤,從U盤啟動,啟動成功後選第一項。

4.聯網:

wifi-menu

5.加入映象源:

nano /etc/pacman.d/mirrorlist

將檔案中的第一項改為清華或者中科大的映象,這樣後面下系統等會快很多。例如:將映象站:mirrors.xxxxxx.com/……的xxxxxx改為tuna.tsinghua.edu.cn

6.分割槽

fdisk /dev/sda*

這裡的sda*為你劃分出來給arch的那個分割槽(我這裡是sda4)。1.執行命令後會讓你給出指示命令,我們先給一個g,表示建立分割槽表,2.然後再給一個n,表示要正式建立分割槽了,回車,3.然後會讓你給出分割槽起始位置,回車使用預設就行、4.接著會讓你給出結束分割槽位置,我們繼續回車、5.然後又讓我們給出指示命令,這次我們給一個w表示儲存退出。

7.格式化分割槽

mkfs.ext4 /dev/sda*

這裡的sda*為剛剛做的那個分割槽。

8.掛載分割槽(重點)

這裡我們要掛載兩個分割槽到兩個地方:1./mnt(用剛剛建立的那個分割槽,我這裡是sda4) 2./mnt/boot(用win10的EFI分割槽,我這裡是sda1)

mount /dev/sda4 /mnt 
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

注意根據自己的情況改上面的sda4和sda1。

9.安裝基本軟體包

pacstrap -i /mnt base

10.生成fstab

genfstab -U -p /mnt >> /mnt/etc/fstab

如果想避免efi分割槽在開機時總是被檢查,可以把/boot那一行下最後的數字改成0。 例如我的efi分割槽是/dev/sda1,修改之後就是:

#/dev/sda1
  9 UUID=E0A6-B270 /boot vfat           rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro    0 0

11.轉換到新系統

arch-chroot /mnt /bin/bash

12.配置新系統

  • 設定Locale
    使用nano /etc/locale.gen,註釋掉en_US.UTF-8 UTF-8、zh_CN.UTF-8 UTF-8

  • 生成locale.gen和locale.conf檔案

    locale-gen
    echo LANG=en_US.UTF-8 > /etc/locale.conf
    
  • 選時區、設定硬體時鐘

    ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    hwclock --systohc --utc
    
  • 設定root密碼

    passwd
    
  • 安裝bootloader用於啟動(重點)
    按照上面的步驟,efi分割槽應該被掛載到了/boot目錄下。這時,我們需要安裝bootloader:

    bootctl install
    cp /usr/share/systemd/bootctl/arch.conf /boot/loader/entries/
    
  • 修改arch.conf檔案(重點)

      blkid -s PARTUUID -o value /dev/sda4 #注意這個sda4是arch的那個分割槽,而不是EFI那個分割槽!
      #這時會出現分割槽的UUID,記下來,我們要用這個UUID修改conf檔案
      nano /boot/loader/entries/arch.conf
      #使用剛剛獲得的UUID加進去,再在後面加個rw,格式大概如下:
    	
    /boot/loader/entries/arch.conf
    
    title          Arch Linux
    linux          /vmlinuz-linux
    initrd         /initramfs-linux.img
    options        root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 rw
    
  • 修改loader.conf檔案,

    nano /boot/loader/loader.conf
    

    改為:

    timeout 3
    default arch
    
  • 設定主機名

    echo myhostname > /etc/hostname
    

    myhostname改為你自己喜歡的主機名就行。同時,修改/etc/hosts為:(myhostname就是你自己起的名字)
    # <hostname.domain.org>

    127.0.0.1   localhost.localdomain   localhost   myhostname
    ::1     localhost.localdomain   localhost   myhostname
    
  • 設定網路

    systemctl enable dhcpcd
    pacman -S iw wpa_supplicant dialog
    

這時新系統的配置就完成了,再去EFI分割槽看就會多了一個systemd出來,這裡面存放的就是arch的啟動項,重啟後就會出現系統啟動選擇(有archlinux和window manage),並且延時是3秒。建議在這一步時先不重啟,因為很可能會在重啟後遇到wifi聯網的問題,我們直接開始裝桌面環境,再重啟。

桌面環境

桌面環境這裡是出現問題最多的,總的來說就是裝的包不齊,或者裝的包不相容。這裡提供兩個桌面環境的安裝,包括gnome+gdm和kde+sddm,兩者只裝其一就行!!!

裝顯示卡驅動(重點)

我的是N卡,如下:

pacman -S nvidia nvidia-utils

千萬不要漏裝!

如果是A卡或者其他型別,參考:https://wiki.archlinux.org/index.php/Xorg_(簡體中文) 中的驅動安裝,按照那一節的表格安裝

裝xorg(重點)

pacman -S xorg xorg-utils xorg-server xorg-server-utils

千萬不要漏裝!

啟動網路服務

systemctl enable NetworkManager.service

裝桌面環境

gnome+gdm

pacman -S gnome
pacman -S gdm
systemctl enable gdm.service
systemctl start gdm.service

KDE+SDDM

pacman -S plasma kde-applications
pacman -S sddm
sddm --example-config >/etc/sddm.conf
systemctl enable sddm.service

其中使用file /etc/systemd/system/display-manager.service檢視是否成功連結,成功連結的執行結果如下:
/etc/systemd/system/display-manager.service: symbolic link to /usr/lib/systemd/system/sddm.service

然後:

systemctl start sddm.service

然後就可以進去了。

桌面不顯示中文

1.安裝中文字型

2.修改語言

echo LANG=zh_CN.UTF-8 > /etc/locale.conf

裝軟體

給pacman加入archlinuxcn源:

sudo nano /etc/pacman.conf

新增下面三行文字到檔案末尾:

[archlinuxcn]
SigLevel = Optional TrustedOnly
Server   = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

然後更新一下軟體庫:

sudo pacman -Sy

裝Chrome

pacman -S chrome

如果安裝成功後,搜尋發現沒有chrome,是因為用的是root使用者進入的系統,當你使用一個非root使用者進入系統事就可以搜尋到chrome並運行了,或者使用命令列啟動,這時可能會有錯誤,按照系統建議修改命令列就可以啟動了

裝網易雲音樂

pacman -S netease-cloud-music

這會和上面出現一樣的情況。

裝輸入法

我喜歡用googlepinyin,當然,搜狗拼音是一樣的操作。

pacman -S fcitx fcitx-configtool fcitx-im

不要漏哦!

pacman -S fcitx-googlepinyin

配置fcitx

用文字編輯器開啟~/.xprofile,在其末尾新增以下幾行:

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

如果裝的是KDE,還需要在/etc/environmenet後方也加入:

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

重啟桌面環境,就可以使用拼音了。

裝Shadowsock-qt5+genpac

1.安裝Shadowsocks-Qt5

pacman -S shadowsocks-qt5

2.新增自己的SS, 然後安裝genpac

pip install genpac

3.生成pac檔案:

進入到一個你想存放pac檔案的目錄,然後執行:

sudo genpac --proxy="SOCKS5 127.0.0.1:1080" --gfwlist-proxy="SOCKS5 127.0.0.1:1080" -o autoproxy.pac --gfwlist-url="https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt"

注意其中的127.0.0.1:1080應與之前在Shadowsocks-Qt5新增SS裡面的對應。

4.全域性代理:

系統設定–>網路–>代理

使用代理自動配置URL–>選擇剛剛生成pac檔案

5.chrome上裝SwitchyOmega

  • 下載SwitchyOmega
  • 在chrome位址列上輸入:chrome://extensions/
  • 開啟右上角的開發者模式
  • 拖動SwitchyOmega到網頁上安裝
  • 選擇SwitchyOmega中的系統代理即可

裝Anaconda

參見:https://zhuanlan.zhihu.com/p/32925500

裝Tensorflow+caffe共存 gpu版

pacman -S cuda cudnn
conda create -n caffe-tf python=3.6.1
source activate caffe-tf
conda install caffe-gpu
conda install tensorflow-gpu

遇到的問題

1.systemctl start sddm後黑屏

可能的問題導致:顯示卡驅動沒裝齊、xorg包沒裝齊、檢查sddm的軟連線,用systemctl status sddm檢視

2.重啟後停在Reached target Fraphical Interface

問題:沒有安裝xorg-server

3.出現Signature from “User [email protected]” is unknown trust, installation failed

解決方案:

pacman -S archlinux-keyring
pacman -S archlinuxcn-keyring

參見:https://wiki.archlinux.org/index.php/Pacman_(簡體中文)#Signature_from"User<[email protected]>"_is_unknown_trust,_installation_failed

參考

https://cuijiahua.com/blog/2017/12/dl_1.html

https://wiki.archlinux.org/index.php/Display_manager_(簡體中文)

https://blog.csdn.net/java_xiaoer/article/details/51457259

https://zhuanlan.zhihu.com/p/32925500

http://www.linuxdiyf.com/linux/28807.html