ubuntu安装(历险)记

    目标:安装ubuntu+Cuda等+tensorflow

    主要参考文章为 http://www.52nlp.cn/%e6%b7%b1%e5%ba%a6%e5%ad%a6%e4%b9%a0%e4%b8%bb%e6%9c%ba%e7%8e%af%e5%a2%83%e9%85%8d%e7%bd%ae-ubuntu-16-04-nvidia-gtx-1080-cuda-8


    1.首先使用u盘安装ubuntu

    用UEFI应该可以直接将光盘解压到U盘中启动,grub引导亦可。

    grub引导,需解压iso中vmlinuz和initrd到对应文件夹,iso改名后放到根目录:

    title [13]--ISO UBUNTU
    find --set-root /ubuntu.iso
    kernel /ubuntu/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu.iso nomodeset ro
    initrd /ubuntu/initrd.lz
    boot

    开机狂点F10-F12,选择U盘启动到grub目录,通常可选择ubuntu启动。

    然而,启动中很可能出现显示器无信号的情况,这时需要修改启动项。在grub界面按e,在splash前添加nomodeset,再启动。


    安装完成后也有同样的问题,第一次需要添加相同参数才能启动。

    启动后修复,此处修改 GRUB_CMDLINE_LINUX_DEFAULT :

    sudo nano /etc/default/grub

    GRUB_DEFAULT=0
    GRUB_HIDDEN_TIMEOUT=0
    GRUB_HIDDEN_TIMEOUT_QUIET=true
    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
    GRUB_CMDLINE_LINUX=""

    sudo update-grub


    2.修改源

    主要是加速。国内很多源,清华、163皆可。

    cd /etc/apt/
    sudo cp sources.list sources.list.bak
    sudo vi sources.list

    把下面的这些源添加到source.list文件头部:

    deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

    最后更新源和更新已安装的包:

    sudo apt-get update
    sudo apt-get upgrade


    3.安装驱动

    最新驱动370,可安装更新驱动。

    sudo add-apt-repository ppa:graphics-drivers/ppa

    回车后继续:

    sudo apt-get update
    sudo apt-get install nvidia-370 mesa-common-dev freeglut3-dev

    重启修改分辨率,驱动安装完成。


    4.安装cuda

    下载Cuda8 https://developer.nvidia.com/cuda-release-candidate-download,需注册。

    下载最新的 runfile 版本,当前为 8.0.27 和 8.0.27.1。

    sudo sh cuda_8.0.27_linux.run --tmpdir=/opt/temp/ --override

    由于gcc版本问题,需要添加override参数,编译无问题。

    同时,询问 Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 时选n。

    添加到 ~/.bashrc :

    export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

    测试
    nvidia-smi

    8.0.27.1类似:

    sudo sh cuda_8.0.27.1_linux.run --tmpdir=/opt/temp/


    5.安装Cudnn

    下载cudnn https://developer.nvidia.com/rdp/cudnn-download,这里安装cudnn 5.1RC。

    tar -zxvf cudnn-8.0-linux-x64-*
    sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
    sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
    sudo chmod a+r /usr/local/cuda/include/cudnn.h
    sudo chmod a+r /usr/local/cuda/lib64/libcudnn*


    6.源码编译TensorFlow GPU

    tensorflow9.0需从源码编译才支持cudnn5.1+cuda8.0。

    sudo apt-get install python-pip
    sudo apt-get install swig python-dev python-whee
    pip install numpy

    #如果编译目标切换python3 还需安装
    sudo apt-get install python3-pip python3-dev libcurl3-dev
    pip3 install numpy

    注意,bazel需要最新版本(以解决后续配置、编译的workspace问题,这里使用0.3.1),查看在 https://github.com/bazelbuild/bazel/releases/

    sudo apt-get update
    sudo apt-get install default-jre default-jdk
    chmod +x bazel-0.3.1-installer-linux-x86_64.sh
    ./bazel-0.3.1-installer-linux-x86_64.sh --user

    环境 ~/.bashrc中追加,其中 textminer 为用户名。

    source /home/textminer/.bazel/bin/bazel-complete.bash
    export PATH=$PATH:/home/textminer/.bazel/bin
    source ~/.bashrc

    再安装tensorflow。

    sudo apt-get install libcurl3 libcurl3-dev zlib1g-dev git

    下载源码

    git clone https://github.com/tensorflow/tensorflow
    #git是下载最新源码,也可以到release页面 https://github.com/tensorflow/tensorflow/releases 下载发布的源码,。推荐下载发布的源码。这里使用0.10rc。

    ./configure
    #在询问是否开启GPU时选Y,其余可忽略
    #如果编译python3,则python路径为/usr/bin/python3
    #库路径通常为 /usr/local/lib/python3.5/dist-packages/

    bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer
    #开始编译
    编译过程中若出现类似如下信息
    ERROR: /home/ggg/000/tensorflow/tensorflow/core/kernels/BUILD:1515:1: undeclared inclusion(s) in rule '//tensorflow/core/kernels:depth_space_ops_gpu':
    this rule is missing dependency declarations for the following files included by 'tensorflow/core/kernels/depthtospace_op_gpu.cu.cc':
      '/usr/local/cuda-7.5/include/cuda_runtime.h'
      '/usr/local/cuda-7.5/include/host_config.h'
      '/usr/local/cuda-7.5/include/builtin_types.h'
      '/usr/local/cuda-7.5/include/device_types.h'
      '/usr/local/cuda-7.5/include/host_defines.h'
      '/usr/local/cuda-7.5/include/driver_types.h'
      '/usr/local/cuda-7.5/include/surface_types.h'

    可参考如下issue解决https://github.com/tensorflow/tensorflow/issues/3589。我没有删除原来的那一行,而是直接添加cxx_builtin_include_directory: "/usr/local",编译通过。

    $ git diff third_party/gpus/crosstool/CROSSTOOL diff --git a/third_party/gpus/crosstool/CROSSTOOL b/third_party/gpus/crosstool/CROSSTOOL index 8db81a9..dfc568b 100644 --- a/third_party/gpus/crosstool/CROSSTOOL +++ b/third_party/gpus/crosstool/CROSSTOOL @@ -58,7 +58,7 @@ toolchain { # absolute locations and has no remote execution, yet. However, this will need # to be fixed, maybe with auto-detection? cxx_builtin_include_directory: "/usr/lib/gcc/" - cxx_builtin_include_directory: "/usr/local/include" + cxx_builtin_include_directory: "/usr/local" cxx_builtin_include_directory: "/usr/include" tool_path { name: "gcov" path: "/usr/bin/gcov" }
    然后编译python相关模块

    bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
    bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
    sudo pip install /tmp/tensorflow_pkg/tensorflow-0.9.0-py2-none-any.whl

    至此,tensorflow完成。

    7.Docker安装tensorflow

    如果源码方式感觉麻烦,或者老是失败,可以选择docker安装tensorflow。

    首先,参照官方教程 https://docs.docker.com/engine/installation/linux/ubuntulinux/ 安装docker:



    $ sudo apt-get update
    $ sudo apt-get install apt-transport-https ca-certificates
    $ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

    sudo vi /etc/apt/sources.list.d/docker.list
    deb https://apt.dockerproject.org/repo ubuntu-xenial main

    $ sudo apt-get update
    $ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
    $ sudo apt-get install docker-engine


    # If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
    docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
    sudo apt-get purge -y nvidia-docker
    
    # Add the package repositories
    curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
      sudo apt-key add -
    distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
    curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
      sudo tee /etc/apt/sources.list.d/nvidia-docker.list
    sudo apt-get update
    
    # Install nvidia-docker2 and reload the Docker daemon configuration
    sudo apt-get install -y nvidia-docker2
    sudo pkill -SIGHUP dockerd
    
    # Test nvidia-smi with the latest official CUDA image
    docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi



    旧:

    并且安装nvidia-docker https://github.com/NVIDIA/nvidia-docker

    #从https://github.com/NVIDIA/nvidia-docker/releases下载好最新版本
    sudo dpkg -i /tmp/nvidia-docker*.deb
    sudo systemctl start nvidia-docker

    //end旧


    然后启动docker

    nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu
    sudo docker run --runtime=nvidia -it -p 8888:8888 -v /home/nbd/wp/proj/Somiao-Pinyin/:/so:rw -p 4022:22 tensorflow/tensorflow:latest-gpu-py3

    推荐在-p后多加几个映射端口,如-p 4022:22。

    8.安装其他软件

    主要参考:http://blog.csdn.net/liuqz2009/article/details/52087019#t0

    搜狗输入法 http://pinyin.sogou.com/linux/?r=pinyin

    sudo dpkg -i sogoupinyin*.deb
    sudo apt-get install -f


    安装chrome

    sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/
    wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
    sudo apt-get update
    sudo apt-get install google-chrome-stable


    安装Genymotion

    https://www.virtualbox.org/wiki/Linux_Downloads
    https://www.genymotion.com/thank-you-freemium/
    sudo apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
    arm translation:http://download.csdn.net/detail/yyddhh123/9070315
    安装Genymotion后,发现无法上网,经过一番搜索后,发现只要在模拟器里面连接上那个默认的wifi就可以了


    安装vlc

    sudo add-apt-repository ppa:videolan/master-daily
    sudo apt-get update
    sudo apt-get install vlc


    解决时区、时间问题

    sudo timedatectl set-local-rtc 1


    解决我的键盘ctrl、alt等都是shift的问题:

    https://bitbucket.org/Swoogan/aziokbd

    这一问题出现在一些背光键盘上,因为使用了非标准的协议。

    如果过程中键盘无法使用别怕,可以打开系统设置里的屏幕键盘顶上。。

    没什么难度,直接用dmks方案就好。完美补丁上。

    如果打完补丁后wasd和上下左右交换了,按Fn+w即可。


    如果安装使用过程中遇到需要访问某些不可访问网站的情况,可以安装proxychains,然后通过一些管s道s访问。



标签: ubuntu