顯示具有 Debian 標籤的文章。 顯示所有文章
顯示具有 Debian 標籤的文章。 顯示所有文章

2017年7月2日 星期日

[便攜式 Debian 系統實作] - 創建第一個 ISO hybrid 映像檔

(本文主要依據 Debian Live Systems Manual 翻譯)

不管映像檔類型為何,創建的基本步驟大致上都相同:

  1. 建立一個工作目錄,更改到該目錄。工作目錄的名稱可由你自己決定。在這個示範裡,我們使用 live-default 做為我們的工作目錄。
  2. 執行以下 live-build 命令序列,以創建一個基本的 ISO hybrid 映像檔(一個已預設好的不包含 X.org 的【便攜式系統】)。適用於刻錄到CD或DVD介質上,也可以復製到U盤上。部份指令需要系統管理員權限才能正確執行,為了方便起見,建議你一開始執行的時候,就直接切換為系統管理員登入。
mkdir live-default && cd live-default
lb config
lb build

創建【便攜式系統】需要花一點時間,當建好的時候,你可以在工作目錄下看到一個名為 binary.hybrid.iso 的映像檔(譯註:不同系統的  live-build ,產出的檔名有區別,我在 Ubuntu 下產生的檔名如上,另外在 Debian 8 64bits 版本下產生的則為 live-image-amd64.hybrid.iso)。

除了自己動手做外,你也可以使用其他人已經預先構建好的映像檔。live-images 即是一個用 git 儲存庫 (git repository) 管理的便攜式 Debian 系統專案。官方穩定版本發佈在在 https://www.debian.org/CD/live/ (譯註:其實就是 Debian 安裝光檔)。而舊版與即將發行的版本,以及包含非免費軟韌體的非官方版本則是發佈在 http://debian-live.alioth.debian.org/cdimage/release/ (譯註:似乎已不存在)。


[便攜式 Debian 系統實作] - 基礎作業系統架構

(本文主要依據 Debian Live Systems Manual 翻譯)

【便攜式系統】包含了一個根據目標環境而建立的作業系統,包括了以下幾個部份:


  1. Linux內核映像檔(Linux kernel image)。通常命名為 vmlinuz。
  2. 初始虛擬磁碟映像檔(Initial RAM disk image)。通常命名為 initrd。為 Linux 開機時所使用的虛擬磁碟,包含了一些用來掛載系統映像檔可能需要的模組,以及一些用來設置的腳本。
  3. 系統映像檔(System image)。此為作業系統的檔案系統映像檔。我們可使用 SquashFS 壓縮式檔案系統來縮小系統映像檔。這映像檔內容是唯讀的。因此,在開機過程中,【便攜式系統】將啟用虛擬磁碟和「聯合(union)」的機制來啟用系統執行時所需要寫入的檔案。只是,所有修改將在機器關機時丟失,除非我們使用永久性寫入功能(這是可選用的功能)。
  4. 關機加載程式(Bootloader)。一小段特製的程式可從選定的介質中載入,可用來選擇或配置系統,可能使用提示列或從一個選單輸入。當使用者選定了之後,它加載 Linux 內核及相對應的 initrd 以運行相關的系統檔案系統。根據介質和檔案系統格式,我但可使用不同的解決方案:
    • isolinux:從使用 ISO9660 格式的光碟載入。
    • syslinux:從使用 VFAT 分區啟動的硬碟或 USB 隨身碟載入。
    • extlinux:則是從 ext2/3/4 或 btrfs 分區的硬碟或 USB 隨身碟載入。
    • pxelinux:從 PXE 進行網路開機 (netboot)
    • GRUB:則是從 ext2/3/4 分區的硬碟或 USB 隨身碟載入。

[便攜式 Debian 系統實作] - 工具安裝

(本文主要依據 Debian Live Systems Manual 翻譯)

需求

  • 系統管理員(root)權限
  • live-build
  • bash
  • debootstrap or cdebootstrap
  • Linux 2.6 以上版本

安裝 live-build

apt-get update
apt-get install live-build

安裝 live-bootlive-config

以 apt-get 安裝 live-build 時,即會自動安裝此兩套件。


2017年6月29日 星期四

[便攜式 Debian 系統實作] - 名詞解釋

(本文主要依據 Debian Live Systems Manual 翻譯)


  • 便攜式系統 (Live System):不需安裝到硬碟即可開機使用的作業系統。
【便攜式系統】通常指的是從可移動介質(例如:CD-ROM 或 USB 隨身碟)或從網絡啟動的操作系統,不需要安裝到硬碟,在運行時即能完成自動配置,開機後即可使用。

一般來說,【便攜式系統】不會影響原本已存在計算機硬碟上的作業系統或檔案,除非我們有意為之。典型的【便攜式系統】可以用光碟或隨身碟開機,有些則能夠通過網路開機。
  • 便攜式介質 (Live medium):使用 live-build 生成出來的可開機的位元檔 (binary) ,可存放於指定的可執行開機程式的介質上,如:光碟、隨身碟 或 網路上存放可開機檔案的位置,都是我們這裡說的便攜式介質。
  • 便攜式系統專案 (Live Systems Project):本專案維護以下具包,包括:live-boot, live-build, live-config, live-toolslive-manual 等等。
  • 育成環境 (Host system):用於創建【便攜式系統】 的環境。
  • 目標環境 (Target system):用於運行【便攜式系統】的環境。
  • live-boot:用於開機載入【便攜式系統】的腳本集。
  • live-build:用於構建客製化的【便攜式系統】的腳本集。
  • live-config:用於在開機過程中配置【便攜式系統】的腳本集。
  • live-tools:在運行中的【便攜式系統】中,用於執行一些特定任務的附加腳本集。
  • live-manual:相關文件集。
  • Debian安裝程序 (Debian Installer (d-i)):Debian官方的軟體安裝系統。
  • 開機參數 (Boot parameters):可以在開機程式提示列輸入以設定內核或 live-config 的參數。 
  • chroot:此命令可使我們能在同一個系統裡同時運行不同的 GNU / Linux 的環境實例,而無需重新啟動系統。
  • 位元映像檔 (Binary image):【便攜式系統】的位元檔,如:live-image-i386.hybrid.iso 或 live-image-i386.img。
有三種最常用類型:

  1. iso-hybrid:可用於虛擬機,光學介質(CD/DVD) 或 USB 等便攜式存儲設備。 
  2. hdd:不適用於光學介質,但適用於 USB 隨身碟(包括:快閃記憶體 或 硬碟),在某些 BIOS 支援 iso-hybrid 有問題的電腦系統上,這可能是解決方案。
  3. netboot:此類型的映像檔需要伺服器的輔助,使用者需要有網路開機的知識與技術。但一旦安裝完成,它是一種非常低成本而便利的方法,可以在區域網路上進行電腦系統開機,而不需要進行一些映像檔燒錄進介質的動作,通常可用來測試並部署映像檔。
  • 目標發行版 (Target distribution:):【便攜式系統】所依據的 Linux 發行版。這可能與【育成環境】的 Linux 發行版不同。
  • 穩定/測試/不穩定 (stable/testing/unstable):
    • 穩定的發行版:目前代號為 jessie,包含 Debian 最新正式發行的發行版。
    • 測試的發行版:(暫時代號為 stretch)是下一個穩定版本的待待命集結區。使用此發行版的主要優點是它具有相對於穩定版本的更新版本的軟件。
    • 不穩定的分配:永久代號為 sid,是 Debian 積極發展的區域。一般來說,這種分配由開發人員所管理。

譯註:

將 Live System 翻成【便攜式系統】,我相信一定有很多人不滿意,甚至存在許多人可能會認為乾脆不翻,直接使用 Live System 會比較貼近真義。

我認為所謂的貼近真義是陷入一種迷思中。

這道理很簡單,若你拿 Live System 去問不是一個相關領域的人,看看他們能不能一聽到 Live System 就能能聯想到「一種系統,不用安裝到硬碟就能執行」。我敢說,就算是以英文為母語的人,也不可能望文生義。

就像我們把 macro 翻譯【巨集】或【宏】,是因為在我們腦中看到這,便存有巨大的集合或宏大的圖像嗎?

當然,不是。

是因為我們知道 macro、【巨集】或【宏】是什麼東西,做什麼用的,我們將這功能與這名字做了聯結,所以才會「望文生義」。

Live System 算是一種新詞,其實我認為也應該造一個新詞來做聯結是比較好一點,我看到的譯法中,我覺得【自生系統】是比較好又貼近英文的譯法,不過,我總覺得那裡怪怪的,所以,還是使用了比較穩健的【便攜式系統】來當 Live System 的中譯,畢竟這概念與 Portable Software 是有點像的(原來是使用可攜式系統,後來改用便攜式系統)。

不過,我開始這研究不是為了可攜式目的的,而是希望設計一套系統,平時可將耗電的硬碟關閉,只靠隨身碟來運作,只有在需要時才把硬碟打開。

【便攜式系統】可以做的東西很多,可攜性只是其中一個特性而已--雖然是很重要的一項。希望大家不會因為這名字而限制了對這系統使用上的想像。

2017年1月23日 星期一

在 Debian 安裝 SSH Server

1. 安裝相關套件

sudo apt-get update
sudo apt-get install openssh-server


2. 相關設定檔

2.1. sshd_config

/etc/ssh/sshd_config

2.1.1. 安全性設定

# What ports, IPs and protocols we listen for
Port 12345

SSH 預設使用 port 22,建議更改,特別在面向網路網路使用時,幾乎只要一上網就會被攻擊。埠號可自定,不要與使用中的埠號即可。

PermitRootLogin prohibit-password

建議不要使用 root 登入 SSH,所以可將 PermitRootLogin 設為 no。但讓 root 能登入有時候滿方便的,特別是有時需要傳一些需要 root 權限的檔案時,可以省掉一些操作上的麻煩。所以這裡使用 prohibit-password,再加上使用免密碼登入方式,就可以讓 root 能登入 SSH,且能保持一定程度的安全性。

#AllowUsers cy # NOTE! this will disable root login

可限定只有某些使用者登入,值得注意的是,若沒有加入 root,將會使 root 不能登入,即使 PermitRootLogin 為 yes 或 prohibit-password 亦然。在我的 Server 並未實作此項,所以前面加 #。

2.1.2. 效能性設定

UseDNS no

加了這個據說能加速登入速度。



3. 資源管理

3.1. 最好不要使用的帳號名

以下為我曾被攻擊的帳號名,最好不要使用這些帳號,特別是 admin:

0
0000
1111
1234
123456
adam
adm
admin
agent
anonymous
apache
bill
cisco
client
customer
default
edu
ftp
ftpuser
guest
jack
john
manager
mark
master
mike
nagios
operator
oracle
osmc
pi
plcmspip
raspberry
sales
scan
service
steve
super
support
Taiwan
test
testuser
tiffany
ubnt
uploader
user
user1
usuario
vyatta
www


4. 測試

4.1. ssh 登入測試:

cy@cyvm:~$ ssh -p 12345 cy@192.168.0.1

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
No mail.
Last login: Sat Mar 18 11:25:52 2017 from 192.168.0.2

4.2. ssh 登入測試:

cykuo@cyvm:~$ scp -P 12345 -i ~/keys/cy_ssh_key test.file root@192.168.0.1:~/root_work_dir
test.file                     100%  273     0.3KB/s   00:00


5. 服務管理

安裝完會自動啟動服務,其餘服務常用操作指令如下所列。

systemctl status sshd.service
systemctl restart sshd.service
systemctl enable sshd.service


2016年10月22日 星期六

apt 執行小技巧收集

(1) 在執行 apt-get update 出現以下訊息時該如何處理?
The following packages were automatically installed and are no longer required:
(答)
sudo apt-get autoremove


(2) 如何查詢套裝軟體資訊?
(答)
  • 簡單列示:
apt list <package_name>

  • 完整資訊:
apt show <package_name>

  • 查詢套件:


apt search <package_name_pattern>
apt-cache search <package_name_pattern>

2012年6月13日 星期三

安裝 Debian 的特殊方法 - WAN 安裝篇

因為我實驗 Linux 多使用舊機器,硬體常常掛點,特別是現在的硬碟品質很差,二手的硬碟最多撐個一年多就掛了,所以常常需要重灌。而實驗的機器往往沒有掛光碟機,所以重灌時裝光碟機很麻煩(我可沒錢投資外接光碟),而且現在的 Linux 版本更新很快,燒一張安裝光碟不久之後就可能成了垃圾。

所以,我多半使用網路安裝的方式來進行系統的安裝。

網路安裝很簡單,只要到 Debian 網站 Official netinst images for the "stable" release  處下載 linux(核心)與 initrd.gz(啟始記憶體式碟片映像壓縮檔) ,放到 /boot 目錄(我通常會另外分割出一個磁碟分割區給 boot 目錄,所以下面檔案位置是根目錄),然後在 /boot/grub/grub.cfg 新增一個 menuentry 即可。

menuentry 'Install Debian' {
        set root='(hd0,msdos1)'
        linux  /linux
        initrd /initrd.gz
}

但是,這樣有一個明顯的缺點,因為首先你必須有一個舊的 Linux 系統在才行,若是全新安裝,那就要再另想方法了。過去我用過一種很笨的方法,就是先裝一個舊的 Linux 系統,選擇最簡安裝,再用上面所述方法安裝新的系統。

而且,若是安裝步驟進行到格式化 linux、initrd.gz 以及 grub 所在的磁碟分割區(通常是/boot),之後若是安裝有什麼差錯要重來一遍的話,那就前功盡棄,得重來一遍了。或許可以做 dual boot 來解決,但那也不算是什麼高明的方法(所以我也沒有實驗過,呵!呵!)。

後來,學會使用 grub4dos,就方便許多,因為理論上(目前未曾實作過)安裝 DOS 系統畢竟比安裝一個 Linux 系統快了許多了。而此法也能應用在一種常見的狀況:也就是在 Windows 系統存在的情況下,可以方便地只用硬碟與網路就能安裝 Debian,而不需要下載一龐大的 ISO 檔,然後再燒錄光碟片,然後再安裝 Debian 系統。若是安裝失敗,只要不是誤刪了 Windows 分區,不會花費太多功夫回來補救。

grub4dos 的簡易使用法(Windows XP):

1. 複製 grldr 到 Windows 系統開機磁區(通常為 C 碟)。
2. 新增 memu.lst 檔案,範例如下:

title Windows XP
find --set-root --ignore-floppies /ntldr
chainloader /ntldr

title find and load BOOTMGR of Windows VISTA
root   (hd1,0)
kernel /linux
initrd /initrd.gz

當然這種方法不一定是最好的,學習 Linux 的驚奇就是這樣,有各式各樣的方法可以來解決各式各樣的問題。 我在 "安裝 Debian 的特殊方法 - 網路開機(netboot)篇" 裡也介紹了一種方法,以後還會有相關的研究陸續進行。

2012年6月12日 星期二

安裝 Debian 的特殊方法 - 網路開機(netboot)篇

一、首先要設定 BOOTP 與 TFTP 伺服器:(使用套件 - openbsd-inetd, bootp, tftpd)
  • /etc/inetd.conf (inetd相關設定檔) 
確認以下服務已被正確設定:

#:BOOT: TFTP service is provided primarily for booting.  Most sites
#       run this only on machines acting as "boot servers."
bootps          dgram   udp     wait    root    /usr/sbin/bootpd        bootpd -i -t 120
tftp            dgram   udp     wait    nobody  /usr/sbin/tcpd          /usr/sbin/in.tftpd /srv/tftp

* 注意:本實作的 tftp 的根目錄設在 /srv/tftp

  • /etc/bootptab (bootpd相關設定檔)
ready4install:  hd=/srv/tftp:bf=pxelinux.0:ip=192.168.11.99:sm=255.255.255.0:sa=192.168.11.100:ha=0800274C6254

*注意1:黃色部份順依實際網*注意1:路配置而定,上為示例。
*注意2:hd 似不能省略,若省略 Client 端會試圖載入 /pxelinux.0,而不是在 /srv/tftp 底下的 pxelinux.0

伺服器設定完畢,需要重新啟始 openbsd-inetd。

/etc/init.d/openbsd-inetd restart


二、準備開機檔:
自 Official netinst images for the "stable" release 下載 netboot.tar.gz 然後解開到 /srv/tftp 底下。


實作20120613的特殊經驗:

1. 用 VirtualBox(v4.1.16) 來做實驗注意事項及問題:
  (1) 當使用內部網路機制時,在進階的設定中,介面卡類型要用 PCnet-FAST III (Am79C973)才能啟用 PXE (Preboot Execution Environment) Client 的功能。
  (2) 「僅限主機」介面卡操作始終有問題,未解。