顯示具有 鏡像站 標籤的文章。 顯示所有文章
顯示具有 鏡像站 標籤的文章。 顯示所有文章

2014年5月29日 星期四

備份 Embedebian 鏡像站

目的:備份 Embedebian 鏡像站

Embedebian 是提供 Debain 的嵌入式版本套件,特別是 ARM 的 Cross Compile 環境,在建置嵌入式系統開發時需要 Embedebian 所提供的套件才能編譯原始碼 (如 Linux 核心、bootloader) 或是進行其它工作。

一般來說我們都是直接自 Embedebian 網站上下載套件,其方式是先在 /etc/apt/sources.list 設定底下這兩行:

deb http://ftp.tw.debian.org/debian/ squeeze main
deb http://www.emdebian.org/debian/ squeeze main

加完之後執行

apt-get update

更新套件狀態,

然後先安裝 emdebian-archive-keyring 套件以免出現套件驗證錯誤,再安裝底下套件:

g++-4.4-arm-linux-gnueabi
cpp-4.4-arm-linux-gnueabi
gcc-4.4-arm-linux-gnueabi

接下來可以試著編譯 arm 底下的程式。請先建一個 hello.c 之檔案,內容如下:

#include <stdio.h>

void main(void)
{
  printf("Hello World\n");
}

然後使用 gcc 來編譯:

gcc hello.c -o hello

接著可以用 file 來觀看其屬性:

file hello

我們可以看到此檔為 x86-64 之可執行檔,如底下所示:

hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0xe899e4c904b6efa70bd90c9a293d37109e111e59, not stripped

接下來可以使用 arm-linux-gnueabi-gcc-4.4 來編譯此檔使其成為 ARM 之可執行檔,這個過程也就是所謂的 Cross Compile

arm-linux-gnueabi-gcc-4.4 hello.c -o hello_arm

然後使用 file 來觀看其輸出:

file hello_arm

如底下所示,是 ARM 平台的可執行檔:

hello_arm: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x1c0380de88d986d10d6fb8ef5fa9492f4bd410dd, not stripped


----------------------------------------------------------------------

請執行 getemdebian.sh 來下載 www.emdebian.org/debian 目錄,其內容如下:

debmirror \
        --arch=armel,i386,amd64 \
        --dist=squeeze,wheezy \
        --host=www.emdebian.org \
        --root="debian" \
        --diff=none -p \
        --nosource \
        --method=http \
        --section main,contrib,non-free,main/debian-installer,main/installer-armel,main/i18n,main/source \
        --ignore-release-gpg /home/ftp/emdebian/ ;
date



建立好 emdebian 鏡像之後,我們可以把 /etc/apt/sources.list 改成:

deb http://ftp.tw.debian.org/debian/ squeeze main
#deb http://www.emdebian.org/debian/ squeeze main
deb ftp://localhost/emdebian/ squeeze main

完成此流程後,我們就可以把 ARM cross compiler 放在自建鏡像站的 emdebian 目錄下,「理論上」無需再透過網路上網下載檔案,但是記得隨時更新套件狀態,以免有漏洞未更新造成系統安全問題。

2014年5月22日 星期四

自建 Debian 鏡像站

2019/10/14 修改

目的:自建 Debian 鏡像站 (MIRROR)

在安裝 Debian Linux 的過程中,常常需要使用網路進行遠端連線來下載套件 (packages), 如果網路連線有問題的話,我們經常無法進行套件下載或更新的操作。這對執行專案是項極大的困擾,為了不讓網路干擾我們進行下載,因此必須自行建立 Debian 鏡像站。

Debian 支援相當多硬體架構,因此官方鏡像站需要相當多的容量才可以儲存所有套件,我們的計畫僅需要底下架構:

X86_64 (amd64)
i386 (i386)
EABI ARM (armel)
Hard Float ABI ARM (armhf)
ARM64 (arm64)

其它架構的檔案無需下載,以節省硬碟空間。要自建 Debian 鏡像站的流程如下:

1. 建立 ftp 伺服器

2. 下載 Debian 套件

3. 啟動服務

4. 設定 /etc/apt/sources.list

------------------------------

如果我們希望所下載的 Debian 鏡像站可以提供給 pxeserver 使用的話,還必須

利用 NFS 的方式將 Debian 鏡像站的目錄分享給 pxeserver。

=========================================

1. 建立 ftp 伺服器

請以 root 權限執行:

# apt-get install proftpd-basic

安裝完畢後,請修改 /etc/proftpd/proftpd.conf 這個檔案,將底下部份移除行首之 #
(註解),移除完之結果如底下所述:

---------
 <Anonymous ~ftp>
   User                         ftp
   Group                                nogroup
   # We want clients to be able to login with "anonymous" as well as "ftp"
   UserAlias                    anonymous ftp
   # Cosmetic changes, all files belongs to ftp user
   DirFakeUser  on ftp
   DirFakeGroup on ftp

   RequireValidShell            off

   # Limit the maximum number of anonymous logins
  MaxClients                    70

   # We want 'welcome.msg' displayed at login, and '.message' displayed
   # in each newly chdired directory.
   DisplayLogin                 welcome.msg
   DisplayChdir         .message

   # Limit WRITE everywhere in the anonymous chroot
   <Directory *>
     <Limit WRITE>
       DenyAll
     </Limit>
   </Directory>

   # Uncomment this if you're brave.
   # <Directory incoming>
   #   # Umask 022 is a good standard umask to prevent new files and dirs
   #   # (second parm) from being group and world writable.
   #   Umask                            022  022
   #            <Limit READ WRITE>
   #            DenyAll
   #            </Limit>
   #            <Limit STOR>
   #            AllowAll
   #            </Limit>
   # </Directory>

 </Anonymous>
--------

接著請修改 /etc/passwd 將 ftp 的家目錄由 /srv/ftp 改至 /home/ftp

修改完成後,請執行 proftpd-basic 服務,指令如下:


# /etc/init.d/proftpd restart
[ ok ] Stopping ftp server: proftpd.
[ ok ] Starting ftp server: proftpd.

啟動完畢後,我們可以使用 iceweasel 或是 gftp 來驗證自己的 ftp 站是否已完成架設。

=========================================

2. 下載 Debian 套件

由於 Debian 套件所佔之容量極為龐大,要下載 Debian 套件前請先確定自己的 /home/ftp 目錄是否有至少 150 GB 的容量,以免硬碟容量不足。


接下來請安裝 debmirror 套件,以便下載 Debian 鏡像站,接著請撰寫底下 script:

#HOST=ftp.tw.debian.org
HOST=debian.nctu.edu.tw
#HOST=opensource.nchc.org.tw
#HOST=ftp.twaren.net

debmirror \
        --arch=i386,amd64,armel,armhf \
        --dist=buster,buster-updates,buster-backports \
        --di-arch=i386,amd64,armel \
        --di-dist=stable \
        --host=$HOST \
        --root=":debian" \
        --diff=none -p \
        --nosource \
        --method=rsync \
        --section main,contrib,non-free \
        --i18n \
        --ignore-release-gpg /home/ftp/debian/ ;


此 script 請放在 /home/ftp 目錄下,執行:

# sh getdeb.sh

接著此 script 就會自動進行 Debian 套件下載的工作,我們也可以使用 crontab

讓此工作定期 (每日凌晨 2 點) 執行。




4. 設定 /etc/apt/sources.list

請修改 /etc/apt/sources.list

加上以下兩行:


deb file:/home/ftp/debian/ buster main contrib non-free

deb ftp://127.0.0.1/debian buster main contrib non-free
deb ftp://localhost/debian buster main contrib non-free


其中第一行是指在本機端下載套件時,可以不經由 ftp 傳輸協定,直接使用檔案複製的方式來進行套件下載。

第二行則是透過 ftp 傳輸協定,自 127.0.0.1 下載套件,請注意 lo 介面要打開,否則沒有 ftp://localhost 或 ftp://127.0.0.1。因此我們新的 /etc/apt/sources.list 可以只保留底下這幾行:

deb file:/home/ftp/debian/ buster main contrib non-free

deb ftp://127.0.0.1/debian buster main contrib non-free
#deb ftp://localhost/debian buster main contrib non-free

deb http://security.debian.org/ stable/updates main contrib

修改完畢後,可以在本機端使用

apt-get update
apt-get upgrade

apt-get install 套件

來進行安裝測試,以確認自己所架設之 Debian 鏡像站可以正常運轉。

2011年4月14日 星期四

管理鏡像站

將下載鏡像站改成校內:

鏡像站位置: ftp://120.117.72.71

設定下載鏡像站之設定檔

/etc/apt/sources.list

裡面內容如下:

#deb cdrom:[Debian GNU/Linux testing _Wheezy_ - Official Snapshot amd64 CD Binary-1 20130415-13:45]/ wheezy main

這一行是指定 Debian 從 cdrom 下載第一片的資料,我們不需要,因此可以在最前面打 # 註記起來。

#deb http://ftp.twaren.net/debian/ squeeze main

這一行是指定 Debian 從 ftp.twaren.net 下載編譯過之二進位檔,其網路協定為 http,由於它是校外網站,因此我們亦將其註解起來。

deb ftp://163.26.229.6/debian/ squeeze main

這一行是指定 ftp://163.26.229.6 為下載鏡像站,此站專門為南台所設定,因此我們將下載點改為此站會加快下載速度。

deb-src http://ftp.twaren.net/debian/ squeeze main

這一行是指定未編譯的原始檔下載網站,通常我們不會自行下載原始碼來編譯,所以這個設定沒太大用處。

deb http://security.debian.org/ squeeze/updates main
這一行是全球統一之安全性更新網站,十分重要

deb-src http://security.debian.org/ squeeze/updates main
同上,此行設定為安全性更新之原始碼檔案

修改 /etc/apt/sources.list 完畢後,我們可以執行

apt-get update (更新套件狀態)

在 Windows 底下經常會有:你有 ?? 個可升級(更新)之檔案,請盡速更新。

所謂的「更新套件狀態」是指將你已安裝之套件與網路上現有之最新套件作一比較,若有較新之套件,即可透過下面指令來升級。

apt-get upgrade (升級套件)

將本機套件升級至目前網路上可下載之最新套件。

如何修改 /etc/apt/sources.list 檔案

1. 正統方式:使用 vi,但是 vi 我們還沒教,請先參考鳥哥的書:
   第十章、vim 程式編輯器

2. 取巧方式:抓我已修改好之檔案來作為新的 sources.list 檔

2.1 cd /etc/apt
    切換至 /etc/apt 目錄

2.2 mv sources.list sources.list.orig
    將原始 sources.list 改名為 sources.list.orig

2.3 wget ftp://163.26.229.6/linux/sources.list
    下載我已修改完之 sources.list

2.4 cat sources.list
    觀察其內容是否 OK

aptitude 套件操作程式

由於作業系統愈來愈複雜,因此現在的套件會有所謂「相依性」的問題,例如在 windows 底下安裝遊戲時,遊戲會自動偵測我們的 directx 版本,若是沒有安裝 directx 或是其版本太舊,系統會自動幫我們安裝。

在 Linux 底下,同樣有相依性的問題,而且對於不懂套件間關係的人相當的複雜,為了拯救眾生,因此有所謂套件操作/管理程式。以 Debian 來說,我們使用

  1. apt-get 作為「指令式」的套件操作/管理
  2. aptitude 作為「文字介面式」的套件操作/管理,我們可以參考 ubuntu 的說明:http://wiki.ubuntu-tw.org/index.php?title=Aptitude

練習:

安裝 vim 套件/移除 vim 套件

安裝
  1. / -> 叫出 search for 小視窗,輸入 vim \Enter
  2. 出現套件裡有 vim 字串的程式,但不是我們要的,此時按 n 可以找下一個符合名稱的套件,一直按 n 直到找到我們要的套件為止。
  3. 按 + 準備安裝
  4. 按 g 安裝

移除
  1. / -> 叫出 search for 小視窗,輸入 vim \Enter
  2. 找到 vim
  3. 按 - 準備移除
  4. 按 g 移除

X-Window (xorg)

要安裝 X 視窗系統,我們使用命令列方式來安裝,請執行:

apt-get install xorg

來安裝 xorg 這個套件,安裝完如果直接執行

startx

即會進入 X 視窗,但是沒有 X window manager,因此我們還要再安裝 icewm,請執行 exit 離開 X 視窗,再執行:

apt-get install icewm

來安裝 icewm 這個視窗管理員 (X window manager),安裝完後執行

startx

此時即可看到 icewm 的介面,未來我們將依此為基礎來一步步改造 icewm 成為我們理想的視窗介面。


安裝瀏覽器

請執行

apt-get install iceweasel

來安裝瀏覽器,安裝完之後按滑鼠右鍵即可在選單裡發現 iceweasel,我們可以呼叫iceweasel 來瀏覽網頁,不過tw.yahoo.com 網頁會出現亂碼,這是因為我們中文字尚未安裝,接下來我們的課程將介紹這個部份。