說明
這次安裝的是Ubuntu14.04-64位系統,沒有選擇裝虛擬機,而是物理機單系統
因爲在另一臺電腦上,不方便截圖,所以只記錄重點
啓動u盤製作
系統鏡像獲取:http://mirrors.aliyun.com/ubuntu-releases/
u盤燒錄工具:https://rufus.akeo.ie
鏡像選擇爲14.04 64位系統,桌面版(而不是服務器server版本,server版本試過安裝不成功)
將系統ISO文件燒錄到u盤
系統安裝
重啓後進入BIOS,修改啓動優先級,選擇u盤啓動
安裝過程可以參考:https://blog.csdn.net/whitefish520/article/details/103850361
安裝過程中,選擇格式化整個硬盤,並且語言最好是選擇英文
安裝完成後的配置
修改鏡像源
進入系統後,在右上角的下拉菜單中,選擇系統設置system setting,然後選擇software & updates
在download form後選擇other,找到china,選擇阿里雲mirrors.aliyun.com
界面調整爲中文
選擇設置中的language support
具體步驟可以參考:https://blog.csdn.net/whitefish520/article/details/103850361
更新軟件
在終端terminal中執行
sudo apt-get update
sudo apt-get upgrade
前者完成檢查,後者完成下載更新
設置靜態IP
sudo vi /etc/network/interfaces
在末尾添加如下內容,ip、網關和掩碼,要改成自己需要的
auto eth0
iface eth0 inet static
address 172.20.10.128
netmask 255.255.255.0
gateway 172.20.10.2
dns-nameservers 180.76.76.76
重啓網絡服務
sudo /etc/init.d/networking restart
查看IP:ifconfig -a
重啓網絡服務失敗的解決辦法:https://www.cnblogs.com/siikee/p/4193922.html
sudo ifdown -a
sudo ifup -a
配置ssh服務
安裝:sudo apt-get install openssh-server
修改配置:sudo gedit /etc/ssh/sshd_config
PermitRootLogin prohibit-password
更改爲 PermitRootLogin yes
重啓服務:sudo service ssh restart
接下來,選擇在Windows端,利用ssh協議遠程登陸進行操作(推薦使用secureCRT),這樣方便後面的配置進行復制粘貼
解決VI中方向鍵亂碼
sudo apt-get install vim
安裝vim即可解決
設置VI的風格
sudo vim /etc/vim/vimrc
打開vim配置文件,在末尾加上如下內容
set number "顯示行號
set showmode "底部顯示當前模式
set mouse=a "鼠標有效
set encoding=utf-8 "utf-8編碼
filetype indent on "文件類型檢查
set autoindent "自動縮進
set cursorline "所在行高亮
set textwidth=80 "設置行寬80個字符
set showmatch "自動匹配括號
set hlsearch "高亮搜索結果
set nobackup "不創建備份文件
set noswapfile "不創建交換文件
set undofile "保留撤銷歷史
set autochdir "自動切換工作目錄
set noerrorbells "出錯時不要叫
set history=1000 "歷史操作次數1000
set autoread "自動監視
set wildmenu "自動補全
設置root密碼
sudo passwd
輸入root用戶密碼即可,新安裝的沒有root密碼,如果該某些內容出錯,可能無法恢復,只能開機後進入單用戶模式恢復
本次設置密碼爲123456
設置sudo不需要密碼
查看配置文件權限:ls /etc/sudoers -l
發現爲只讀,給它的用戶加上寫權限:sudo chmod u+w /etc/sudoers
再次查看權限:-rw-r-----,發現多了寫權限
打開配置文件:sudo vi /etc/sudoers
對應位置修改爲如下內容
%admin ALL=(ALL) NOPASSWD:ALL
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
之前改過的權限改回只讀:sudo chmod u-w /etc/sudoers
配置samba服務
安裝samba:sudo apt-get install samba samba-common
創建要共享的目錄:sudo mkdir 你的目錄
修改目錄權限:sudo chmod 775 你的目錄
修改samba配置文件:vi /etc/samba/smb.conf
在max log size 1000下面一行,增加security = user
在文件末尾,增加
[你的目錄名]
path = /home/你的用戶名/你的目錄名
browseable = yes
writable = yes
valid users = glx
public = yes
available = yes
設置samba密碼:sudo smbpasswd -a 你的用戶名
win10訪問不了samba的,可以參考:https://jingyan.baidu.com/article/7c6fb428d62a6e80642c90cc.html
重啓samba服務:sudo service smbd restart
在Windows端映射驅動器:我的電腦-映射網絡驅動器
輸入:\192.168.10.101\share
這裏的ip就是Ubuntu機器IP,後面跟的是你的samba目錄名
使用其它憑據連接,輸入賬號密碼,並勾選記住憑據
如果遇到權限問題,可以暴力一點修改目錄權限
sudo chmod 777 你的目錄 -R
配置NFS
安裝nfs服務器:sudo apt-get install nfs-kernel-server
安裝nfs客戶端:sudo apt-get install nfs-common
創建NFS目錄:sudo mkdir 你的目錄
修改設置:vi /etc/exports,最後一行添加
/home/用戶名/nfs目錄名 *(rw,sync,no_root_squash,no_subtree_check)
重啓服務:
sudo service rpcbind restart
sudo /etc/init.d/nfs-kernel-server restart
檢查是否配置成功:showmount -e
配置TFTP
創建工作目錄,在根目錄創建tftp文件夾:sudo mkdir /tftpboot
給這個目錄權限777:sudo chmod 777 -R /tftpboot
安裝tftp:sudo apt-get install tftpd tftp xinetd
修改配置文件:sudo vim /etc/xinetd.d/tftp
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
}
修改配置文件:sudo vim /etc/inetd.conf
找到tftp dgram dup wait nobody ...
字樣的內容,用 # 屏蔽掉,複製一行到下面,末尾的目錄改成自己的
這裏不建議全部手打,tab和空格好像對它有影響,我手打和它一模一樣,仍然無法下載
查看/var/log/syslog,發現如下語句,我推測是因爲修改了vim的vimrc文件,導致空格和tab對tftp程序讀取配置文件造成影響
Jun 10 11:28:22 zigsunHI tftpboot[2436]: connect from 127.0.0.1 (127.0.0.1)
Jun 10 11:28:22 zigsunHI tftpboot[2436]: error: cannot execute /usr/sbin/in.tftpd /tftpboot: No such file or directory
重啓服務:sudo /etc/init.d/xinetd restart
測試:在不同於tftpboot的目錄下執行:
tftp 127.0.0.1
tftp> get test.c
tftp>q
桌面UI開機時打開num_lock
桌面ui開機時無法輸入數字,得打開num_lock
sudo apt-get install numlockx
sudo vim /etc/rc.local
在最後一行exit 0前增加一下內容
if [-x /usr/bin/numlockx ]; then
numlockx on
fi
配置默認使用 bash
執行 sudo dpkg-reconfigure dash 選擇 no
安裝軟件包
執行:sudo apt-get install make libc6:i386 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools:i386 texinfo texlive gawk libssl-dev openssl bc
注意這是一行,如果因爲其它的原因導致了換行,會導致部分軟件安裝失敗,請在文本編輯器中將它整合到一行後,再去執行安裝
其它配置
創建/etc/ld.so.preload 文件,並修改權限爲777
並執行 echo “” > /etc/ld.so.preload,以解決 64bit linux server 上某些第三方庫編譯失敗的問題。
修改sudo執行時的環境變量
首先給/etc/sudoers增加寫權限:sudo chmod u+w /etc/sudoers
然後修改:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/hisi-linux/x86-arm/gcc-arm-none-eabi-4_9-2015q3/bin:/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin"
這個是在末尾加上arm編譯器的目錄/opt/hisi-linux/x86-arm/gcc-arm-none-eabi-4_9-2015q3/bin:/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin
注意以冒號分隔,這是一行,不能換行寫,保存之前多檢查一下,這個文件改錯了很麻煩
最後改回權限:sudo chmod u-w /etc/sudoers
編譯海思SDK
主要參考文檔:ReleaseDoc\zh\01.software\board\Hi3559A╱C V100 SDK 安裝及升級使用說明.pdf
注意所有解壓操作均要在linux環境下進行!
SDK存放位置
在Windows端映射好samba驅動器後:
- 將整個Hi3559AV100R001C02SPC030目錄,放到共享目錄
- 將ReleaseDoc目錄,放到共享目錄
- 創建pack目錄,用於存放打包的文件
將以下文件放到pack目錄中:
- aarch64-himix100-linux.tgz
- gcc-arm-none-eabi-4_9-2015q3.tgz
- HiDPU_PC_V1.0.0.1.tgz
- HiIVE_PC_V2.1.0.8_64bit_sec.tgz
- HiSVP_PC_V1.1.3.0.tgz
- linux-4.9.37.tar.gz
將以上6個文件,分別解壓到共享目錄,下圖僅供參考
安裝工具鏈
參考文檔2.4節,在 linux 服務器上安裝交叉編譯器
注意之前已經將工具鏈安裝後的路徑放到sudo的環境變量中,所以make的時候,可以加sudo執行(如果不加sudo,可能會由於權限的不足而編譯失敗)
展開SDK
參考文檔2.1~2.3節
osdrv的編譯
這一步有以下幾個文件需要閱讀:
- Hi3559AV100R001C02SPC030/01.software/board/Hi3559AV100_SDK_V2.0.3.0/osdrv/Makefile
- Hi3559AV100R001C02SPC030/01.software/board/Hi3559AV100_SDK_V2.0.3.0/osdrv/readme_cn.txt
- Hi3559AV100R001C02SPC030/01.software/board/Hi3559AV100_SDK_V2.0.3.0/osdrv/opensource/kernel/readme_cn.txt
在kernel目錄下,告訴我們要提前準備好內核源碼,海思是不提供這個的
按照它的要求,將內核源碼文件放到kernel目錄下面,打補丁的操作不需要手動進行,退回osdrv目錄編譯all目標即可
根據osdrv目錄下的readme文件,執行sudo make BOOT_MEDIA=spi AMP_TYPE=linux all
有可能會導致如下的錯誤
Invalid CPU Type - valid names are: alpha, arm, x86, ia64, m68k, microblaze, mips, mips64, nios2, powerpc, ppc, s390, sh, sparc, sparc64, blackfin, avr32
Usage: /usr/bin/mkimage -l image
-l ==> list image header information
/usr/bin/mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file…] image
-A ==> set architecture to ‘arch’
-O ==> set operating system to ‘os’
-T ==> set image type to ‘type’
-C ==> set compression type ‘comp’
-a ==> set load address to ‘addr’ (hex)
-e ==> set entry point to ‘ep’ (hex)
-n ==> set image name to ‘name’
-d ==> use image data from ‘datafile’
-x ==> set XIP (execute in place)
/usr/bin/mkimage [-D dtc_options] -f fit-image.its fit-image
/usr/bin/mkimage -V ==> print version information and exit
make[1]: *** [arch/arm64/boot/uImage] Error 1
make: *** [uImage] Error 2
原因是系統目錄下/usr/local/bin/mkimage這個程序的問題
之前編譯all目標時,uboot的編譯應該是通過的,到以下目錄去找mkimage,然後複製到/usr/local/bin/目錄下
cd opensource/uboot/u-boot-2016.11/tools/
sudo cp mkimage /usr/local/bin/
如果uboot編譯失敗,按照readme上的要求,單獨編譯uboot
sudo make BOOT_MEDIA=spi AMP_TYPE=linux hiboot
mkimage程序就位後,重新編譯all目標
make BOOT_MEDIA=spi AMP_TYPE=linux all