安装Windows与Linux(Ubuntu)双系统并搭建工作环境

自己的笔记本已经用了快4年了,硬盘除了不小的问题,存资料不放心、玩游戏不给力,因此准备把这台机子变成一个工作专用的机器。另外由于刚来美帝,实验室没有配电脑,我需要一个Linux系统来干活,因此就琢磨着给自己电脑装个Ubuntu双系统。

Ubuntu双系统的安装

先说一下自己电脑的情况。联想Y430P,系统是从OEM版Win8一路升上来的,去年为了Hyper-V重装了Window 10教育版。也就是说这台电脑从到我手上以来未装过Windows以外的系统,因此装双系统需要有一定的调整。Ubuntu双系统的安装主要参照了另一篇博客

给Ubuntu系统腾空间

由于之前系统所有硬盘位置都被分配好了,因此需要先给另一个系统足够的安装空间。重新分配空间在Windows下能够非常方便地通过磁盘管理进行解决。磁盘管理可在任务栏Windows图标右键菜单中打开。腾空间有几种方式:

  1. 插入新的硬盘:如果你舍得花钱或者有闲置盘的话
  2. 删除某一磁盘分区:删除分区不代表数据丢失,只是将磁盘一块区域变成未使用的状态
  3. 压缩已有磁盘分区:在不想移动数据的情况下的选择

由于我想让Ubuntu和Windows共用之前Windows独占的固态硬盘空间,因此我只能选择压缩分区(Windows装在C盘),并且由于这是Windows系统所在分区,因此还会降低压缩能力。为了最大化压缩出来的空间,首先将系统重启并且关掉所有能关掉的系统进程与服务,其次是关闭掉C盘的硬盘保护。实验证明,关闭掉硬盘保护后能够压缩的空间比关之前多了两倍!硬盘保护的开关在系统面板->更改设置->系统保护选项卡中,在压缩完毕分区后可以再把硬盘保护打开。压缩完毕后磁盘中会多出一个“未分配”的区域,这便是之后Ubuntu安装的位置。

制作启动盘

如果你有现成的启动盘当然就可以跳过这一步了~这个步骤对于经常装机的同学来说肯定是so easy,过程说到底也就是从官网下一个ISO镜像然后刻录进光盘或者U盘。不过这里我倒是想推荐一个制作启动盘的软件——Rufus,制作流程十分直接,选择ISO后直接按照默认设置就能烧好一个启动盘~之前一直用的是UltraISO,但是完全就是大材小用,而且还收费,只能使用试用版,令强迫症相当不爽。

运行安装程序

插入启动盘后重启进Boot Menu,选择从启动盘启动,然后就按照Linux的安装流程走了~需要解释的是在选择分区的那一步,如果没有什么特殊需要的话其实直接选择”Install Ubuntu alongside with Windows Boot Manage”(默认的第一个选项)就可以了,但如果想自己定义分区大小、挂载点和boot设置的话就选最后一条”Something else”,然后分区的设置可以参考之前提到的博文

需要指出的是,我参考这篇文章最后没有能用Windows Boot Manager来启动Ubuntu,还是只能使用Ubuntu附带的丑陋的GRUB,原因是我的Windows是UEFI安装,这个模式下Windows Boot Manager只能启动Windows系统(可以启动不同版本的)而不能启动Linux。具体解释可以参考EasyBCD的官网说明

安装完毕以后可以将系统的更新源设置在国内的镜像库(如清华)上,可以使更新快一点。具体方法是进入系统设置->软件和更新->下载至之中选择http://mirrors.tuna.tsinghua.edu.cn/ubuntu

解决一些系统冲突

在安装完双系统后,如果没有什么意外的话就可以进入Ubuntu啦~但是我在进入后发现有两个问题,一个是时间错位,另一个是另外的系统分区(NTFS格式下的)无法打开。

时间错位的现象是你在进入Ubuntu后再登录Windows,会发现Windows的时间被更改了,与实际时间错位了几个小时。这是由于Ubuntu与Windows的默认时区表示方式不同,导致Ubuntu会修改主板时间。解决方案可以参考AskUbuntu上的问题,我选择的方法是运行timedatectl set-local-rtc 1

装系统之前的NTFS分区无法打开,并且会提示“Windows is hibernated, refused to mount”。其原因是Windows的快速启动阻止Ubuntu的访问,将Windows的快速启动功能关掉即可。详情可参见CSDN贴

调整GRUB的设置

我这安装完双系统之后,默认启动的顺序是linux在前,而我想把Windows设为默认启动系统。这里就需要更改GRUB的配置文件,用sudo加vim或者gedit打开/etc/default/grub, 更改里面的GRUB_DEFAULT值为Windows在GRUB界面的顺序即可,保存后用sudo update-grub覆盖已有配置即可完成更改。此外在GRUB设置中还有个GRUB_GFXMODE选项,如果想更改GRUB界面的分辨率的话可以将其更改为需要的分辨率。GRUB支持的分辨率可以在GRUB界面按c进入命令行,输入videoinfo命令查看。

Ubuntu工作环境的配置

安装完系统之后就是一些软件以及环境的配置啦~

常用程序安装

由于我很少使用Linux,因此在Ubuntu下常用的程序也很少,大概有这些:

  • Firefox: 虽然Ubuntu自带,但是还是更新一下版本比较好
  • Visual Studio Code: 没有Visual Studio,写代码只能用它了
  • Anaconda: Python环境,系统自带的Python经常会被各种软件弄乱(如ROS),因此还是装个Anaconda。最好不用sudo安装,放在/home底下就可以了。

    如果今后在编译Python扩展相关的代码时要用Anaconda的python(如使用Anaconda编译pycaffe),那么在~/.bashrc末尾加一行export LD_LIBRARY_PATH=$<Anaconda根目录>/lib:${LD_LIBRARY_PATH}

  • git: 这就不解释了
  • GitKraken:一个非常好使的Git GUI
  • CMake: 写跨平台代码时会用到
  • aria2c: 快一点的下载器

这些程序的安装要么用sudo apt install,要么从官网下载.deb文件双击安装,非常简单~

此外,还可以安装一个中文输入法,这个的安装可以直接下载GooglePinyin或者搜狗的安装包,也可以在系统设置中添加中文语言支持,然后将输入法换成fcitx即可。

Ubuntu美化

如果你忍受不了ubuntu默认的界面风格的话可以对Ubuntu进行美化。具体而言,效果明显的改进就是换主题和图标啦~

  1. 安装Gnome桌面,具体命令代码如下:

    1
    2
    sudo add-apt-repository ppa:gnome3-team/gnome3
    sudo apt update && sudo apt install gnome-shell ubuntu-gnome-desktop

    安装完毕后在用户登陆界面中,用户名的右边按钮选择Gnome桌面登陆

  2. 安装Tweak工具,这个在应用商店中可以找到。安装完毕后在Extension中打开User themes开关。
  3. 安装主题和图标,我选择的是Arc-Darker主题和Papirus图标包。前者的安装方式是在作者的OBS Repo中下载.deb文件直接安装,后者则是使用如下代码

    1
    2
    3
    sudo add-apt-repository ppa:papirus/papirus
    sudo apt-get update
    sudo apt-get install papirus-icon-theme

    安装完毕后在Tweak中选择主题和图标包即可

    其他美化方法可以参照知乎中的该回答该文章

NVIDIA显卡驱动安装

由于后面还是打算拿这个系统跑深度学习的,因此显卡还是要装的~首先是驱动安装。安装驱动有两种方式,一个是使用.run文件,另一种则是使用apt install,后一种比较简单,在安装全新的系统时推荐使用后面一种。

  1. 使用.run文件安装

    从官网下载.run驱动,下载以后放到一个好找的目录下。之后打开终端,输入sudo service lightdm stop关闭X Server的显示,然后按Ctrl+Alt+F1进入tty模式。找到驱动文件对应的目录,输入如下命令开始安装驱动

    1
    2
    sudo chmod +x NVIDIA-Linux-x86_64-XXX.YY.run
    sudo ./NVIDIA-Linux-x86_64-XXX.YY.run

    安装过程中的各种选项按需选择即可。安装完毕后再输入sudo service lightdm start即可重新打开图形界面。

  2. 使用apt进行安装

    打开命令行输入下列命令

    1
    2
    3
    sudo add-apt-repository ppa:graphics-drivers
    sudo apt-get update
    sudo apt-get install nvidia-XXX

    安装完重启即可。安装结束时可能会提醒你关掉主板的Secure Boot,按照提示完成即可。

安装CUDA

CUDA的安装同样有两种方式,一种是使用.run,一种是使用.deb。后者是官方推荐的,而且相比之下deb文件不含驱动,很少有冲突,并且这样对CUDA的卸载和升级更加方便

用N卡做计算加速的话CUDA是必需的。从官网下载.deb文件,然后在终端运行如下命令

1
2
3
sudo dpkg -i <CUDA的.deb文件路径>
sudo apt-get update
sudo apt-get install cuda

安装完成后修改环境变量。在终端输入sudo gedit ~/.bashrc,然后在文件末尾添加如下几行

1
2
3
4
# CUDA environment
export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH}
export PATH=${CUDA_HOME}/bin:${PATH}

注意Linux下PATH的分隔符是冒号:而不是分号;

然后重启终端或者使用sudo ldconfig命令使环境变量生效。验证是否安装成功可以通过编译官方的CUDA Samples完成

安装CuDNN

这里采用的是.tar压缩包安装方法,官网还提供.deb安装文件,貌似可以CUDA+CuDNN一起安装

CuDNN是利用N卡给神经网络计算做加速的库,也是必需的。CuDNN的安装仅仅是把几个库文件拷到CUDA目录下就可以了。从官网下载CuDNN库的.tgz文件,解压后打开终端进入到解压后的目录,然后运行如下命令即可

1
2
3
sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h

题一下我这里遇到的问题。我在之后安装完tensorflow后发现Tensorflow仍然找不到CuDNN,排除了目录不正确的可能之后发现是libcudnn.so.6.0.20文件的权限设置不正确。不知道为什么压缩包里解压出来的这个文件的权限是-rwxr-xr-x,与其他的.so文件不同。之后我用chmod命令将权限改成正常的-rw-r--r--后即可正常使用Tensorflow了。

安装ROS

ROS也是我今后工作中会常用到的框架。目前ROS进行LTS支持的版本是Kinetic,并且刚好Kinetic也是支持Ubuntu 16.04的版本,因此我们就安装Kinetic版本的ROS框架。依次执行如下命令:

1
2
3
4
5
6
7
8
9
10
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full

sudo rosdep init
rosdep update
sudo apt-get install python-rosinstall

pip install trollius catkin-tools rospkg

最后一行是为ros的Python开发提供支持,其中trollius是catkin-tools的依赖项。安装完之后可以在.bashrc文件里添加环境设置,使得ros的命令能默认在终端里执行。在终端输入sudo gedit ~/.bashrc,然后在文件末尾添加如下几行

1
2
# add ROS environment
source /opt/ros/kinetic/setup.bash

ROS是否安装成功可以通过运行ROS示例来测试。

若要使用TUNA镜像,可以将第一行命令中的http://packages.ros.org/ros/ubuntu换成https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/


整个安装到这就差不多结束了~Ubuntu的使用还是没有Windows那么友好的,不过在编程环境的配置方面还是能省不少事。以后买新电脑后甚至会考虑让这台机子常开Ubuntu当个服务器使了。

Shoot me some coffee money XD
0%