Användarverktyg

Webbverktyg


teknik:debian_wheezy_pa_lenovo_essentials_b590

Debian Wheezy på Lenovo Essentials B590

Observera att jag har köpt en ny laptop, Lenovo Edge E330, som jag gillar formatet på mycket bättre. I stort sett har den samma hårdvara men WiFi-kortet krävde ingen extra drivrutin eller firmware.

Detta är en budget laptop som jag köpte för att få leka med Linux igen, utanför servervärlden alltså med grafik och fönsterhanterare.

Den är utrustad med ett inbyggt Intel HD3000 grafikkort och ett Broadcom BCM43142 trådlöst nätverkskort. Så här har jag skrivit ner exakt vad jag gör för att få den att fungera väl, det kanske hjälper någon annan stackare som också ska använda Debian på liknande hårdvara, t.ex. HD4000.

Installation

Inte mycket att säga här som inte redan sagts där.

Extra paketförråd

Jag lägger till två extra paketförråd, ett för Firefox från Linux Mint eftersom det förenklar installationen av min favoritwebbläsare avsevärt, och ett annat för drivrutiner till mitt Broadcom nätverkskort.

Linux Mint

deb http://packages.linuxmint.com debian import

Ladda ner nyckeln.

gpg --keyserver pgp.mit.edu  --recv-keys 3EE67F3D0FF405B2
gpg --export 3EE67F3D0FF405B2 > 3EE67F3D0FF405B2.gpg
sudo apt-key add ./3EE67F3D0FF405B2.gpg

Broadcom wireless-bcm43142

deb http://jas.gemnetworks.com/debian/ debian main
deb-src http://jas.gemnetworks.com/debian debian main

Ladda ner nyckeln.

wget http://jas.gemnetworks.com/jasmineaura.gpg.key -O- | sudo apt-key add -

Installera paket

Installerar alla paket jag kommer behöva på en gång utan förklaring. Gjort radbrytningar här bara för att de ska synas bättre.

sudo apt-get install xserver-xorg xserver-xorg-video-intel xserver-xorg-input-synaptics \
xfonts-100dpi xfonts-75dpi xfonts-base xfonts-utils fonts-inconsolata \
vim autossh xscreensaver xinit xterm xresprobe libx11-dev libevent-dev libncurses5-dev \
ttf-anonymous-pro pm-utils notmuch offlineimap mutt nmap mesa-utils irssi hibernate \
imagemagick git-core firefox wireless-bcm43142-dkms firmware-realtek xdm ifenslave \
tcpdump wpasupplicant strace xclip lm-sensors laptop-mode-tools resolvconf
pulseaudio mpd mpc encfs libpam-encfs libregexp-common-perl openvpn rsnapshot

Det är självklart relativt många paket att installera på en gång men jag tycker ändå om hur få paket det är jag faktiskt behöver från en standard minimal installation av Debian.

  • wireless-bcm43142-dkms är från ett tredjepartsförråd, så icke standard i Debian
  • firmware-realtek firmware för realtek kanske inte behövs, min nya laptop använder istället firmware-iwlwifi
  • firefox är också från ett tredjepartsförråd, mint

Ratpoison & tmux

Även Wheezy har ett gammalt paket för Ratpoison och tmux som saknar funktioner, t.ex. svenska tecken i ratpoison-meddelanden och pane-zoom i tmux. Så dessa kan kompileras och installeras med den gamla hederliga ./configure && make && sudo make install metoden.

Efter allt det så är det bäst att starta om.

Konfigurera nätverk

Först och främst vill jag ha igång trådlöst så jag kan springa runt och latja med datorn.

Det är vad wpasupplicant är till för.

Skapa först filen /etc/wpa_supplicant/wpa_supplicant.conf, det är i den filen som jag först och främst definierar alla trådlösa nätverk jag ansluter till. Så här kan den se ut.

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=netdev
ap_scan=1
 
# add networks to roam here
 
network={
 ssid="piratgrottan"
 psk="hemlis"
 id_str="home"
}
 
network={
 ssid="kotranpnukt"
 key_mgmt=NONE
 id_str="forsken"
}
 
network={
 ssid="PROD"
 scan_ssid=1
 key_mgmt=WPA-EAP
 eap=PEAP
 identity="stemid"
 password="Mitt lösenord."
 phase1="peaplabel=0"
 phase2="auth=MSCHAPV2"
 id_str="work"
}

I exemplet ovan har jag två nätverk med namnen ”piratgrottan” och ”PROD”.

Deras psk-värde är deras hemliga nyckel, och längre ner anger jag även ett id-värde som ska identifiera nätverken i /etc/network/interfaces filen.

Jag har även ett nätverk utan någon nyckel alls, då anger jag key_mgmt=NONE.

Här är ett exempel på den filen, med mina två nätverk angivna längst ner.

auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
 
allow-hotplug wlan0
iface wlan0 inet manual
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
 
iface default inet dhcp
iface home inet dhcp
iface work inet dhcp
iface forsken inet dhcp

Notera först och främst att jag väljer läget manual för wlan0 kortet Det är de sista raderna som anger att DHCP ska användas, eller inte om så är fallet.

De sista raderna är referenser till id_str namnet som angavs i wpa_supplicant.conf filen.

Observera alla Linux hackers: jag ville gärna skapa ett bond0 gränssnitt för automatisk failover mellan wlan0 och eth0 men jag får intrycket att drivrutinen inte klarar det.

Efter den konfigurationen kan man få nätverkskortet wlan0 online genom kommandot sudo ifup wlan0.

Ibland får man dra upp och ner gränssnitt för att få nätverket att fungera, så det kan vara bra att känna till sudo ifdown eth0 t.ex.

Till sist använder jag wpa_cli för att byta trådlöst nätverk om wpasupplicant inte klarar av att hitta rätt nät själv. Här är lite exempel på vanliga kommandon.

sudo wpa_cli list_networks
sudo wpa_cli select_network 0
sudo wpa_cli -i wlan0 status

Lägg till din användare i netdev gruppen så slipper du sudo för wpa_cli.

Grafik

Mycket har förbättrats sedan jag sist körde Linux med Xorg, i stort sett ska man helst undvika att skapa en xorg.conf fil eftersom X-servern redan väljer rätt åt dig.

Synaptics Touchpad

Dock var jag tvungen att konfigurera min musplatta för att fungera med knackningar och drag & släpp tekniken.

Jag skapade då filen /etc/X11/xorg.conf.d/10-synaptics.conf med följande innehåll.

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        Option "TapButton1" "1"
        Option "TapButton2" "2"
        Option "TapButton3" "3"
        Option "VertEdgeScroll" "on"
        Option "VertTwoFingerScroll" "on"
        Option "LockedDrags" "on"
       MatchDevicePath "/dev/input/event*"
        Option "SHMConfig" "on"
EndSection

Xdm

Fortsätter med det minimalistiska temat genom att använda XDM för att hantera inloggningar i datorn.

X konfigurationen i Debian verkar ha migrerat mycket till /etc, jag vet inte om jag gör fel men mina lokala filer har ofta ingen verkan.

Så här är min /etc/X11/xdm/Xsetup som bara innehåller en extra rad för bakgrunden, men två andra rader utkommenterade för om man vill ta skärmdumpar av login-miljön.

xsetroot -solid "#002b36"

#sleep 5 && import -w root /home/stemid/Pictures/login_screen.png &
#chown stemid:stemid /home/stemid/Pictures/login_screen.png &

Bulken av konfigurationen är i /etc/X11/xdm/Xresources som ser ut så här.

Xcursor.theme: whiteglass

xlogin*login.translations: #override \
        Ctrl<Key>R: abort-display()\n\
        <Key>F1: set-session-argument(failsafe) finish-field()\n\
        <Key>Delete: delete-character()\n\
        <Key>Left: move-backward-character()\n\
        <Key>Right: move-forward-character()\n\
        <Key>Home: move-to-begining()\n\
        <Key>End: move-to-end()\n\
        Ctrl<Key>KP_Enter: set-session-argument(failsafe) finish-field()\n\
        <Key>KP_Enter: set-session-argument() finish-field()\n\
        Ctrl<Key>Return: set-session-argument(failsafe) finish-field()\n\
        <Key>Return: set-session-argument() finish-field()

xlogin*greeting: V\344lkommen till CLIENTHOST
!xlogin*greeting: Välkommen till CLIENTHOST
xlogin*namePrompt: Anv\344ndare:
xlogin*fail: Fel l\366senord!
!xlogin*fail: Fel lösenord!

xlogin*greetFace:       Inconsolata:size=16
xlogin*face:            Inconsolata:size=14
xlogin*promptFace:      Inconsolata:size=14
xlogin*failFace:        Inconsolata:size=20

xlogin*borderWidth: 0
xlogin*frameWidth: 0
xlogin*innerFramesWidth: 0
xlogin*shdColor: grey30
xlogin*hiColor: grey90
xlogin*background: grey
!xlogin*foreground: darkgreen
xlogin*greetColor: black
xlogin*failColor: red
*Foreground: black
*Background: #fffff0

xlogin*logoFileName: /home/stemid/heart.xpm
xlogin*useShape: true
xlogin*logoPadding: 10

XConsole.text.geometry: 480x130
XConsole.verbose:       true
XConsole*iconic:        true
XConsole*font:          fixed

Filen /home/stemid/heart.xpm är helt enkelt ett hjärta jag googlade fram ganska snabbt. Omvandla vilken bild som helst till xpm format med ImageMagick så här.

convert bild.jpg bild.xpm

Ratpoison

Jag föredrar ratpoison som fönsterhanterare. Den är extremt minimal, brukar kallas en terminal-multiplexor för X.

Tänker inte säga för mycket om den, här är min nuvarande .ratpoisonrc fil.

set border 0
set bgcolor #002b36
set fgcolor #839496

exec rpws -i
exec /usr/bin/rpws init 3 -k

startup_message off

escape F13
bind c exec uxterm
bind b exec ratpoison -c "echo $(acpi -b)"
bind F exec firefox
bind t exec ratpoison -c "echo $(date)"
bind L exec xscreensaver-command -lock

alias screenshot exec import -window root ~/Pictures/screenshot_$(hostname)-$(date +'%F.%s').png
bind B screenshot

Jag använder ett solarized tema i terminal och ratpoison så det är vad färgerna är ifrån. rpws kommandot ger mig 3 arbetsytor, sedan har jag bundit lite genvägar men jag tänker binda fler allteftersom.

Raden escape F13 gör att min caps-lock tangent blir meta-tangent i ratpoison. Så alla ratpoison kommandon börjar med caps-lock. Det är bra på flera sätt, för vem fan använder caps-lock? Och den har kvar sin låsfunktion så jag behöver inte hålla den intryckt för att göra ett ratpoison kommando.

För att stänga av caps-lock funktionen och binda den till specialtangenten F13 lägger man till följande två rader i ~/.xmodmaprc.

remove lock = Caps_Lock
keycode 66 = F13
keycode 135 = 

Tangent 135 är den jobbiga menyknappen mellan alt gr och vänster ctrl.

Lite andra bindningar jag har definierat är ratpoison är Meta+Shift+L för att låsa skärmen, Meta+Shift+F för att starta Firefox och Meta+b för att visa batteristatus.

Xterm

På tal om mitt terminal-tema, här är min lokala ~/.Xresources fil som innehåller mer än bara xterm konfiguration.

! Run xrdb ~/.Xresources when updating file.
! Solarized color scheme for the X Window System
!
! http://ethanschoonover.com/solarized


! Common

#define S_yellow #b58900
#define S_orange #cb4b16
#define S_red #dc322f
#define S_magenta #d33682
#define S_violet #6c71c4
#define S_blue #268bd2
#define S_cyan #2aa198
#define S_green #859900


! Dark

#define S_base03 #002b36
#define S_base02 #073642
#define S_base01 #586e75
#define S_base00 #657b83
#define S_base0 #839496
#define S_base1 #93a1a1
#define S_base2 #eee8d5
#define S_base3 #fdf6e3


! Light

! #define S_base03 #fdf6e3
! #define S_base02 #eee8d5
! #define S_base01 #93a1a1
! #define S_base00 #839496
! #define S_base0 #657b83
! #define S_base1 #586e75
! #define S_base2 #073642
! #define S_base3 #002b36


! To only apply colors to your terminal, for example, prefix
! the color assignment statement with its name. Example:
!
! URxvt*background: S_base03

*background: S_base03
*foreground: S_base0
*fading: 40
*fadeColor: S_base03
*cursorColor: S_base1
*pointerColorBackground: S_base01
*pointerColorForeground: S_base1

*color0: S_base02
*color1: S_red
*color2: S_green
*color3: S_yellow
*color4: S_blue
*color5: S_magenta
*color6: S_cyan
*color7: S_base2
*color9: S_orange
*color8: S_base03
*color10: S_base01
*color11: S_base00
*color12: S_base0
*color13: S_violet
*color14: S_base1
*color15: S_base3

xterm*faceName: SourceCodePro-Regular
xterm*faceSize: 9
xterm*internalBorder: 4

xlogin*greetFont: -*-lucida-medium-r-*-sans-24-*-*-*-*-*-*-*

xscreensaver*lock: true
xscreensaver*timeout: 120
xscreensaver*lockTimeout: 5
xscreensaver*splash: false
xscreensaver*nice: 20

URxvt*scrollBar: false
URxvt*background: S_base03
URxvt*foreground: S_base0
URxvt*fading: 40
URxvt*fadeColor: S_base03
URxvt*cursorColor: S_base1
URxvt*pointerColorBackground: S_base01
URxvt*pointerColorForeground: S_base1
URxvt*saveLines: 1200
URxvt*font: xft:Inconsolata:pixelsize=9:antialias=true

X

Skärmsläckaren xscreensaver är enbart viktig för att kunna låsa skärmen. Konfigurationen syns ovan i .Xresources filen men jag startar den via ~/.xsession filen som syns här.

test -f ~/.Xresources && xrdb ~/.Xresources
test -f ~/.xmodmaprc && xmodmap ~/.xmodmaprc

xsetroot -solid "#002b36"

xscreensaver -no-splash &

xset -b off
xset b 0 0 0
setterm -blength 0

exec ratpoison

Flera saker händer här, jag läser även in .Xresources filen och skapar dess databas varje gång X startar. Vilket betyder att om jag gör en ändring till någon konfiguration i X så kör jag bara sudo pkill X.

Sedan läser jag även in ~/.xmodmaprc som jag nämnde tidigare. Jag anger bakgrunden av ratpoisons huvudfönster till solarized dark svart bakgrund, och efter det startas skärmsläckarens demon i bakgrunden.

Därefter kommer tre rader som alla har syftet att stänga av pipljudet som kan komma från datorns inbyggda högtalare. Lite onödigt när man sitter på biblioteket eller andra lugna omgivningar.

Till sist startar jag ratpoison.

Laptop

Det är även bra att ställa in vad som ska hända när datorns lock stängs. Det mesta görs av Debian men jag redigerade /etc/acpi/events/lm_lid.

event=button[ /]lid
action=/etc/acpi/actions/lm_lid.sh %e

Och /etc/acpi/actions/lm_lid.sh ska se ut så här.

#! /bin/sh

test -f /usr/sbin/laptop_mode && /usr/sbin/laptop_mode auto

export DISPLAY=':0.0'

lidstate=$(awk '{print $2}' /proc/acpi/button/lid/LID?/state)

case "$lidstate" in
	open)
		xset dpms force on
		logger -t acpid "unthrottling screensaver"
		xscreensaver-command -unthrottle &> /dev/null
		;;
	closed)
		xset dpms force off
		logger -t acpid "throttling screensaver"
		xscreensaver-command -lock &> /dev/null
		hibernate-disk
		;;
esac

Disk I/O

Jag har en SSD i min laptop och därför utför jag följande kommando som snabbar upp skrivningar till alla diskenheter utom snurrande plattor.

$ echo noop | sudo tee /sys/block/sda/queue/scheduler

I det exemplet ovan använder jag diskenheten /dev/sda, det kan variera på andra system.

För att göra den ändringen permanent behöver man redigera filen /etc/defaults/grub, och ändra raden som på Debian Wheezy säger GRUB_CMDLINE_LINUX_DEFAULT=”quiet” till följande rad.

GRUB_CMDLINE_LINUX_DEFAULT="quiet elevator=noop"

En bra förklaring finnes i det här inlägget men kan sammanfattas så här; standardsättet för Linux att skriva till diskar är optimerat för snurrande plattor. Noop metoden har inga optimeringar alls utan skriver bara data direkt till diskenheten. Detta passar bättre för lagring som har egen styrenhet för sortering och skrivning av data till media.

Därför är det även ett bra knep för SAN och virtualiseringsmiljöer.

Många anser dock att deadline passar bättre för SSD diskar och stora filer.

teknik/debian_wheezy_pa_lenovo_essentials_b590.txt · Senast uppdaterad: 2014-02-13 20:13 av stemid