2016年5月30日 星期一
2016年5月18日 星期三
使用 preseed 自動安裝 Linux
我們一般安裝 Linux 的方式是一台一台裝,如果遇上大量佈建系統環境的情況,舉例來說,我們要裝 20 台 Linux 主機,那麼一台一台裝可能會非常辛苦。在這種情況下,Debian 提供了一種安裝系統的方式,稱為 preseed,其官方文件在:
https://wiki.debian.org/DebianInstaller/Preseed
這種安裝方式是透過一個預先作好的設定檔,檔案為 preseed.cfg (可自定檔案),裡面針對所需要的系統配置來定義要如何分割硬碟、安裝那些套件、root 密碼定義、一般使用者帳號、密碼定義,以及預設鏡像站 .. 等皆可設定在 pressed.cfg 中。
請至上課用 ftp 站下載預先建立好的 preseed.cfg,放在
http://192.168.10.254/preseed.cfg
用瀏灠器觀看其內容,看看是否有讀取的權限。
安裝
請修改 buildlinux1.sh 至 buildlinux2.sh,並將 boot d 改為 boot n,使用網路開機,在開機選單中按 TAB,加上底下設定:
auto=true url=http://192.168.10.254/preseed.cfg
然後按 Enter,看看系統會不會自動安裝。
這種手動安裝方式比較麻煩,還要在開機時按 TAB 進入開機選單編輯,如果要作全自動的安裝,請在 pxe server 底下的
/srv/tftp/debian-installer/amd64/boot-screens/txt.cfg 中將
append vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet
改成
append vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet auto=true priority=critical url=http://192.168.10.254/preseed.cfg
然後再重新啟動 buildlinux2.sh 試試看。
==========================================================================
假設要安裝 10 GB 之虛擬 Linux,其硬碟規畫如下:
/dev/sda1 / ext4 2G
/dev/sda2 /usr ext4 2.5G
/dev/sda3 swap swap 2G
/dev/sda4 /home xfs *
其 preseed 語法如下:
d-i partman-auto/expert_recipe string
boot-root ::
2048 2100 4096 ext4
$primary{ } $bootable{ }
method{ format } format{ }
use_filesystem{ } filesystem{ ext4 }
mountpoint{ / }
.
2048 3000 4096 ext4
method{ format } format{ }
use_filesystem{ } filesystem{ ext4 }
mountpoint{ /usr }
.
1024 1500 300% linux-swap
method{ swap } format{ }
.
100000 1000000000 -1 xfs
method{ format } format{ }
use_filesystem{ } filesystem{ xfs }
mountpoint{ /home }
https://wiki.debian.org/DebianInstaller/Preseed
這種安裝方式是透過一個預先作好的設定檔,檔案為 preseed.cfg (可自定檔案),裡面針對所需要的系統配置來定義要如何分割硬碟、安裝那些套件、root 密碼定義、一般使用者帳號、密碼定義,以及預設鏡像站 .. 等皆可設定在 pressed.cfg 中。
請至上課用 ftp 站下載預先建立好的 preseed.cfg,放在
http://192.168.10.254/preseed.cfg
用瀏灠器觀看其內容,看看是否有讀取的權限。
安裝
請修改 buildlinux1.sh 至 buildlinux2.sh,並將 boot d 改為 boot n,使用網路開機,在開機選單中按 TAB,加上底下設定:
auto=true url=http://192.168.10.254/preseed.cfg
然後按 Enter,看看系統會不會自動安裝。
這種手動安裝方式比較麻煩,還要在開機時按 TAB 進入開機選單編輯,如果要作全自動的安裝,請在 pxe server 底下的
/srv/tftp/debian-installer/amd64/boot-screens/txt.cfg 中將
append vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet
改成
append vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet auto=true priority=critical url=http://192.168.10.254/preseed.cfg
然後再重新啟動 buildlinux2.sh 試試看。
==========================================================================
假設要安裝 10 GB 之虛擬 Linux,其硬碟規畫如下:
/dev/sda1 / ext4 2G
/dev/sda2 /usr ext4 2.5G
/dev/sda3 swap swap 2G
/dev/sda4 /home xfs *
其 preseed 語法如下:
d-i partman-auto/expert_recipe string
boot-root ::
2048 2100 4096 ext4
$primary{ } $bootable{ }
method{ format } format{ }
use_filesystem{ } filesystem{ ext4 }
mountpoint{ / }
.
2048 3000 4096 ext4
method{ format } format{ }
use_filesystem{ } filesystem{ ext4 }
mountpoint{ /usr }
.
1024 1500 300% linux-swap
method{ swap } format{ }
.
100000 1000000000 -1 xfs
method{ format } format{ }
use_filesystem{ } filesystem{ xfs }
mountpoint{ /home }
2016年5月16日 星期一
CIC IC 競賽元件庫安裝
請先完成
再執行此部份流程。
Cell Library 標準元件庫是 Cell Base 流程的基礎,也是編譯 RTL 碼不可或缺的重要元素,所謂的標準元件庫是指由 AND、OR、NOT、XOR、FlipFlops .. 等構成的元件庫,這些元件可以用來組合成「所有」的數位電路。
由於 Cell Library 為各 EDA 大廠的智慧財產權,沒有申請前無法下載、使用商業版的 Cell Library,只能使用 CIC 所提供的 IC 競賽元件庫,底下介紹流程。
下載
CBDK_IC_Contest_v2.1.tar
解壓縮
請解壓縮至 /opt/PROCESS 目錄下
tar xfva CBDK_IC_Contest_v2.1.tar -C /opt/PROCESS
此時會出現底下目錄
/opt/PROCESS/CBDK_IC_Contest_v2.1/SynopsysDC
裡面有兩個子目錄,分別是 db 及 lib 目錄。
設定
請在 DC 的選單中執行:
File -> Setup
此時會出現 Setup 視窗,請在此視窗設定三個參數,分別如下:
Link Library
/opt/PROCESS/CBDK_IC_Contest_v2.1/SynopsysDC/db/fast.db
Target Library
/opt/PROCESS/CBDK_IC_Contest_v2.1/SynopsysDC/db/fast.db
Symbol Library
/opt/EDA/synthesis/cur/libraries/syn/class.sdb
並且將其它元件庫刪掉。
編譯:
如果一切都沒問題的話,我們可以執行編譯的流程,在編譯前請選 Logical Hierarchy 視窗中的 half_adder,並看其 Schematic (圖示在上方),我們會發現電路目前是一個十字符號。接著請執行選單:
Design -> Compile Design
此時會出現一個視窗作微調,在此我們不作任何微調,直接點選 OK 按鍵。點選 OK,Design Compiler 會自動進行電路編譯,並作最佳化,作完之後再點選 Schematic 即可看到編譯完之電路,理論上應該是最精簡的電路。編譯完之電路請選
File -> Save As 將編譯完之後的電路存為 ha_compile.v,其內容如下:
/////////////////////////////////////////////////////////////
// Created by: Synopsys DC Expert(TM) in wire load mode
// Version : K-2015.06-SP5
// Date : Tue May 17 11:08:48 2016
/////////////////////////////////////////////////////////////
module half_adder ( x, y, Sum, Cout );
input x, y;
output Sum, Cout;
XOR2X1 U3 ( .A(y), .B(x), .Y(Sum) );
AND2X1 U4 ( .A(y), .B(x), .Y(Cout) );
endmodule
我們可以很明顯的看出此段程式是由 Design Complier 所編譯出來,它使用到的 AND 及 XOR 閘的名稱分別是 AND2X1 以及 XOR2X1,這不是基本 Verilog 閘,所以如果我們使用 cver 來編譯這檔案,會出現底下錯誤:
cver ha_compile.v
GPLCVER_2.12a of 05/16/07 (Linux-elf).
Copyright (c) 1991-2007 Pragmatic C Software Corp.
All Rights reserved. Licensed under the GNU General Public License (GPL).
See the 'COPYING' file for details. NO WARRANTY provided.
Today is Tue May 17 11:32:39 2016.
Compiling source file "ha_compile.v"
Unresolved modules or udps:
XOR2X1
AND2X1
2 modules or udps unresolved after library processing - cannot continue.
Unable to begin simulation.
End of GPLCVER_2.12a at Tue May 17 11:32:39 2016 (elapsed 0.0 seconds).
這兩個錯誤的意思是 XOR2X1 及 AND2X1 是找不到的電路模組,要解決這個問題,我們還是要來看 CIC 所提供的元件庫,在
/opt/PROCESS/CBDK_IC_Contest_v2.1/Verilog/tsmc13.v 中可以看到其中有 AND2X1 及 XOR2X1 之定義。因此我們可以將此檔複製過來我們跑模擬的目錄,再執行:
cver ha_compile.v tsmc13.v
此時應該不會有任何錯誤。
最後我們再加上 testfixture 檔,看看能不能跑波型出來:
cver ha_compile.v tsmc13.v test_ha.v
此時一樣會生出新的 testha.dmp,並且可以使用 gtkwave 觀察出波形,我們可以看到這邊的波形是有輸入 -> 輸出 延遲的。
到這邊為止,我們已經完成 Design Compiler 編譯 RTL 碼至 Gate Level 碼的流程,並又使用 cver 來重新驗證所跑出來的 Gate Level 碼是否能正確模擬出波形來。
Synopsys Design Compiler/Synthesis 之安裝
再執行此部份流程。
Cell Library 標準元件庫是 Cell Base 流程的基礎,也是編譯 RTL 碼不可或缺的重要元素,所謂的標準元件庫是指由 AND、OR、NOT、XOR、FlipFlops .. 等構成的元件庫,這些元件可以用來組合成「所有」的數位電路。
由於 Cell Library 為各 EDA 大廠的智慧財產權,沒有申請前無法下載、使用商業版的 Cell Library,只能使用 CIC 所提供的 IC 競賽元件庫,底下介紹流程。
下載
CBDK_IC_Contest_v2.1.tar
解壓縮
請解壓縮至 /opt/PROCESS 目錄下
tar xfva CBDK_IC_Contest_v2.1.tar -C /opt/PROCESS
此時會出現底下目錄
/opt/PROCESS/CBDK_IC_Contest_v2.1/SynopsysDC
裡面有兩個子目錄,分別是 db 及 lib 目錄。
設定
請在 DC 的選單中執行:
File -> Setup
此時會出現 Setup 視窗,請在此視窗設定三個參數,分別如下:
Link Library
/opt/PROCESS/CBDK_IC_Contest_v2.1/SynopsysDC/db/fast.db
Target Library
/opt/PROCESS/CBDK_IC_Contest_v2.1/SynopsysDC/db/fast.db
Symbol Library
/opt/EDA/synthesis/cur/libraries/syn/class.sdb
並且將其它元件庫刪掉。
編譯:
如果一切都沒問題的話,我們可以執行編譯的流程,在編譯前請選 Logical Hierarchy 視窗中的 half_adder,並看其 Schematic (圖示在上方),我們會發現電路目前是一個十字符號。接著請執行選單:
Design -> Compile Design
此時會出現一個視窗作微調,在此我們不作任何微調,直接點選 OK 按鍵。點選 OK,Design Compiler 會自動進行電路編譯,並作最佳化,作完之後再點選 Schematic 即可看到編譯完之電路,理論上應該是最精簡的電路。編譯完之電路請選
File -> Save As 將編譯完之後的電路存為 ha_compile.v,其內容如下:
/////////////////////////////////////////////////////////////
// Created by: Synopsys DC Expert(TM) in wire load mode
// Version : K-2015.06-SP5
// Date : Tue May 17 11:08:48 2016
/////////////////////////////////////////////////////////////
module half_adder ( x, y, Sum, Cout );
input x, y;
output Sum, Cout;
XOR2X1 U3 ( .A(y), .B(x), .Y(Sum) );
AND2X1 U4 ( .A(y), .B(x), .Y(Cout) );
endmodule
我們可以很明顯的看出此段程式是由 Design Complier 所編譯出來,它使用到的 AND 及 XOR 閘的名稱分別是 AND2X1 以及 XOR2X1,這不是基本 Verilog 閘,所以如果我們使用 cver 來編譯這檔案,會出現底下錯誤:
cver ha_compile.v
GPLCVER_2.12a of 05/16/07 (Linux-elf).
Copyright (c) 1991-2007 Pragmatic C Software Corp.
All Rights reserved. Licensed under the GNU General Public License (GPL).
See the 'COPYING' file for details. NO WARRANTY provided.
Today is Tue May 17 11:32:39 2016.
Compiling source file "ha_compile.v"
Unresolved modules or udps:
XOR2X1
AND2X1
2 modules or udps unresolved after library processing - cannot continue.
Unable to begin simulation.
End of GPLCVER_2.12a at Tue May 17 11:32:39 2016 (elapsed 0.0 seconds).
這兩個錯誤的意思是 XOR2X1 及 AND2X1 是找不到的電路模組,要解決這個問題,我們還是要來看 CIC 所提供的元件庫,在
/opt/PROCESS/CBDK_IC_Contest_v2.1/Verilog/tsmc13.v 中可以看到其中有 AND2X1 及 XOR2X1 之定義。因此我們可以將此檔複製過來我們跑模擬的目錄,再執行:
cver ha_compile.v tsmc13.v
此時應該不會有任何錯誤。
最後我們再加上 testfixture 檔,看看能不能跑波型出來:
cver ha_compile.v tsmc13.v test_ha.v
此時一樣會生出新的 testha.dmp,並且可以使用 gtkwave 觀察出波形,我們可以看到這邊的波形是有輸入 -> 輸出 延遲的。
到這邊為止,我們已經完成 Design Compiler 編譯 RTL 碼至 Gate Level 碼的流程,並又使用 cver 來重新驗證所跑出來的 Gate Level 碼是否能正確模擬出波形來。
Synopsys Design Compiler/Synthesis 之安裝
Design Compiler/Synthesis 的目的是用來編譯 (Compile) 硬體描述語言所寫出來的電路,將 RTL 碼轉成 Gate Level 碼,以便進行電路合成 (Synthesis) 用。
下載:
請至 CIC 網頁下載
synthesis_2016.03_linux.tgz
lc_2015.06-sp3_linux.tgz
mvtools_2014.12-sp1_linux.tgz
DFT-Compiler.zip
Design-Compiler.zip
Power-Compiler.zip
installation_guide_synopsys.txt
解壓縮
請將 synthesis_2016.03_linux.tgz 解開至 /opt/EDA 目錄中,此時會出現
/opt/EDA/synthesis/cur 目錄
設定
請在 ~/.bashrc 中設定底下內容:
DC_bin="/opt/EDA/synthesis/cur/bin"
export PATH=$PATH:$DC_bin
執行
一開始執行 dc_shell 時,會出現底下錯誤:
$ dc_shell
/opt/EDA/synthesis/cur/linux64/syn/bin/common_shell_exec: error while loading shared libraries: libtiff.so.3: cannot open shared object file: No such file or directory
這個問題是因為它綁了一個很舊的函式庫叫 libtiff.so.3,如果到 /usr/lib 底下尋找的話,會發現最舊的版本是 libtiff.so.4,如底下所示:
/usr/lib$ find ./ -name libtiff.so*
./x86_64-linux-gnu/libtiff.so.5
./x86_64-linux-gnu/libtiff.so.5.2.0
./x86_64-linux-gnu/libtiff.so.4.3.6
./x86_64-linux-gnu/libtiff.so.4
./i386-linux-gnu/libtiff.so.5
./i386-linux-gnu/libtiff.so.5.2.0
我們使用鋸箭法來解決這個問題,請以 root 權限 至 /usr/lib/x86_64-linux-gnu/ 下建立一個 libtiff.so.3 的連結,指令如下:
cd /usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu # ln -s libtiff.so.4.3.6 libtiff.so.3
此時看到有一個 libtiff.so.3 的連結,之後再執行:
$ dc_shell -gui
看看可否正常執行。
測試
從 Design Compiler 的 GUI 畫面中載入 ha_rtl.v 看看能不能看到電路模組 ?
接下來請參考
CIC IC 競賽元件庫安裝
下載:
請至 CIC 網頁下載
synthesis_2016.03_linux.tgz
lc_2015.06-sp3_linux.tgz
mvtools_2014.12-sp1_linux.tgz
DFT-Compiler.zip
Design-Compiler.zip
Power-Compiler.zip
installation_guide_synopsys.txt
解壓縮
請將 synthesis_2016.03_linux.tgz 解開至 /opt/EDA 目錄中,此時會出現
/opt/EDA/synthesis/cur 目錄
設定
請在 ~/.bashrc 中設定底下內容:
DC_bin="/opt/EDA/synthesis/cur/bin"
export PATH=$PATH:$DC_bin
執行
一開始執行 dc_shell 時,會出現底下錯誤:
$ dc_shell
/opt/EDA/synthesis/cur/linux64/syn/bin/common_shell_exec: error while loading shared libraries: libtiff.so.3: cannot open shared object file: No such file or directory
這個問題是因為它綁了一個很舊的函式庫叫 libtiff.so.3,如果到 /usr/lib 底下尋找的話,會發現最舊的版本是 libtiff.so.4,如底下所示:
/usr/lib$ find ./ -name libtiff.so*
./x86_64-linux-gnu/libtiff.so.5
./x86_64-linux-gnu/libtiff.so.5.2.0
./x86_64-linux-gnu/libtiff.so.4.3.6
./x86_64-linux-gnu/libtiff.so.4
./i386-linux-gnu/libtiff.so.5
./i386-linux-gnu/libtiff.so.5.2.0
我們使用鋸箭法來解決這個問題,請以 root 權限 至 /usr/lib/x86_64-linux-gnu/ 下建立一個 libtiff.so.3 的連結,指令如下:
cd /usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu # ln -s libtiff.so.4.3.6 libtiff.so.3
此時看到有一個 libtiff.so.3 的連結,之後再執行:
$ dc_shell -gui
看看可否正常執行。
測試
從 Design Compiler 的 GUI 畫面中載入 ha_rtl.v 看看能不能看到電路模組 ?
接下來請參考
CIC IC 競賽元件庫安裝
2016年5月11日 星期三
安裝、架設 DNS 伺服器
2019/10/21 修訂
參考資料:
http://www.l-penguin.idv.tw/article/dns.htm
http://www.twbsd.org/cht/book/ch22.htm
定義:
網域為:my.com,192.168.10.0/24
閘道 IP:192.168.10.1
PXE 伺服器 IP:192.168.10.254 -> pxe.my.com
其它每台主機的名稱為:
192.168.10.1 -> host1.my.com, gateway.my.com
192.168.10.2 -> host2.my.com
..
192.168.10.254 -> host254.my.com, pxe.my.com, dns.my.com
安裝 DNS 伺服器
# apt-get install bind9
設定 DNS 伺服器
主要設定檔位置:/etc/bind/named.conf -> 此檔應該不必修改,要修改的是所參考到的檔案。
/etc/bind/named.conf.default-zones 新增底下片段:
zone "my.com" IN {
type master;
file "/etc/bind/db-my.com";
allow-update { none; };
};
接著編輯 /etc/bind/db-my.com 這個檔案,其內容如下:
$TTL 86400
$ORIGIN my.com.
@ 1D IN SOA @ root.my.com. (
2015041601 ; 修改序號
3H ; refresh
15M ; retry
參考資料:
http://www.l-penguin.idv.tw/article/dns.htm
http://www.twbsd.org/cht/book/ch22.htm
定義:
網域為:my.com,192.168.10.0/24
閘道 IP:192.168.10.1
PXE 伺服器 IP:192.168.10.254 -> pxe.my.com
其它每台主機的名稱為:
192.168.10.1 -> host1.my.com, gateway.my.com
192.168.10.2 -> host2.my.com
..
192.168.10.254 -> host254.my.com, pxe.my.com, dns.my.com
安裝 DNS 伺服器
# apt-get install bind9
設定 DNS 伺服器
主要設定檔位置:/etc/bind/named.conf -> 此檔應該不必修改,要修改的是所參考到的檔案。
/etc/bind/named.conf.default-zones 新增底下片段:
zone "my.com" IN {
type master;
file "/etc/bind/db-my.com";
allow-update { none; };
};
接著編輯 /etc/bind/db-my.com 這個檔案,其內容如下:
$TTL 86400
$ORIGIN my.com.
@ 1D IN SOA @ root.my.com. (
2015041601 ; 修改序號
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS dns.my.com.
dns.my.com. IN A 192.168.10.254
;設定 MX record
;@ IN MX 10 ms1
;@ IN MX 20 ms2
;ms1 IN A 11.22.33.69
;ms2 IN A 11.22.33.70
;www 10 IN A 11.22.33.85 ;www 做 load balancing
;www 10 IN A 11.22.33.86 ;www 做 load balancing
;web IN CNAME www ;讓 web.abc.com.tw 也指到 www
gateway IN A 192.168.10.1;
pxe IN A 192.168.10.254;
host1 IN A 192.168.10.1;
host2 IN A 192.168.10.2;
host3 IN A 192.168.10.3;
..
host254 IN A 192.168.10.254;
設定好之後請重啟 bind9
# systemctl restart bind9.service
# systemctl status bind9.service
並修改 /etc/resolv.conf 之內容如下:
search my.com
nameserver 192.168.10.254
再看看是否能順利進行正解:
nslookup host1.my.com
此時如果進行反解查詢,應該是找不到資料(因為我們還未設定)。
接下來要進行反解設定,請先在 /etc/bind/named.conf.default-zones 這個檔案中再
新增底下片段:
zone "10.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db-192.168.10";
};
其中 10.168.192.in-addr.arpa 是設定 192.168.10.X 這個網段的資料,而
/etc/bind/db-192.168.10 這個檔案則是設定反查之紀錄,其內容如下:
;BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE - it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL 86400
@ IN SOA my.com. root.my.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
;@ IN NS dns.my.com.
IN NS my.com.
1 IN PTR gateway.my.com.
254 IN PTR dns.my.com.
254 IN PTR pxe.my.com.
1 IN PTR host1.my.com.
2 IN PTR host2.my.com.
3 IN PTR host3.my.com.
4 IN PTR host4.my.com.
..
254 IN PTR host254.my.com.
設定完之後請再次重啟 bind9,並作正、反解查詢,如果沒有設定錯誤的話,現在
應該可以順利的進行正反解。
接著,我們來看看此 DNS 設定是否能查詢到外界網域,請執行:
nslookup www.google.com
理論上應該沒有問題,因為 dns 預設會往上查詢網路上已存在之正、反解資料。
設定 bind 只查 IPV4
# vi /etc/default/bind9
將 OPTIONS 改成底設定:
OPTIONS="-4 -u bind"
然後再重新啟動 /etc/init.d/bind9
# vi /etc/default/bind9
將 OPTIONS 改成底設定:
OPTIONS="-4 -u bind"
然後再重新啟動 /etc/init.d/bind9
訂閱:
文章 (Atom)