@fanisfun
2017-07-07T13:16:07.000000Z
字数 6367
阅读 3387
ubuntu
livecd
预备镜像: ubuntu-14.04.5-desktop-amd64.iso
预备软件
squashfs: 一套基于Linux内核使用的压缩只读文件系统。
dchroot:允许使用 chroot
改变程序执行的根目录。
sudo apt-get install -y squashfs-tools dchroot
Mount 镜像(Live CD)
mkdir /tmp/livecd
cd ~
sudo mount -o loop ./ubuntu-14.04.5-desktop-amd64.iso /tmp/livecd
创建工作目录,并拷贝镜像文件
# 原本镜像文件副本
mkdir -p livecd/cd
rsync --exclude=/casper/filesystem.squashfs -a \
/tmp/livecd/ \
~/livecd/cd
# 原版filesystem.squashfs生成的压缩只读文件系统
mkdir -p livecd/squashfs
sudo modprobe squashfs
sudo mount -t squashfs -o loop \
/tmp/livecd/casper/filesystem.squashfs \
~/livecd/squashfs/
# 定制系统根目录
mkdir -p livecd/custom
sudo cp -a ~/livecd/squashfs/* ~/livecd/custom
sudo modprobe squashfs
WARNING: Deprecated config file /etc/modprobe.conf,
all config files belong into /etc/modprobe.d/
备份配置文件 mv /etc/modprobe.conf /etc/modprobe.conf.bak
, 再试一次。
拷贝网络配置和软件源
sudo cp /etc/resolv.conf /etc/hosts ~/livecd/custom/etc/
sudo cp /etc/apt/sources.list ~/livecd/custom/etc/apt/
sudo cp /etc/apt/sources.list ~/livecd/custom/etc/apt/sources.list.save
搭建一个"假冒"文件系统
sudo chroot ~/livecd/custom /bin/bash -l
mount -t proc none /proc/
mount -t sysfs none /sys/
新建 test 用户,并赋予 sudo
权限
groupadd user
useradd -m -s /bin/bash -g user test
useradd -m -s /bin/bash -g user hadoop
chmod u+w /etc/sudoers
echo "test ALL=(ALL:ALL) ALL" >> /etc/sudoers
echo "hadoop ALL=(ALL:ALL) ALL" >> /etc/sudoers
chmod u-w /etc/sudoers
# 设置密码
passwd test
passwd hadoop
拷贝软件到定制系统
exit
sudo cp opencv-3.2.0.zip livecd/custom/home/test/
sudo cp cuda_8.0.61_375.26_linux.run livecd/custom/home/test/
sudo cp -r nccl livecd/custom/home/test/
sudo cp -r jpy livecd/custom/home/test/
sudo cp -r cudnn livecd/custom/home/test/
sudo chroot --userspec=test:user livecd/custom /bin/bash -l
cd ~
安装基础软件和三方库
sudo apt-get update
## 卸载 openJDK
# 三方库
sudo apt-get install -y \
build-essential \
libprotobuf-dev protobuf-compiler \
libleveldb-dev liblmdb-dev \
libhdf5-serial-dev libsnappy-dev \
libgflags-dev libgoogle-glog-dev \
libatlas-base-dev
sudo apt-get install -y --no-install-recommends libboost-all-dev # boost-c++/python
# 软件
sudo apt-get install -y \
vim cmake lrzsz git tree realpath imagemagick
openssh-server \ # ssh
ntp \ # 多机时间同步
maven \ # jpy
mysql-client-core-5.6 mysql-client-5.6 mysql-server-5.6 #mysql root passwd hadoop
# xrdp vnc4server xubuntu-desktop \ # 远程桌面
sudo apt-get install -y \
python-pip python-dev \
python-numpy python-scipy python-matplotlib \
python-sklearn python-skimage \
python-h5py python-protobuf python-leveldb \
python-networkx python-nose python-pandas \
python-gflags python-pydot cython ipython
安装Cuda 8.0 (不装Nvidia Driver)
OpenCV
,nccl
,jpy
编译会依赖Cuda,缺乏显卡驱动,所以部分测试省略。
sudo ./cuda_8.0.61_375.26_linux.run # 启动cuda安装程序
## 安装向导
* Install NVIDIA Accelerated Graphics Driver? No
* Install cuda-8 Toolkit? Yes
* Install to path ... /usr/local/cuda-8.0
* Create a symbolic link ... /usr/local/cuda
* Install cuda samples No
## 配置环境变量
sudo echo "export PATH=/usr/local/cuda-8.0/bin:\$PATH" \
| sudo tee /etc/profile.d/cuda.sh && source /etc/profile
sudo echo "/usr/local/cuda/lib64
/lib" | sudo tee /etc/ld.so.conf.d/cuda.conf
sudo ldconfig -v | grep cuda
## 验证是否安装成功
nvcc -V # 版本 8.0
## 安装 cuBlas 补丁
sudo sh ./cuda_8.0.61.2_linux.run
安装Cudnn 6.0 (DNN 加速库)
tar -zxvf cudnn-8.0-linux-x64-v5.1.tar
sudo cp cuda/include/cudnn.h /usr/local/include/
sudo cp cuda/lib64/libcudnn_static.a /usr/local/lib/
sudo cp cuda/lib64/libcudnn.so.5.1.10 /usr/local/lib/
sudo ln -s /usr/local/lib/libcudnn.so.5.1.10 /usr/local/lib/libcudnn.so.5
sudo ln -s /usr/local/lib/libcudnn.so.5 /usr/local/lib/libcudnn.so
安装Nccl (单机多卡)
cd ~/nccl && make CUDA_HOME=/usr/local/cuda test -j $(nproc)
sudo make PREFIX=/usr/local install
安装OpenCV 3.2
unzip opencv-3.2.0.zip && cd opencv-3.2.0 # 已经提前下载好ippicv库
sudo chmod -R a+x .
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j $(nproc) # 多线程编译
sudo make install && sudo ldconfig -v | grep opencv # 安装并更新环境变量
安装MySQL 5.6 参考
修改配置文件 /etc/mysql/my.cnf
。(*部分待安装后配置)
安装 Java 环境
sudo mv jdk1.8.0_92 /usr/local/
## 配置环境变量
sudo echo "# java
export JAVA_HOME=/usr/local/jdk1.8.0_92
export JRE_HOME=\$JAVA_HOME/jre
export CLASSPATH=\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/lib/dt.jar:\$JRE_HOME/lib
export PATH=\$PATH:\$JAVA_HOME/bin:\$JRE_HOME/bin" \
| sudo tee /etc/profile.d/java.sh
source /etc/profile
## java -version 既然是OpenJDK
## 更新系统java
sudo update-alternatives \
--install /usr/bin/java java \
/usr/local/jdk1.8.0_92/bin/java 800
sudo update-alternatives --config java # select 2
java -version
# java version "1.8.0_92"
cd ~/jpy
export JDK_HOME=$JAVA_HOME
python setup.py --maven build
sudo cp -r build/lib.linux-x86_64-2.7 /usr/local/jpy
sudo python /usr/local/jpy/jpyutil.py
## 配置环境变量
sudo echo "# jpy
export JPY_HOME=/usr/local/jpy
export CLASSPATH=\$CLASSPATH:\$JPY_HOME/jpy-0.9-SNAPSHOT.jar" \
| sudo tee /etc/profile.d/jpy.sh
source /etc/profile
静态 ip (部署时可能需要)
# 配置interfaces中的ip等信息
# 配置base中的域名服务器
# 安装到系统目录,并重启网络
sudo cp ./interfaces /etc/network/interfaces
sudo cp ./base /etc/resolvconf/resolv.conf.d/base
echo "config dynamic /etc/resolv.conf(5)"
sudo echo "# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)" \
| sudo tee /etc/resolv.conf
sudo echo "# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN" \
| sudo tee -a /etc/resolv.conf
sudo cat "./base" | sudo tee -a /etc/resolv.conf
sudo /etc/init.d/networking restart
修改时区(Time zone)
dpkg-reconfigure tzdata
# choose Asian/Shanghai
清理临时数据
apt-get clean
rm -rf /tmp/*
rm -f /etc/hosts /etc/resolv.conf
umount /proc/
umount /sys/
exit
生成清单文件
sudo chmod +w ~/livecd/cd/casper/filesystem.manifest
sudo chroot ~/livecd/custom dpkg-query \
-W --showformat='${Package} ${Version}\n' \
> ~/livecd/cd/casper/filesystem.manifest
sudo cp ~/livecd/cd/casper/filesystem.manifest \
~/livecd/cd/casper/filesystem.manifest-desktop
重建压缩文件系统
sudo rm ~/livecd/cd/casper/filesystem.squashfs
sudo mksquashfs ~/livecd/custom \
~/livecd/cd/casper/filesystem.squashfs
更新 md5 sum 文件
sudo chmod +w ~/livecd/cd/md5sum.txt
sudo bash -c 'cd ~/livecd/cd && find . -type f -exec md5sum {} +' \
> ~/livecd/cd/md5sum.txt
生成镜像文件
cd ~/livecd/cd
sudo mkisofs -r -V "Ubuntu-Live" \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-cache-inodes -J -l -no-emul-boot \
-boot-load-size 4 -boot-info-table \
-o ~/ubuntu-14.04.5-desktop-amd64-cuda-java.iso .
unmount 并清理残余文件
cd ~
sudo umount ~/livecd/squashfs/
sudo umount /tmp/livecd
sudo rm -fr ~/livecd/
enjoy it :)
基础线性代数子程序(Basic Linear Algebra Subprograms)
MKL
: Intel® Parallel Studio XE Cluster Edition for Linux Select
tar -zxvf parallel_studio_xe_2017_update2.tar.gz
cd parallel_studio_xe_2017_update2
sudo chmod a+x -R .
sudo ./install.sh # or ./install_GUI.sh
配置环境变量
sudo echo "/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64" | sudo tee /etc/ld.so.conf.d/intel_mkl.conf && sudo ldconfig -v | grep intel
Ask Ubuntu:How to customize the Ubuntu Live CD? 中第二个回答。