debian

debian

廣義的Debian是指一個致力於創建自由作業系統的合作組織及其作品,由於Debian項目眾多核心分支中以Linux宏核心為主,而且 Debian開發者 所創建的作業系統中絕大部分基礎工具來自於GNU工程 ,因此 “Debian” 常指Debian GNU/Linux。 非官方核心分支還有隻支持x86的Debian GNU/Hurd(Hurd微核心),只支持amd64的Dyson(OpenSolaris混合核心)等。這些非官方分支都存在一些嚴重的問題,沒有實用性,比如Hurd微核心在技術上不成熟,而Dyson則基礎功能仍不完善。 “Debian” 正式發音為 /ˈdɛ.bi.ən/ ,Debian 是國際化協作項目,官方未指定任何非英文名稱。

基本信息

版本記錄

Debian的發行及其軟體源有五個分支:舊穩定分支(oldstable)、穩定分支(stable)、測試分支(testing)、不穩定分支(unstable)、實驗分支(experimental)。

當前的穩定分支即Stretch (即下一個舊穩定分支),所有開發代號均出自Pixar的電影《玩具總動員》。

Debian GNU/Linux歷史版本一覽表
版本號以及代號發布日期玩具總動員的對應角色主要特點
0.01至0.91 1993年8月至1994年1月
0.93R5 1995年3月
0.93R6 1995年11月
1.1 Buzz 1996年6月17日 巴斯光年 使用Linux核心2.0
1.2 Rex 1996年12月12日 暴龍
1.3 Bo 1997年6月2日 放羊的女孩
2.0 Hamm 1998年7月24日 小豬撲滿
2.1 Slink 1999年3月9日 玩具狗 APT問世
2.2 Potato 2000年8月15日 Potato Head先生
3.0 Woody 2002年7月19日 胡迪,電影主角之一的牛仔
3.1 Sarge 2005年6月6日 綠色塑膠玩具士兵的首領
4.0 Etch 2007年4月8日 玩具黑板
5.0.0 Lenny 2009年2月14日 望遠鏡
6 squeeze 2011年2月16日 三隻眼睛的綠色大嘴玩具外星人
7 wheezy 2013年5月4日 一隻帶著領結的玩具企鵝 加強MultiArch,穩定版本
8 Jessie 2015年4月26日 玩具總動員第二部中的角色,是一個女牛仔 禁用了舊版不安全的SSLv3協定 默認使用 Systemd
9 stretch2017年06月17日
10 Buster 2019年中期
11 Bullseye
12 Bookworm
9 Sid 每日更新席德,隔壁的男孩,玩具終結者 軟體較新,適合桌面和軟體測試

軟體管理

一,APT以及dpkg常見用法如下:

APT——Advanced Package Tool
功能具體語句
軟體源設定 /etc/apt/sources.list
更新軟體源數據 apt-get update
更新已安裝軟體 apt-get upgrade
更新系統版本 apt-get dist-upgrade
通過安裝包或卸載包來修復依賴錯誤 apt-get -f install
搜尋軟體源數據 apt-cache search foo
解壓安裝軟體包 apt-get install foo
重新安裝軟體包apt-get --reinstall install foo
刪除軟體包釋放的內容 apt-get remove foo
卸載軟體,同時清除該軟體配置檔案 apt-get --purge remove foo
刪除不需要的包 apt-get autoclean
刪除所有已下載的包 apt-get clean
自動安裝編譯一軟體所需要的包 apt-get build-dep foo
dpkg——package manager for Debian
功能具體語句
顯示DEB包信息 dpkg -I xx.deb
顯示DEB包檔案列表 dpkg -c xx.deb
安裝DEB包 dpkg -i xx.deb
安裝DEB包(指定根目錄)dpkg --root=<directory> -i xx.deb
顯示所有已安裝軟體 dpkg -l
顯示已安裝包信息 dpkg -s foo
顯示已安裝包檔案列表 dpkg -L foo
卸載包 dpkg -r foo
卸載軟體包並刪除其配置檔案 dpkg -P foo
重新配置已安裝程式 dpkg-reconfigure foo
從軟體源中編譯軟體流程(適用於少量代碼改動或者配置修改)
功能具體語句示例
獲取源碼 apt-get source foo apt-get source rox-filer
安裝編譯依賴 apt-get build-dep foo apt-get build-dep rox-filer
解壓源碼 dpkg-source -x foo_version-revision.dsc dpkg-source -x rox_2.11-3.dsc
修改源碼部分 nano ROX-Filer/src/main.c
創建包 dpkg-buildpackage -rfakeroot -b
修改軟體可升級狀態 echo -e "foo hold" | dpkg --set-selections

二,用dpkg解包打包(或者修改包)的簡單用法

1,新建必要檔案control

mkdir -p dirname/DEBIAN(dirname名隨意,將生成的usr bin lib之類的檔案複製到dirname目錄下,dirname/為偽根目錄)

nano dirname/DEBIAN/control,最簡陋的格式如下:

Package: foo

Version: version-revision

Architecture: amd64

Maintainer: xxx

Priority: extra

Description: xxx

2,生成DEB包

dpkg-deb -b --deb-format=2.0 -Zxz -z9 dirname foo_version-revision_arch.deb (為了便於管理包名應遵循DEB包命名格式)

3,解壓DEB包安裝檔案部分

mkdir newdir && dpkg -x foo_version-revision_arch.deb newdir/

4,解壓DEB包控制信息部分

mkdir newdir && dpkg -e foo_version-revision_arch.deb newdir/

5,用ar命令解壓DEB包

mkdir newdir

cd newdir && ar x foo_version-revision_arch.deb

三,添加常用軟體管理命令簡短別名

軟體管理是一個現代作業系統的基本功能,使用十分頻繁,因此有必要設定簡短的別名,僅字元界面有效添至~/.profile,僅圖形界面有效添至~/.bashrc,比如

export LC_MESSAGES=en_US.UTF-8

alias a="apt-get install --no-install-recommends"

alias b="dpkg-deb -b --deb-format=2.0 -Zxz -z9"

alias c="SDCV_PAGER=more sdcv --color -0 -1"

alias i="dpkg -i"

alias l="dpkg -l | grep"

alias la="ls --file-type -a"

alias ll="la --time-style=long-iso -lh"

alias s="apt-cache search"

alias r="apt-get --purge remove"

alias u="apt-get update;apt-get upgrade"

中文設定

中文顯示

複製常用字型

mkdir ~/.fonts && cp simsun.ttc tahoma.ttf tahomabd.ttf unifont.pcf ~/.fonts/

終端顯示調整

編輯 ~/.Xdefaults,添加

XTerm*background: grey20

XTerm*foreground: white

XTerm*faceName: unifont

XTerm*utf8Title: true

UXTerm*background: grey20

UXTerm*foreground: white

UXTerm*faceName: unifont

UXTerm*utf8Title: true

中文輸入

nano ~/.xinitrc,添加

export LC_CTYPE=en_US.UTF-8

export LC_MESSAGES=zh_CN.UTF-8

eval `dbus-launch --sh-syntax --exit-with-session`

export XMODIFIERS=@im=fcitx

export GTK_IM_MODULE=xim

export QT_IM_MODULE=fcitx

exec fcitx &

nano~/.config/fcitx/profile,啟用需要的輸入法

虛擬機安裝

VMPlayer創建虛擬機,虛擬磁碟設定4G左右即可(如果使用swap可能需要更多),全部作為根分區,檔案系統使用

btrfs (mkfs.btrfs -dsingle -l16384 -msingle -n16384 -K -f /dev/sda1) 或者

zfs (zpool create -f -o ashift=12 -o cachefile= -O utf8only=on -O compression=lz4 -O dedup=off -O xattr=off -O secondarycache=none -O checksum=off -O atime=off -m /mountpoint zroot /dev/sda1,需要重新編譯核心並生成新的初始化檔案系統)

打開 debian-7.5.0-amd64-netinst.iso (無穩定網路使用 debian-7.5.0-amd64-DVD-1。iso )進入安裝界面,根據提示安裝完畢。

安裝基本工具:

dhclient eth0

dpkg --remove-architecture i386 && apt-get update

apt-get install --no-install-recommends \

xserver-xorg-input-evdev xserver-xorg-video-vesa xserver-xorg xterm xinit \

openbox pcmanfm gvfs lxpanel \

fcitx fcitx-pinyin fcitx-ui-classic fcitx-frontend-qt5 \

gtk2-engines gnome-icon-theme clearlooks-phenix-theme \

vim-gtk gpicview lxtask \

unzip unrar p7zip bzip2 xarchiver \

alsa-utils mesa-utils libtxc-dxtn-s2tc0 libgl1-mesa-dri

echo -e "for f in \"pcmanfm --desktop\" lxpanel\ndo\nexec \$f > /dev/null/ 2>&1 &\ndone\nexec openbox" > ~/.xinitrc

startx

#添加chrome瀏覽器

#取消pcmanfm的root警告

sed -i 's/geteuid/getppid/' /usr/bin/pcmanfm

#使用默認的Clearlooks主題並設定字型

nano ~/.gtkrc-2.0

gtk-font-name = "Sans 10"

gtk-icon-theme-name = "GNOME"

gtk-theme-name = "Clearlooks-Phenix"

#設定GTK+3主題(確定已安裝相應的主題引擎)

cp -r /usr/share/themes/Clearlooks-Phenix/gtk-3.0 ~/.config/gtk-3.0

echo -e "gtk-theme-name = Clearlooks-Phenix\ngtk-icon-theme-name = GNOME" >> ~/.config/gtk-3.0/settings.ini

#設定一個滑鼠主題

nano ~/.Xdefaults

Xcursor.theme: OpenZone

幾種常見的聯網方式

1,使用ppp撥接(ppp依賴libpcap0.8)

####

cat > /etc/ppp/peers/wan << EOF

user "賬號"

password "密碼"

defaultroute

hide-password

noauth

persist

plugin rp-pppoe.so eth0

usepeerdns

EOF

####

ifconfig eth0 up

poff -a #斷開

pon wan #連線

2,連線無線網路

3,USB共享聯網

dhclient usb0

合蓋不休眠

nano /etc/systemd/logind.conf,添加一行

HandleLidSwitch=ignore

常見問題

自動登錄

以root為例,其餘用戶類似

1,/lib/systemd/system/[email protected]

ExecStart=-/sbin/agetty --noclear %I 38400 linux -a root

2,/etc/rc.local

touch /tmp/X

3,/root/.profile

[ -f /tmp/X ] && rm /tmp/X && /usr/bin/startx

VIM基本設定

nano ~/.vimrc

"vi

language messages en_US.UTF-8

set autoread history=1000 laststatus=2 nobackup nocompatible

set encoding=utf-8 fileencoding=utf-8 fileencodings=ucs-bom,utf-8,gbk,euc-jp,euc-kr,latin1 fileformat=unix termencoding=utf-8 "set termencoding=gbk

set makeprg=make shell=bash shellcmdflag=-c

"vim

if has("vertsplit")

autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif

color desert

filetype indent on

if expand('%:p') == ''

chdir ~/Document/WORK "$VIM\\..\WORK

endif

"環境變數

let $PS1="\$PWD # "

set autochdir

set linespace=1 list listchars=tab:·\ ,eol:¬ number

syntax on

"綁定鍵盤

map <F2> :echom "Done"<CR>

imap <F2> <Esc><F2>li

endif

"gvim

if has("gui_running")

"添加選單項

amenu Edit.- :

highlight SpecialKey ctermfg=0 guifg=grey30

highlight NonText guibg=grey20 guifg=grey30

set columns=85 lines=36

set guifont=unifont\ 12 guioptions=aeim guitablabel=%t

endif

MPlayer設定

編譯打包MPlayer以便去掉大量無用的依賴庫

nano ~/.mplayer/config

af=volnorm,volume=5

ao=alsa

autosync=30

cache=10240

font=SimSun

osdlevel=3

overlapsub=1

quiet=yes

stop-xscreensaver=yes

sub-fuzziness=1

subfont-autoscale=1

subfont-osd-scale=5

subfont-text-scale=6

subcp=utf-8

vo=xv

xy=800

zoom=yes

省電設定

echo 1 > /sys/module/snd_hda_intel/parameters/power_save

for f in /sys/class/scsi_host/host*/link_power_management_policy; do echo min_power > $f; done

for f in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 > $f; done

1,cpu頻率調節設定

ondemand

2,將bbswitch編入核心

任何情況下都不要使用類似nvidia的閉源驅動
cp bbswitch.c linux-3.15/drivers/acpi/

sed -i "403s/DEVICE_ACPI_HANDLE/ACPI_HANDLE/" linux-3.15/drivers/acpi/bbswitch.c

sed -i "53iacpi-y\t\t\t\t+= bbswitch.o" linux-3.15/acpi/Makefile

Openbox基本設定

mkdir -p ~/.config/openbox && cp /etc/xdg/openbox/rc.xml ~/.config/openbox/rc.xml

添加4個基本的快捷鍵
F1 打開終端
Ctl+F1 退出
Alt+F1 重啟
Mod+F1 關閉視窗

lunar提供的Solar2Lunar函式可以提供公曆農曆轉換

<keybind key="W-F1">
<action name="Close"/>
</keybind>
<keybind key="A-F1">
<action name="Restart"></action>
</keybind>
<keybind key="C-F1">
<action name="Exit"><prompt>no</prompt></action>
</keybind>
<keybind key="F1">
<action name="Execute"><command>xterm</command></action>
</keybind>

雜七雜八

由於許多Debian相關詞條內容缺失,所以暫時添加一些繁瑣的內容附在後面

GRUB2

syslinux不支持btrfs(開啟壓縮)和zfs,而grub2支持常見的檔案系統,擴展性強。此外,非Linux平台可以使用grub4dos。

######/boot/grub/grub.cfg

insmod all_video
insmod gettext
insmod gfxterm
insmod part_msdos
insmod zfs
loadfont $prefix/fonts/unicode。pf2
set default="0"
set gfxmode=auto
set have_grubenv=true
set lang=
set locale_dir=$prefix/locale
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
set timeout=3
terminal_output gfxterm
menuentry 'Debian -- The Universal Operating System' {
linux /@/boot/vmlinuz acpi_backlight=vendor MOUNT="/bin/zpool import -f zroot" ROOT="" INIT="/lib/systemd/systemd"

initrd /@/boot/initrd.img
}

#引導ISO

menuentry 'ISO' {

linux16 /boot/syslinux/memdisk raw iso

initrd16 /boot/xx.iso

}

#使用其他分區引導

menuentry 'Other Bootloader' {

set root="(hdX,msdosY)"

chainloader +1

}

安裝至磁碟主引導或者分區引導

grub-install --root-directory=/path/to/root/ --no-floppy /dev/sdX(Y)

nano /path/to/root/boot/grub/grub.cfg

字型

<fontconfig>

<selectfont><acceptfont><pattern>

<patelt name="family"><string>unifont</string></patelt>

</pattern></acceptfont></selectfont>

<match target="font" >

<test compare="less" name="size" ><double>8</double></test>

<edit mode="assign" name="size" ><double>8</double></edit>

</match>

<match>

<test name="family"><string>SimSun</string></test>

<test name="style"><string>Regular</string></test>

<edit name="antialias" mode="assign"><bool>false</bool></edit>

</match>

<match>

<test name="family"><string>宋體</string></test>

<test name="style"><string>Regular</string></test>

<edit name="antialias" mode="assign"><bool>false</bool></edit>

</match>

<alias><family>sans-serif</family>

<prefer>

<family>Tahoma</family>

<family>SimSun</family>

</prefer>

</alias>

<alias><family>serif</family>

<prefer>

<family>Tahoma</family>

<family>SimSun</family>

</prefer>

</alias>

<alias><family>monospace</family>

<prefer>

<family>DejaVu Sans Mono</family>

<family>unifont</family>

</prefer>

</alias>

</fontconfig>

虛擬磁碟

file initrd.img #查看檔案類型

fdisk -l initrd.img #查看虛擬磁碟分區

mount -t <fs> -o loop,offset=<Start*Sector> initrd.img /mnt#掛載虛擬磁碟(raw格式)分區

cpio -i -d < initrd.img #cpio解壓

find . | cpio --quiet -R 0:0 -o -H newc | gzip -9 > ../initrd.img #cpio打包後用gzip壓縮

一個busybox製作初始化檔案系統簡單例子如下:

#編譯安裝

rm -rf busybox && git clone https://github。com/mirror/busybox

cd busybox

make allyesconfig

make -j 20

make install

#修改檔案(/lib64/ld-linux-x86-64。so.2複製到lib64/,其餘庫檔案複製到lib/)

cd _install

mkdir etc

cp -r ../examples/bootfloppy/etc/init{.d,tab} etc/

rm linuxrc && touch etc/fstab

cat > init << EOF

#!/bin/sh

/bin/mkdir /sys && /bin/mount -t sysfs -o nodev,noexec,nosuid sysfs /sys

/bin/mkdir /proc && /bin/mount -t proc -o nodev,noexec,nosuid proc /proc

/bin/mdev -s && /bin/echo /bin/mdev > /proc/sys/kernel/hotplug

[ -z "\$MOUNT" ] && exec /bin/init; \$MOUNT; [ ! -z "\$ROOT" ] && /bin/mount --bind \$ROOT /root; exec /bin/switch_root /root \${INIT:-/lib/systemd/systemd}

EOF

#掛載新根目錄位置命令比如 MOUNT="/bin/mount -t btrfs UUID= /root"

#轉到新根目錄後第一個執行程式路徑比如sysvinit INIT="/sbin/init"

核心的部分設定參數也可以添加到init中

比如:

/bin/sync && /bin/echo 3 > /proc/sys/vm/drop_caches

/bin/echo OFF > /proc/acpi/bbswitch

/bin/echo 2 > /proc/sys/vm/overcommit_memory

/bin/echo 0 > /proc/sys/vm/swappiness

/bin/echo 1000 > /sys/class/backlight/intel_backlight/brightness

改變init許可權

chmod 755 init

生成initrd.img

find . | cpio --quiet -R 0:0 -o -H newc | gzip -9 > ../initrd.img

bootstrap

對於一個具體的平台來說,只能安裝與當前核心相同架構的Debian系統(64位系統支持32位)。

簡單使用流程如下(安裝一個amd64架構、sid分支Debian GNU/Linux基礎系統):

Debian家族作業系統apt-get install debootstrap即可使用,非Debian家族作業系統(指任何其他GNU/Linux發行版)或者不想安裝該軟體

git clone git://anonscm.debian。org/d-i/debootstrap.git

注意,debootstrap運行時需要bash腳本MAKEDEV

make -C debootstrap

nano debootstrap/debootstrap #將 /usr/share/debootstrap 替換為 ./debootstrap

#ppp用來撥接,iw、wpasupplicant等用來連線連線無線網路或者創建無線網路

./debootstrap/debootstrap \

--include=debootstrap,initramfs-tools,btrfs-tools,grub2,\

ppp,iw,wpasupplicnat,dnsmasq,bridge-utils,ssh,ftp,axel \

--exclude=aptitude,aptitude-common,nano,tasksel,tasksel-data --arch amd64 sid sid-dir ftp://ftp.debian。org/debian/

cd sid-dir

tar cpJf ../sid-dir.txz *

mount -t btrfs -o defaults,compress=zlib,noatime,nobarrier /dev/sda1 /mnt

tar xpf sid-dir.txz -C /mnt/

#修改 /mnt/etc/fstab如下:

echo -e "en_US.UTF-8 UTF-8\nzh_CN.UTF-8 UTF-8" > /mnt/etc/locale.gen

echo "DEBIAN" > /mnt/etc/hostname

echo -e "127.0.0.1\nDEBIAN DEBIAN" >> /mnt/etc/hosts

cat /mnt/usr/share/zoneinfo/Asia/Chongqing > /mnt/etc/localtime #時區設定(BIOS時鐘為本地時間)

echo "Asia/Chongqing" > /mnt/etc/timezone

echo -e "\n\nLOCAL" > /mnt/etc/adjtime

mount --bind /dev /mnt/dev

mount -t tmpfs /tmp /mnt/tmp

mount -t proc /proc /mnt/proc

mount -t sysfs /sys /mnt/sys

chroot /mnt /bin/bash

hwclock --systohc

passwd root

echo "nameserver 8.8.8.8" > /etc/resolv.conf

nano /etc/apt/sources.list

apt-get update && apt-get install locales

apt-get install linux-image-amd64 #安裝核心或者使用自編譯核心(dpkg -i linux-image-x.x.x_x.x.x-1_amd64.deb)

apt-get install grub2

編譯核心

一般個人配置核心編譯時間在4分鐘以內,3.15小於2.5MB(不生成可載入模組)

tar xpf linux-x.x.x.tar.xz

cd linux-x.x.x && cp /boot/config-x.x.x .config

make menuconfig

make -j20 deb-pkg #臨時使用只需安裝linux-image-x.x.x_x.x.x-1_amd64.deb

幾個常見用法:

① make localmodconfig #處理.config(取消當前運行核心未載入模組)

② sed -i 's/=m/=y/' .config #不生成可載入模組

使用管理

如果你使用Debian軟體包管理器來管理Linux軟體,應該詳細了解Debian軟體倉庫的原理,這有助於使用Linux命令將讓你更容易管理Debian軟體。
Linux軟體包管理使用的Debian軟體庫,Debian提供了軟體包的安裝源。Debian管理器會自動查找庫和安裝Debian包的依賴關係。如果沒有Debian軟體庫管理系統,要解決這些Debian軟體包的依賴關係是一種煩惱。
按目前的Linux分布情況,主要的Debian軟體庫管理系統是Debian的軟體庫管理系統,主要用於Debian、Ubuntu和其Linux衍生系統上,如Linux Mint;Debian軟體庫管理系統使用默認的Debian軟體包格式。Debian用.deb。這些Debian軟體包是將軟體和元數據壓縮和檔案。Debian元數據提供了有關軟體的版本信息,以及Debian軟體包的依賴關係。
但Debian軟體包的資料庫與Debian軟體庫很容易混淆。雖然通過Debian軟體庫管理使這些Debian軟體包可以讓工作更簡單,但這些Debian軟體包同時有另一個資料庫。這意味著Debian軟體包的信息來源可以有多個:Debian包資料庫和Debian軟體庫資料庫。

使用Debian包資料庫工作

Debian包資料庫是Debian軟體安裝了。在Linux系統里最重要的信息來源。Debian包資料庫從伺服器上檢索當前安裝的Debian軟體,Debian包檔案通常是一個豐富的Debian文檔和Debian軟體使用的信息源,這對於Linux系統Debian軟體包之間的依賴關係非常有用。
在基於Debian的Linux伺服器,使用dpkg命令。例如,dpkg -L命令可以讀取Debian軟體包清單,或rpm -ql命令顯示哪些檔案被包含在一個Debian軟體包。

使用Debian軟體倉庫工作

在安裝新的Debian軟體或進行Debian軟體升級,系統管理員通常使用Debian軟體倉庫。尤其是更新Debian伺服器補丁的時候,Debian軟體倉庫會更方便:Debian軟體包管理器只需要更新新的軟體包,使Debian自動可用,Debian庫用戶便可以使用它們,這過程完全是透明的。
在基於Debian軟體倉庫的系統,Debian索引檔案需要手動更新,使用Debian的apt-get update命令來更新本地機器上的Debian軟體包快取。Debian包快取更新完成後,便可以很容易的Debian安裝軟體包和更新。
Debian系統會自動比較了軟體倉庫的Debian安裝包和Debian安裝在本地系統的Debian軟體包列表,以確定一個Debian包已經安裝,或者是否有可用的Debian更新。
Debian軟體倉庫管理系統在處理Debian軟體包依賴關係非常好用:目前所有的Linux都提供了豐富的Debian資料庫,並提供必要的Debian依賴,這意味著Linux管理員對Debian軟體包的依賴恐懼大大減少了。

Debian軟體倉庫中沒有的包

Debian軟體倉庫中沒有的軟體,意味著Debian安裝起來比較困難。管理員可以創建自己的Debian軟體庫和複製本地的Debian軟體包。這也讓管理員從庫安裝自定義Debian軟體包的時候,進一步減少Debian依賴問題。

相關詞條

相關搜尋

熱門詞條

聯絡我們