版本記錄
Debian的發行及其軟體源有五個分支:舊穩定分支(oldstable)、穩定分支(stable)、測試分支(testing)、不穩定分支(unstable)、實驗分支(experimental)。
當前的穩定分支即Stretch (即下一個舊穩定分支),所有開發代號均出自Pixar的電影《玩具總動員》。
版本號以及代號 | 發布日期 | 玩具總動員的對應角色 | 主要特點 |
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日 | ||
10 Buster | 2019年中期 | ||
11 Bullseye | |||
12 Bookworm | |||
9 Sid | 每日更新 | 席德,隔壁的男孩,玩具終結者 | 軟體較新,適合桌面和軟體測試 |
軟體管理
一,APT以及dpkg常見用法如下:
功能 | 具體語句 |
軟體源設定 | /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 |
功能 | 具體語句 |
顯示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依賴問題。