@fanisfun
2017-07-07T13:16:07.000000Z
字数 6367
阅读 3489
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/livecdcd ~sudo mount -o loop ./ubuntu-14.04.5-desktop-amd64.iso /tmp/livecd
创建工作目录,并拷贝镜像文件
# 原本镜像文件副本mkdir -p livecd/cdrsync --exclude=/casper/filesystem.squashfs -a \/tmp/livecd/ \~/livecd/cd# 原版filesystem.squashfs生成的压缩只读文件系统mkdir -p livecd/squashfssudo modprobe squashfssudo mount -t squashfs -o loop \/tmp/livecd/casper/filesystem.squashfs \~/livecd/squashfs/# 定制系统根目录mkdir -p livecd/customsudo cp -a ~/livecd/squashfs/* ~/livecd/custom
sudo modprobe squashfsWARNING: 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 -lmount -t proc none /proc/mount -t sysfs none /sys/
新建 test 用户,并赋予 sudo 权限
groupadd useruseradd -m -s /bin/bash -g user testuseradd -m -s /bin/bash -g user hadoopchmod u+w /etc/sudoersecho "test ALL=(ALL:ALL) ALL" >> /etc/sudoersecho "hadoop ALL=(ALL:ALL) ALL" >> /etc/sudoerschmod u-w /etc/sudoers# 设置密码passwd testpasswd hadoop
拷贝软件到定制系统
exitsudo 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 -lcd ~
安装基础软件和三方库
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-devsudo apt-get install -y --no-install-recommends libboost-all-dev # boost-c++/python# 软件sudo apt-get install -y \vim cmake lrzsz git tree realpath imagemagickopenssh-server \ # sshntp \ # 多机时间同步maven \ # jpymysql-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/profilesudo echo "/usr/local/cuda/lib64/lib" | sudo tee /etc/ld.so.conf.d/cuda.confsudo 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.tarsudo 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.5sudo 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 buildcmake -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 "# javaexport JAVA_HOME=/usr/local/jdk1.8.0_92export JRE_HOME=\$JAVA_HOME/jreexport CLASSPATH=\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/lib/dt.jar:\$JRE_HOME/libexport PATH=\$PATH:\$JAVA_HOME/bin:\$JRE_HOME/bin" \| sudo tee /etc/profile.d/java.shsource /etc/profile## java -version 既然是OpenJDK## 更新系统javasudo update-alternatives \--install /usr/bin/java java \/usr/local/jdk1.8.0_92/bin/java 800sudo update-alternatives --config java # select 2java -version# java version "1.8.0_92"
cd ~/jpyexport JDK_HOME=$JAVA_HOMEpython setup.py --maven buildsudo cp -r build/lib.linux-x86_64-2.7 /usr/local/jpysudo python /usr/local/jpy/jpyutil.py## 配置环境变量sudo echo "# jpyexport JPY_HOME=/usr/local/jpyexport CLASSPATH=\$CLASSPATH:\$JPY_HOME/jpy-0.9-SNAPSHOT.jar" \| sudo tee /etc/profile.d/jpy.shsource /etc/profile
静态 ip (部署时可能需要)
# 配置interfaces中的ip等信息# 配置base中的域名服务器# 安装到系统目录,并重启网络sudo cp ./interfaces /etc/network/interfacessudo cp ./base /etc/resolvconf/resolv.conf.d/baseecho "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.confsudo echo "# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN" \| sudo tee -a /etc/resolv.confsudo cat "./base" | sudo tee -a /etc/resolv.confsudo /etc/init.d/networking restart
修改时区(Time zone)
dpkg-reconfigure tzdata# choose Asian/Shanghai
清理临时数据
apt-get cleanrm -rf /tmp/*rm -f /etc/hosts /etc/resolv.confumount /proc/umount /sys/exit
生成清单文件
sudo chmod +w ~/livecd/cd/casper/filesystem.manifestsudo chroot ~/livecd/custom dpkg-query \-W --showformat='${Package} ${Version}\n' \> ~/livecd/cd/casper/filesystem.manifestsudo cp ~/livecd/cd/casper/filesystem.manifest \~/livecd/cd/casper/filesystem.manifest-desktop
重建压缩文件系统
sudo rm ~/livecd/cd/casper/filesystem.squashfssudo mksquashfs ~/livecd/custom \~/livecd/cd/casper/filesystem.squashfs
更新 md5 sum 文件
sudo chmod +w ~/livecd/cd/md5sum.txtsudo bash -c 'cd ~/livecd/cd && find . -type f -exec md5sum {} +' \> ~/livecd/cd/md5sum.txt
生成镜像文件
cd ~/livecd/cdsudo 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/livecdsudo 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.gzcd parallel_studio_xe_2017_update2sudo 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? 中第二个回答。