kbdcontrol -l us.emacs
Saturday, April 28, 2007
Restore Emacs Meta Key in FreeBSD
Friday, April 27, 2007
Hibernate Your Laptop
# emerge suspend2-sourcesAnd portage system will patch your linux kernel automaticly, then:
# cd /usr/src/linux # make menuconfigSelect suspend2 options, here is the path:
Power management options (ACPI, APM) ---> [*] Suspend2 ---> --- Suspend2 --- Image Storage (you need at least one allocator) [*] File Allocator [*] Swap Allocator --- General Options (swap:/dev/hda8) Default resume device name [*] Allow Keep Image Mode [*] Replace swsusp by defaultAnd make sure your .config contains such settings, and "swap:/dev/hda8" is the default swap partition to be suspended:
CONFIG_SUSPEND2=y CONFIG_SUSPEND2_FILE=y CONFIG_SUSPEND2_SWAP=y CONFIG_CRYPTO_LZF=y CONFIG_SUSPEND2_DEFAULT_RESUME2="swap:/dev/hda8"Then compile and install your new kernel, then reboot. *ATTATION* DO NOT forget to backup your original working kernel. If you find such content when "dmesg| less", (eg, "Software Suspend 2.1.8.9: Suspending enabled."), it means you can hibernate your computer now. Now, It's time to manage the hibernate actions. Firstly, fetch the hibernate-script by emerge or from suspend2 website:
# emerge hibernate-scriptIf you use Thinkpad, you can use the hotkey "Fn+F12" to hibernate with acpid. The event files lie in the directory /etc/acpi/events, and Here is the content of /etc/acpi/events/hibernate:
event=(button/power|ibm/hotkey HKEY 00000080 0000100c) action=/usr/sbin/hibernate -F /etc/hibernate/suspend2.confThe HKEY number 00000080 0000100c is the action to press the hotkey "Fn+F12". Here is the detail. If you mount vfat filesystems, you'd better to umount them, when hibernating. Put such settings into the configuration file /etc/hibernate/suspend2.conf
UnmountFSTypes vfat fat msdosAnd remount them when re-booting your system with this setting in /etc/hibernate/ususpend-disk.conf:
Mount /path/to/vfat/
Tuesday, April 17, 2007
Install Gentoo Stage3 in Thinkpad T40p
Prepare
Press Power button of you computer, insert a linux livecd into the cdrom, then choose to boot from cdrom. When you login into the operating system of the livecd, switch into a terminal and let's start your gentoo installation from here...Download Gentoo LiveCD or stage3 packs
You can use links or lynx download livecd and stage3 packages from http://gentoo.osuosl.org/releases/x86/, or ftp://ftp3.tsinghua.edu.cn/mirror/gentoo if you stay at cernet.Partition
Now, we partition the disks and be careful. Here is an example of my computer, and linux can be installed in any primary or extend partitions. You can use fdisk to complete your task. I suggest 4 partitions for your linux system:- /boot, ext2 format, 50M bytes, where to put vmImage and grub
- /swap, swap format, about size of your physical memory large if you need supsend2(hibernate into disk). You can also totally disable this swap partition if your memory is large enough, such as 1G or 2G bytes :)
- /, root partition can be formated as reiserfs4 due to the performances, 8~10G bytes
- /home, formated as ext3 because ext3 expressed steady and tough.
Disk /dev/hda: 80.0 GB, 80026361856 bytes 255 heads, 63 sectors/track, 9729 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1460 11727418+ af Unknown Partition 1 does not end on cylinder boundary. /dev/hda2 * 1461 1947 3900960 7 HPFS/NTFS Partition 2 does not end on cylinder boundary. /dev/hda3 1948 9729 62508915 f W95 Ext'd (LBA) Partition 3 does not end on cylinder boundary. /dev/hda5 1948 3407 11727418+ 7 HPFS/NTFS /dev/hda6 3408 6569 25394481 b W95 FAT32 /dev/hda7 6569 6575 52416 83 Linux /dev/hda8 6576 6710 1084356 83 Linux /dev/hda9 6711 7684 7823623+ 83 Linux /dev/hda10 7685 9729 16426431 83 Linux
Mount your partition
Enable DMA feature of your disk, this step is optional.# hdparm -c 1 -d 1 /dev/hdaFormat your partition and mount them, be careful.
# mke2fs /dev/hda7 # mkswap /dev/hda8 # swapon /dev/hda8 # mkfs.reiser4 /dev/hda9 # mke2fs -j /dev/hda10 # mount /dev/hda9 /mnt/gentoo # mkdir /mnt/gentoo/boot # mount /dev/hda7 /mnt/gentoo/boot # mkdir /mnt/gentoo/home # mount /dev/hda10 /mnt/gentoo/home # mkdir /mnt/gentoo/proc # mount -t proc none /mnt/gentoo/proc # mkdir /mnt/gentoo/dev # mount -o bind /dev /mnt/gentoo/dev
Backup your mbr
- Backup your mbr table:
# dd if=/dev/(your_disk) of=mbr.save count=1 bs=512 # sfdisk -d /dev/(your_disk) > partitions.save
The first of those saves the mbr and the second will store all partition info (including logical partitions, which aren't part of the mbr). - Restore your mbr table:
# dd if=mbr.save of=/dev/(your_disk) # sfdisk /dev/(your_disk) < partitions.save
Installation
Uncompress
Uncompress your stage3 packages downloaded before. Argument "p" of "tar" makes sure keeping the permit bits of the files in the tarball.# cd /mnt/gentoo # tar xvjpf /mnt/cdrom/stages/stage3-xxx.tar.bz2
Install "portage"
This step is optional, and you can use "emerge --sync" to replace when you login into the new system. Download portage, and umcompress into /mnt/gentoo.# tar xvjf /mnt/gentoo/portage-.tar.bz2 -C /mnt/gentoo/
Configure "make.conf"
Some variables related with the system are configured at /etc/make.conf. The important is that you'd better make sure "USE" variable containing "cjk nls ntpl ntplonly", if the architecture of your computer is x86. It is recommonded to set "ACCEPT_KEYWORDS" as "x86" if you donot wanna test and debug for unstable systems :PCFLAGS="-march=pentium-m -O3 -pipe -fomit-frame-pointer" #CFLAGS="-O3 -march=pentium-m -mtune=pentium-m -pipe -ftracer -fomit-frame-pointer -ffast-math -momit-leaf-frame-pointers" CHOST="i686-pc-linux-gnu" CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden" LDFLAGS="-Wl,-O1" #LDFLAGS="-Wl,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s" MAKEOPTS="-j3" ACCEPT_KEYWORDS="x86" USE="-fortran -arts -eds -ipv6 -qt -qt3 -qt4 -kde python -vorbis acpi X \ bash-completion cjk cups esd gtk2 imlib mime mmx mmxext nls aiglx alsa \ nptl nptlonly opengl oss posix readline sse sse-filters sse2 \ truetype unicode xft ati dri apm -apache -apache2 -xmms -ldap " FEATURES="ccache parallel-fetch" CCACHE_SIZE="2G" CCACHE_DIR="/var/tmp/ccache" VIDEO_CARDS=" radeon vesa vga" INPUT_DEVICES=" keyboard mouse void synaptic" LINGUAS="zh_CN" GENTOO_MIRRORS="ftp://ftp3.tsinghua.edu.cn/mirror/gentoo" #GENTOO_MIRRORS="http://gentoo.139pay.com" #PORTDIR_OVERLAY="/usr/local/overlays/xgl-coffee" PORTAGE_BINHOST="https://e.ututo.org.ar/i686/" PORTAGE_BINHOST="http://gentoopackages.net/packages/i686/"
Custom Packages Independently
You can custom packages' compile setting for each by the config files under the directory "/etc/portage/*". Here is a "USE" setting sample of /etc/portage/package.use:sys-libs/glibc userlocales x11-terms/rxvt-unicode xft -iso14755 #x11-base/xorg-x11 -3dfx -3dnow -bitmap-fonts -font-server -hardened -insecure-drivers -ipv6 -minimal mmx nls opengl pam -sdk sse sse2 -static truetype-fonts xv -type1-fonts -xprint media-video/mplayer rtc avi amr encode esd mpeg quicktime real cdparanoia dvd dvdread ati win32codecs xvid -xmms cpudetection mail-client/mutt imap pop mbox smime net-print/cups samba dev-util/subversion -nowebdav -apache2 x11-libs/cairo glitz pdf png net-im/gaim -crypt gstreamer audiofile custom-flags qq msn xscreensaver startup-notification net-www/apache -ldap dev-lang/php -ldap -truetype -crypt apache2 gd ftp mysql xmlrpc dev-db/mysql -berkdb -perl media-sound/audacious chardet media-plugins/audacious-plugins aac alsa chardet mp3 nls wma #app-editors/vim cscope x11-apps/xinit minimal dev-libs/libxml2 python net-libs/libsoup -ssl media-sound/lame -gtk net-wireless/wpa_supplicant madwifi app-admin/gnome-system-tools samba app-laptop/tpb xosd sys-apps/hal pcmcia media-sound/rhythmbox libnotify tagwriting keyring www-client/mozilla-firefox -linguas_zh_CN
Prepare to Installation
Chrooting
Firstly, copy resolv.conf into the new system:cp /etc/resolv.conf /mnt/gentoo/etc/Then, chroot into the new system, begin to install...
# chroot /mnt/gentoo /bin/bash # env-update && source /etc/profile
Update-to-date portage
Run command:# emerge --sync
Locale Setting
According to the i18n file "/usr/share/i18n/SUPPORTED", Modifiy /etc/locale.gen. If you use chinese language, here is an example:en_US.UTF-8 UTF-8 en_US ISO-8859-1 zh_CN GB2312 zh_CN.GBK GBK zh_CN.UTF-8 UTF-8 zh_CN.GB18030 GB18030
Time Zone Setting
If you stay at timezone +8, then:# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeModify "/etc/conf.d/clock", and modify it as:
CLOCK="local"Adjust system time correctly.
# date MMDDhhmmYYYY # hwclock --systohc
Install Linux Kernel
Download Kernel Source
Firstly, download the lasted stable kernel source:# USE="-doc" emerge gentoo-sources
Compile Kernel and Install
You can use custom and optimize the kernel options according to the computer hardware.# cd /usr/src/linux # make menuconfig # make && make modules_install # cp arch/i386/boot/bzImage /boot/linux-
Install GRUB
You can choose to install bootloader into the mbr or /boot by running command "setup (hd0)" or "setup (hd0,6)". Here is the sample run at my computer:# emerge grub # grub grub> root (hd0,6) grub> setup (hd0) grub> quitThen, Configure your grub profile /boot/grub/menu.lst:
default saved color light-gray/blue black/light-gray timeout 2 hiddenmenu title=Gentoo GNU/Linux root (hd0,6) kernel /linux-2.6.17-r8 root=/dev/hda9 ro savedefault title=Gentoo GNU/Linux (suspend2) root(hd0,6) kernel /linux-2.6.18-suspend2-r1 root=/dev/hda9 ro resume2=swap:/dev/hda8 savedefault title=Microsoft Windows 2003 Server rootnoverify (hd0,1) makeactive chainloader +1 savedefault title=Mac OS X root (hd0,0) makeactive chainloader +1 savedefault boot
Other Steps
setup fstab
Edit /etc/fstab to mount each partition correctly:/dev/hda7 /boot ext2 defaults 1 2 /dev/hda8 none swap sw 0 0 /dev/hda9 / reiserfs defaults 0 1 /dev/hda10 /home ext3 defaults 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/hda6 /home/wine vfat defaults,shortname=mixed,utf8,fmask=133,dmask=022,uid=shokn,gid=users 0 0 /dev/hdc /mnt/cdrom iso9660 ro,noauto,user,utf8 0 0
Add a new user
Add a new user named "shokn":# useradd shokn-m -G users,wheel,portage,audio,games -s /bin/bash # passwd shokn
Active the ethnet card
Add net.eth0 into the runlevel boot# rc-update add net.eth0 bootIf you have a static IP address rather than a DHCP address, then modify /etc/conf.d/net:
config_eth0=("192.168.0.13 netmask 255.255.255.0") routes_eth0=("default via 192.168.0.3")Here is another useful script to setup your eth0 address from gentoo livecd-tools:
# Copyright 1999-2004 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 # $Header: /var/www/viewcvs.gentoo.org/raw_cvs/gentoo/src/livecd-tools/net-setup,v 1.3 2004/07/11 23:33:45 wolf31o2 Exp $ #!/bin/bash # John DavisNow, You have nearly completed this installation. (to be cont.)if [ `whoami` != "root" ]; then echo "net-setup: must be root to continue" exit 1 fi if [ -z ${1} ]; then echo "net-setup: please specify a network interface" exit 1 fi [ ! -d /tmp/setup.opts ] && mkdir /tmp/setup.opts cd /tmp/setup.opts dialog --title "Network Setup" --menu "Time to set up the ${1} interface! You can use DHCP to automatically configure a network interface or you can specify an IP and related settings manually. Choose one option:" 20 60 7 1 "Use DHCP to auto-detect my network settings" 2 "Specify an IP address manually" 2> ${1}.1 mynetsel=`cat ${1}.1` case $mynetsel in 1) /sbin/dhcpcd -t 10 ${1} ;; 2) dialog --title "IP address" --inputbox "Please enter an IP address for $1:" 20 50 "192.168.0.1" 2> ${1}.IP dialog --title "Broadcast address" --inputbox "Please enter a Broadcast address for $1:" 20 50 "`cat ${1}.IP|cut -d . -f 1`.`cat ${1}.IP|cut -d . -f 2`.`cat ${1}.IP|cut -d . -f 3`.255" 2> ${1}.B dialog --title "Network mask" --inputbox "Please enter a Network Mask for $1:" 20 50 "255.255.255.0" 2> ${1}.NM dialog --title "Gateway" --inputbox "Please enter a Gateway for $1 (hit enter for none:)" 20 50 2> ${1}.GW dialog --title "DNS server" --inputbox "Please enter a name server to use (hit enter for none:)" 20 50 2> ${1}.NS /sbin/ifconfig $1 `cat ${1}.IP` broadcast `cat ${1}.B` netmask `cat ${1}.NM` myroute=`cat ${1}.GW` if [ "$myroute" != "" ]; then /sbin/route add default gw $myroute dev $1 netmask 0.0.0.0 metric 1 fi myns="`cat ${1}.NS`" if [ "$myns" = "" ]; then : > /etc/resolv.conf else echo "nameserver $myns" > /etc/resolv.conf fi ;; esac echo "Type \"ifconfig\" to make sure the interface was configured correctly." # vim: ts=4
Monday, March 05, 2007
Compile your emacs 23 (unicode-2 branch) with XFT support
The current stable version of emacs is 21. Although Emacs 21 presents upstanding, more or less boring problems still exist in chinese charactors and input support. Fortunately, we have another better choice, that is emacs 23, typically named emacs-unicode-2, which is a unicode branch of the currently developping version 23. Emacs23 commendably supports chinese display and input methods.
Fristly, we should get the lastest sources from cvs depository:
$ set CVS_RSH="ssh" $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co -r emacs-unicode-2 emacs
Emacs23 support xft fonts, which maybe is the most exciting feature. To support xft, you should add compile condition --enable-font-backend, such as:
$ ./configure --enable-font-backend $ make bootstrap $ sudo make install
If you use debian or ubuntu, maybe you should get some header files used for compiler. If gentoo, maybe all is ready for you.
$ sudo apt-get install xserver-xorg-dev xorg-dev libfontconfig-dev libfreetype-dev libxft-dev
After emacs installed, configure ~/.emacs:
;;{{{ XFT Fonts Setting (set-default-font "Consolas-16") (set-fontset-font (frame-parameter nil 'font) 'han '("Vera Sans YuanTi" . "unicode-bmp")) ;;}}}
Use the command blew to get xft support for emacs:
$ emacs --enable-font-backend
Sunday, January 14, 2007
Commands: tee & script
script - make a typescript of everything printed on your terminal.
Thursday, December 28, 2006
Configuring fetchmail to work with gmail
Gmail uses the POP3-over-SSL protocol, which encrypts your messages, to pop your mails. Thus, we should get a legel certificate for verification. You can use any legal certificates, here we will grab Google's own cerificate and authenticate it.
- Get gmail's own cerificate:
$ openssl s_client -connect smtp.gmail.com:995 -showcerts
Which will output such below:CONNECTED(00000003) depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc./CN=pop.gmail.com verify error:num=20:unable to get local issuer certificate verify return:1 depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc./CN=pop.gmail.com verify error:num=27:certificate not trusted verify return:1 depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc./CN=pop.gmail.com verify error:num=21:unable to verify the first certificate verify return:1 --- Certificate chain 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc./CN=pop.gmail.com i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority -----BEGIN CERTIFICATE----- MIIC3TCCAkagAwIBAgIDBZIAMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0 aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDUxMTE1MjEyMjQ0WhcNMDcxMTE2MjEyMjQ0 WjBoMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN TW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xFjAUBgNVBAMTDXBv cC5nbWFpbC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMP8LCYiLGJ/ RihwcOi1V/zHVTw0Gfu+mI141Vjuuj2DtQoav8emwlXbu8gZoKP9GeMWpX1Vo9qN 4gkslIToHmDnIwGjcaEAfpdhSR9g54Kf5Y7BEXVyco6mTIlpe9vsbV0dmB1FvLP2 1N09dkUJfi7V0fjb8mcn3QYu6+6QNoxPAgMBAAGjga4wgaswDgYDVR0PAQH/BAQD AgTwMB0GA1UdDgQWBBTdASsopgao1m8hcEg0cDZhucltljA6BgNVHR8EMzAxMC+g LaArhilodHRwOi8vY3JsLmdlb3RydXN0LmNvbS9jcmxzL3NlY3VyZWNhLmNybDAf BgNVHSMEGDAWgBRI5mj5K9KylddH2CMgEE8zmJCf1DAdBgNVHSUEFjAUBggrBgEF BQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQEFBQADgYEAln3/pVqYnUXA1TVGzOqX LFhohGxpuNkr1UJnQmYxmZeB07uPBYRX8c0JXEKs29TmAHRsLhmp8kF36F11Dxgi Xm/Y8I9zgWHoMj7SL3Ve/u8K8K7XcUyUuaWmldLQAREafpFy+f+KYHGuAVh8hjy6 XyPlMCqj+PNp8QXjgOcgO68= -----END CERTIFICATE----- --- Server certificate subject=/C=US/ST=California/L=Mountain View/O=Google Inc./CN=pop.gmail.com issuer=/C=US/O=Equifax/OU=Equifax Secure Certificate Authority --- No client certificate CA names sent --- SSL handshake has read 891 bytes and written 314 bytes --- New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA Server public key is 1024 bit Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : DES-CBC3-SHA Session-ID: C376985C4DAFD52F21A89E42FB9D36DA0458F3A6F1D97E9615A0793DE2C2163C Session-ID-ctx: Master-Key: 74C5BE3ACBEE15367F1D7ADCD91B478B0FD81FC9EDB56D8698C1DCAEE09CAEECCE58C557308CBE0C049EFB50D1EB2829 Key-Arg : None Start Time: 1167236180 Timeout : 300 (sec) Verify return code: 21 (unable to verify the first certificate) --- +OK Gpop ready for requests from 210.77.27.77 f57pf402492pyh
Then, the Gmail's certificate is just the content between -----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----. Prepare a directory to save your certificates, for example, ~/.certs/. Copy such content and save into the file ~/.certs/gmail.pem
- Get the Fingerprint of the certificate, run the command below:
$ openssl x509 -fingerprint -md5 -noout -in gmail.pem MD5 Fingerprint=59:51:61:89:CD:DD:B2:35:94:BB:44:97:A0:39:D5:B4
- Rehash the gmail certificates:
$ c_rehash ~/.certs Doing /home/nini/.certs/ gmail.pem => 7f549ca4.0
- Now, the configuration of POP3-over-SSL has mostly completed. Verfiy whether
everthing is ok by the following commands:
$ openssl s_client -connect pop.gmail.com:995 -CApath ~/.certs -quiet depth=1 /C=US/O=Equifax/OU=Equifax Secure Certificate Authority verify return:1 depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc./CN=pop.gmail.com verify return:1 +OK Gpop x99xx9999xxx ready. CAPA +OK Capability list follows USER RESP-CODES EXPIRE 0 LOGIN-DELAY 300 X-GOOGLE-VERHOEVEN . USER username@gmail.com +OK send PASS PASS password +OK Welcome. CAPA +OK Capability list follows USER RESP-CODES PIPELINING EXPIRE 0 LOGIN-DELAY 300 TOP UIDL X-GOOGLE-VERHOEVEN . QUIT +OK Farewell. read:errno=0
- Then, configure your ~/.fetchmailrc file, here is a good
example:
poll pop.gmail.com with proto POP3 uidl username "username@gmail.com" there with password "password" is "nini" here options keep ssl sslfingerprint '59:51:61:89:CD:DD:B2:35:94:BB:44:97:A0:39:D5:B4' # sslcertck sslcertpath "/home/nini/.certs" mda "/usr/bin/procmail -d %T"
If your fetchmail is not running as a deamon but a crontab task, use the configuration file above and make sure the line contained sslcertpath is commented. Otherwise, you might occour the error:
fetchmail: Server certificate verification error: unable to get local issuer certificate 25424:error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed:s3_clnt.c:894: fetchmail: SSL connection failed.
Perhaps, this has exposed a slight difference in logging behaviour between daemon mode and single instance mode. you can test it with the command:
$ fetchmail -d0 -v pop.gmail.com
Use esmtp over smtp server
- Edit the configuration file ~/.esmtprc:
hostname = smtp.gmail.com username = "username@gmail.com" password = "password" starttls = enabled
-
$ chmod 0710 ~/.esmtprc
- If you use mutt as your mail client, then modifiy
~/.muttrc
~/.muttrc
set envelope_from set sendmail="/usr/bin/esmtp -v -X ~/.esmtplog" my_hdr From: "username@gmail.com" my_hdr Reply-To: "username@gmail.com" set sendmail_wait=0
Reference: