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 stretch
2017年06月17日
Debian
10 Buster
2019年中期
這隻狗這隻狗
11 Bullseye
這匹馬這匹馬
12 Bookworm
Debian
9 Sid
每日更新
Debian

席德,隔壁的男孩,玩具終結者
軟體較新,適合桌面和軟體測試

軟體管理

一,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依賴問題。

相關詞條

熱門詞條

聯絡我們