* Updated grml-tips.
[grml-tips.git] / grml_tips
1 Install grml to harddisk:
2
3 # grml2hd
4
5 Notice: You can pre-select the partition for the partition selector
6 and mbr dialogs inside grml2hd using:
7 # grml2hd /dev/hda1 -mbr /dev/hda
8
9 See: man grml2hd + http://grml.org/grml2hd/
10 -- 
11 Install grml on software RAID level 1:
12
13 Create /dev/md0 (and some more /dev/md* devices) first of all:
14 # cd /dev && MAKEDEV dev
15
16 Create RAID:
17 # mdadm --create --verbose /dev/md0 --level=raid1 \
18         --raid-devices=2   /dev/hda1  /dev/hdc1
19
20 Finally install grml on it:
21 # SWRAID='mbr-only' grml2hd /dev/md0 -mbr /dev/md0
22
23 See: man grml2hd + http://grml.org/grml2hd/
24 -- 
25 Install grml in non interactive mode with grml2hd:
26
27 Adjust configuration as needed:
28 # vim /etc/grml2hd/config
29
30 Then execute:
31
32 # GRML2HD_NONINTERACTIVE=yes grml2hd
33
34 or run:
35
36 # grml2hd -i
37
38 Use with care and only if you really know what you are doing!
39
40 See: man grml2hd + http://grml.org/grml2hd/
41 -- 
42 Configure network:
43
44 # grml-network
45 -- 
46 Boot grml via network:
47
48 # grml-terminalserver
49
50 See: man grml-terminalserver + http://grml.org/terminalserver/
51 -- 
52 Deactivate error correction of zsh:
53
54 % NOCOR=1 zsh
55
56 Run zsh-help for more information regarding zsh.
57 -- 
58 Disable automatic setting of title in GNU screen:
59
60 % NOPRECMD=1 zsh
61
62 Set it manually e.g. via:
63
64 % screen -X title foobar
65
66 Run zsh-help for more information regarding zsh.
67 -- 
68 Do not use menu completion in zsh:
69
70 % NOMENU=1 zsh
71
72 Run zsh-help for more information regarding zsh.
73 -- 
74 Run GNU screen with grml-configuration:
75
76 % grml-screen
77
78 or
79
80 % screen -c /etc/grml/screenrc
81 -- 
82 Print out grml-version:
83
84 % grml-version
85 -- 
86 Configure mutt:
87
88 % grml-mutt
89 -- 
90 Configure mutt-ng / muttng:
91
92 % grml-muttng
93 -- 
94 Set up Inode-PPTP connection:
95
96 # grml-pptp-inode
97 or
98 # grml-pptp-xdsl-students
99 -- 
100 Set up VPN / WLAN connection at TUG (TU Graz):
101
102 Set ESSID and request for ip-address via DHCP:
103 # iwconfig $DEVICE essid tug
104 # dhclient $DEVICE
105
106 Now run the main script:
107 # grml-vpnc-tugraz
108
109 After running the script an init script is available:
110
111 # /etc/init.d/vpnctug [start|stop]
112 -- 
113 Set up PPTP connection at VCG (Virtual Campus Graz):
114
115 # grml-pptp-vcgraz
116 -- 
117 Set up VPN:
118
119 # grml-vpn <options>
120
121 Usage example:
122
123 # grml-vpn -k 2005 add 1000 192.168.20.1 192.168.20.2
124
125 See: man grml-vpn
126 -- 
127 Use encrypted files / partitions:
128
129 # grml-crypt <options>
130
131 Usage example:
132
133 Initialize:
134
135 # grml-crypt format /mnt/external1/encrypted_file /mnt/test
136 # cp big_file /mnt/test
137 # grml-crypt stop /mnt/test
138
139 Use:
140
141 # grml-crypt start /mnt/external1/encrypted_file /mnt/test
142 # grml-crypt stop /mnt/test
143
144 See: man grml-crypt
145 -- 
146 Change resolution of X:
147
148 % xrandr -s '1024x768'
149 -- 
150 Change resolution of framebuffer:
151
152 # fbset 800x600-60
153 -- 
154 Configure newsreader slrn:
155
156 % grml-slrn
157 -- 
158 Configure grml system:
159
160 # grml-config
161
162 Or directly run scripts:
163
164 # grml-config-root
165 % grml-config-user
166 -- 
167 Lock screen (X / console):
168
169 % grml-lock
170
171 Press ctrl-alt-x to lock a GNU screen session.
172 -- 
173 Change wallpaper in X:
174
175 % grml-wallpaper <press-tab>
176 -- 
177 Start X window system (XFree86 / Xorg / X.org):
178
179 % grml-x $WINDOWMANAGER
180
181 Usage examples:
182
183 % grml-x fluxbox
184 % grml-x -mode '1024x768' wmii
185 % grml-x -nosync wm-ng
186 -- 
187 Collect hardware information:
188
189 % grml-hwinfo
190
191 or run as root to collect some more information:
192
193 # grml-hwinfo
194
195 will generate a file named info.tar.bz2.
196 -- 
197 Configure hardware detection features of harddisk installation:
198
199 # grml-autoconfig
200
201 or manually edit /etc/grml/autoconfig[.small]
202
203 See: man grml-autoconfig
204 -- 
205 Bootoptions / cheatcodes / bootparams for booting grml:
206
207 On the grml-ISO if not running grml:
208 % less /cdrom/GRML/grml-cheatcodes.txt
209
210 When running grml:
211 % most /usr/share/doc/grml-docs/grml-cheatcodes.txt.gz
212 -- 
213 Report bugs to Debian's Bug Tracking System (BTS):
214
215 % reportbug --bts debian
216
217 or adjust /etc/reportbug.conf to your needs.
218
219 See:
220
221   http://grml.org/bugs/
222   http://www.debian.org/Bugs/
223 -- 
224 Offline documentation:
225
226 % grml-info
227
228 Online documentation:
229
230   http://grml.org/faq/
231   http://grml.org/docs/
232   http://wiki.grml.org/doku.php
233 -- 
234 Mount ntfs partition (read-write):
235
236 # modprobe fuse
237 # ntfsmount /dev/hda1 /mnt/hda1
238 -- 
239 Overwrite specific file on an NTFS partition:
240
241 ntfscp /dev/hda1 /tmp/file_source path/to/file_target
242 -- 
243 Resize an NTFS partition:
244
245 # ntfsresize ..
246
247 Usage example:
248
249 ntfsresize -n -s 10G /dev/hda1 # testcase
250 ntfsresize -s 10G /dev/hda1    # testing was successfull, now really resize partition
251 cfdisk /dev/hda   # delete partition hda1, create new one with 10000MB and fs-type 07 (NTFS)
252 -- 
253 Modify resolution for intel graphic chipsets:
254
255 # 915resolution ..
256
257 Usage example:
258
259 # 915resolution 4d 1400 1050
260 -- 
261 Connect bluetooth mouse:
262
263 # bt-hid start
264
265 ... and press 'connect' button on your bluetooth device.
266 -- 
267 Connect bluetooth headset:
268
269 # bt-audio start
270
271 ... and press 'connect' button on your bluetooth device.
272 -- 
273 Secure delete file / directory / partition:
274
275 # wipe -kq /dev/hda1
276
277 See: man wipe
278
279 Also take a look at shred(1), sfill(1) and http://dban.sourceforge.net/
280 -- 
281 Use grml on Samsung X20 laptop:
282
283 # apt-get install grml-samsung-x20
284
285 See: http://www.michael-prokop.at/computer/samsung_x20.html
286 -- 
287 Development information regarding grml:
288
289   http://grml.supersized.org/
290 -- 
291 Contact grml team:
292
293 #grml on irc.freenode.org - http://grml.org/irc/
294 http://grml.org/contact/
295 -- 
296 Join the grml mailinglist:
297
298 http://grml.org/mailinglist/
299 -- 
300 Help us - donate!
301
302 http://grml.org/donations/
303 -- 
304 Commercial support / system administration / adjusted live-cds:
305
306 grml-solutions: http://grml.org/solutions/
307 -- 
308 Information regarding the kernel provided by grml:
309
310   http://grml.org/kernel/
311 -- 
312 SMTP command-line test tool:
313
314 % swaks <options>
315
316 Usage example:
317
318 % swaks -s $MAILSERVER -tlsc -a -au $ACCOUNT -ap $PASSWORD -f $MAILADRESSE -t $MAILADRESSE
319
320 See: man swaks
321 -- 
322 NTFS related packages:
323
324 scrounge-ntfs
325 salvage-ntfs
326 ntfsprogs
327 -- 
328 Modify service through init script:
329
330 # Start ssh
331 # Stop samba
332 # Restart apache
333 # Reload postfix
334 # service gpm start
335 # /etc/init.d/lvm start
336 -- 
337 Test joystick:
338
339 # jstest /dev/input/js0
340 -- 
341 Play movie:
342
343 % mplayer /path/to/movie
344 -- 
345 Use webcam with mplayer:
346
347 % mplayer tv:// -tv driver=v4l:width=352:height=288:outfmt=yv12:device=/dev/video0
348 -- 
349 Powerful network discovery tool:
350
351 # scapy
352 -- 
353 Grab an entire CD and compress it to Ogg/Vorbis,
354 MP3, FLAC, Ogg/Speex and/or MPP/MP+(Musepack) format:
355
356 % abcde
357 -- 
358 Show a console session in several terminals:
359
360 % gems
361 -- 
362 Switch behaviour of caps lock key:
363
364 % caps-ctrl
365 -- 
366 grep with Perl-compatible regular expressions:
367
368 % pcregrep
369 -- 
370 ncp: a fast file copy tool for LANs
371
372 Local (send file):
373 % npush file_to_copy
374
375 Remote (receive file):
376 % npoll
377 -- 
378 utility for sorting records in complex ways:
379
380 % msort
381 -- 
382 a smaller, cheaper, faster SED implementation:
383
384 % minised
385 -- 
386 zsh tips:
387
388 % man zsh-lovers
389
390 See: http://grml.org/zsh/
391 -- 
392 zsh reference card for grml system:
393
394 http://grml.org/zsh/
395 /usr/share/doc/grml-docs/zsh/grml-zsh-refcard.pdf.gz
396 -- 
397 Multiple rename:
398
399 % for i in foo* ; do mv "$i" "bar${i/foo}" ; done
400 % qmv foo*
401 % prename 's/foo/bar/' foo*
402 % mmv "foo*"   "bar#1"
403 % zmv 'foo(*)' 'bar$1'
404 -- 
405 Test TFT / LCD display:
406
407 % lcdtest
408 -- 
409 Test sound:
410
411 % soundtest
412 -- 
413 Improved grep version:
414
415 % glark
416
417 glark grep extract-matches
418 -- 
419 Highlith
420
421 grepc
422 hgrep
423 -- 
424 Output text as sound:
425
426 % say 'ghroummel'
427 % xsay            # when running X and text selected via mouse
428 -- 
429 Adjust a grml harddisk (grml2hd) installation:
430
431 # grml2hd-utils
432 -- 
433 Get information on movie files:
434
435 % tcprobe -i file.avi
436 -- 
437 Get an overview of your image files:
438
439 % convert 'vid:*.jpg' thumbnails.jpg
440 -- 
441 List all standard defines:
442
443 % gcc -dM -E - < /dev/null
444 -- 
445 Send a mail as reminder:
446
447 echo "mail -s 'check TODO-list' $MAILADDRESS < /dev/null" | at 23:42
448 -- 
449 ncurses-based presentation tool:
450
451 % tpp
452
453 See: man tpp and /usr/share/doc/tpp/examples/
454 -- 
455 Use ICQ / Jabber / Yahoo! / AIM / MSN /... on command line:
456
457 % centericq
458 -- 
459 Use IRC on command line:
460
461 % irssi
462 -- 
463 Diff / merge files:
464
465 % vimdiff file1 file2
466
467 Re-diffing:
468
469 :diffupdate
470
471 Moving between diffs:
472
473 [c
474 ]c
475
476 Synchronizing:
477
478 :diffget
479 :diffput
480 -- 
481 Hardware monitoring without kernel dependencies:
482
483 % mbmon
484 -- 
485 Install grml-iso to usb-stick:
486
487 % grml2usb grml.iso /mount/point
488 -- 
489 Use mplayer on framebuffer console:
490
491 % mplayer -vo fbdev ...
492 -- 
493 Use links2 on framebuffer console:
494
495 % links2 -driver fb ...
496 -- 
497 Switch language / keyboard:
498
499 * use the bootparam lang to set language environment ($LANG, $LC_ALL, $LANGUAGE)
500 * use the bootparams keyboard / xkeyboard to activate specific keyboard layout
501   Usage example: 'grml lang=us keyboard=de xkeyboard=de'
502
503 Or run one of the following commands:
504
505 % grml-lang de
506 or
507 # loadkeys i386/qwertz/de-latin1-nodeadkeys.kmap.gz # console
508 % setxkbmap de                                      # X11
509 -- 
510 Switch setting of caps-control key (switch between ctrl + shift) on keyboard:
511
512 # caps-ctrl
513 -- 
514 Mount usb device / usb stick:
515
516 % mount /mnt/external1   # corresponds to /dev/sda1
517 or
518 % mount /mnt/external    # corresponds to /dev/sda
519 -- 
520 Install Sun Java packages:
521
522 Download j2re.bin-file from http://java.sun.com/downloads/index.html and run
523
524 # apt-get install java-package
525 # fakeroot make-jpkg j2re-*.bin
526 # dpkg -i sun-j2re*.deb
527 # update-alternatives --config java
528 -- 
529 Improved dd version:
530
531 ddrescue is an improved version of dd which tries to read and
532 if it fails it will go on with the next sectors, where tools
533 like dd will fail.
534
535 % ddrescue ...
536
537 See: man ddrescue
538 -- 
539 How to make an audio file (e.g. Musepack format) out of a DVD track:
540
541 % mkfifo /tmp/fifo.wav
542 % mppenc /tmp/fifo.wav track06.mpc &
543 % mplayer -vo null -vc null -ao pcm:fast:file=/tmp/fifo.wav -dvd-device /dev/dvd dvd://1 -chapter 6-6
544
545 Adjust the mppenc line with the encoder you would like to use,
546 for example 'oggenc -o track06.ogg /tmp/fifo.wav' for ogg files.
547
548 Alternative:
549
550 % mplayer -vo null -dumpaudio -dumpfile track06.raw -aid N -dvd-device /dev/dvd dvd://1 -chapter 6-6
551 to extract audio without processing, where 'N' is the corresponding audio channel (see 'man mplayer')
552
553 Usage example for getting a PCM/wave file from audio channel 128:
554 % mplayer -vo null -vc null -ao pcm:fast:file=track06.wav -aid 128 -dvd-device /dev/dvd dvd://6
555 -- 
556 Create simple chroot:
557
558 # make_chroot_jail $USERNAME
559 -- 
560 Convert DOS formated file to unix format:
561
562 sed 's/.$//'    dosfile > unixfile       # assumes that all lines end with CR/LF
563 sed 's/^M$//'   dosfile > unixfile       # in bash/tcsh, press Ctrl-V then Ctrl-M
564 sed 's/\x0D$//' dosfile > unixfile       # gsed 3.02.80, but top script is easier
565 awk '{sub(/\r$/,"");print}'              # assumes EACH line ends with Ctrl-M
566 gawk -v BINMODE="w" '1' infile >outfile  # in DOS environment; cannot be done with
567                                          # DOS versions of awk, other than gawk
568 tr -d \r < dosfile > unixfile            # GNU tr version 1.22 or higher
569 tr -d '\015' < dosfile > unixfile        # use octal value for "\r" (see man ascii)
570 tr -d '[\015\032]' < dosfile > unixfile  # sometimes ^Z is appended to DOS-files
571 vim -c ":set ff=unix" -c ":wq" file      # convert using vim
572 vim -c "se ff=dos|x" file                # ... and even shorter ;)
573 recode ibmpc..lat1 file                  # convert using recode
574 echo -e "s/\r//g" > dos2unix.sed; sed -f dos2unix.sed < dosfile > unixfile
575 -- 
576 Save live stream to file:
577
578 % mplayer -ao pcm -aofile $FILE
579
580 or
581
582 % mencoder mms://file.wmv -o $FILE -ovc copy -oac copy
583 -- 
584 Merge video files:
585
586 AVI:
587
588 % avimerge -i *.avi -o blub.avi
589
590 MPEG:
591
592 % cat *.mpg > blub.mpg
593
594 WMV:
595
596 % mencoder file1.wmv -ovc lavc -oac lavc -ofps 25 -srate 48000 -mc 0 -noskip -forceidx -o file1.avi
597 % mencoder file2.wmv -ovc lavc -oac lavc -ofps 25 -srate 48000 -mc 0 -noskip -forceidx -o file2.avi
598 % avimerge -i file1.avi file2.avi -o blub.avi
599 -- 
600 Display MS-Word file:
601
602 % strings file.doc | fmt | less
603
604 or
605
606 % antiword file.doc
607 -- 
608 Convert MS-Word file to postscript:
609
610 % antiword -p a4 file.doc > file.ps
611 -- 
612 Convert manual to postscript:
613
614 % zcat /usr/share/man/man1/zsh.1.gz | groff -man > zsh.1.ps
615 or
616 % man -t zsh > zsh.ps
617 -- 
618 Read BIOS:
619
620 % dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8
621 -- 
622 Read HTTP via netcat:
623
624 echo "GET / HTTP/1.0\r\n\r\n" | netcat $DOMAIN 80
625 -- 
626 Get X ressources for specific program:
627
628 % xrdb -q |grep -i xterm
629 -- 
630 Get windowid of specific X-window:
631
632 % xwininfo -int | grep "Window id:" | cut -d ' ' -f 4
633 -- 
634 Get titel of specific X-window:
635
636 % xprop WM_CLASS
637 -- 
638 check locale - LC_MESSAGES:
639
640 % locale -ck LC_MESSAGES
641 -- 
642 Create random password:
643
644 % pwgen
645 or
646 % dd if=/dev/urandom bs=14 count=1 | hexdump | cut -c 9-
647 -- 
648 Get tarballs of various Linux Kernel trees:
649
650 % ketchup 2.6
651 to get the current stable 2.6 release
652
653 % ketchup -l
654 to get a list of all supported trees
655 -- 
656 Transfer your SSH public key to another host:
657
658 % ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote-system
659 or
660 % cat $HOME/.ssh/id_rsa.pub  | ssh user@remote-system 'cat >> .ssh/authorized_keys'
661 -- 
662 Update /etc/fstab entries:
663
664 # grml-rebuildfstab
665
666 See "man grml-rebuildfstab" for more details about
667 generation of /etc/fstab (including stuff like
668 fs LABELs / UUIDs,...).
669 -- 
670 Fetch and potentially change SCSI device parameters:
671
672 # sdparm /dev/sda
673
674 See: man sdparm
675 -- 
676 reclaim disk space by linking identical files together:
677
678 % dupmerge...
679 -- 
680 Find and remove duplicate files:
681
682 % dupseek ...
683 -- 
684 Perform layer 2 attacks:
685
686 # yersinia ...
687 -- 
688 rootsh
689 -- 
690 Guess PC-type hard disk partitions / partition table:
691
692 # gpart <options>
693
694 Perform a standard scan:
695 # gpart /dev/ice
696
697 Write back the guessed table:
698 # gpart -W /dev/ice /dev/ice
699 -- 
700 Develop, test and use exploit code with the Metasploit Framework:
701
702 cd /tmp
703 unp /usr/share/grml-sectools/tools/metasploit_framework*.tar.gz
704 cd framework*
705 ./msfcli
706 -- 
707 Useful documentation:
708
709 % w3m   /usr/share/doc/Debian/reference/reference.en.html
710 or
711 % xpdf =(zcat /usr/share/doc/Debian/reference/reference.en.pdf.gz)
712
713 http://grml.org/docs/           grml Documentation
714 http://wiki.grml.org/           grml Wiki
715 http://www.debian.org/doc/      Debian Documentation
716 http://wiki.debian.org/         Debian Wiki
717 http://www.gentoo.org/doc/en/   Gentoo Documentation
718 http://gentoo-wiki.com/         Gentoo Wiki
719 http://www.tldp.org/            The Linux Documentation Project
720
721 Tips and tricks:
722
723 % fortune debian-hints
724 -- 
725 Fun stuff:
726
727 % fortune debian-hints
728 % dpkg -L funny-manpages
729 -- 
730 Backup master boot record (MBR):
731
732 # dd if=/dev/ice of=/tmp/backup_of_mbr bs=512 count=1
733 -- 
734 Backup partition table:
735
736 # sfdisk -d /dev/hda > hda.out
737
738 Restore partition table:
739
740 # sfdisk /dev/hda < hda.out
741 -- 
742 Clone disk via network using netcat:
743
744 Listener:
745 # nc -vlp 30000 > hda1.img
746 Source:
747 # dd if=/dev/hda1 | nc -vq 0 192.168.1.2 30000
748
749 Adjust blocksize (dd's option bs=...) and include 'gzip -c'
750 to tune speed:
751
752 # dd if=/dev/hda1 bs=32M | gzip -c | nc -vq 0 192.168.1.2 30000
753 -- 
754 Backup specific directories via cpio and ssh:
755
756 # for f in directory_list; do find $f >> backup.list done
757 # cpio -v -o --format=newc < backup.list | ssh user@host "cat > backup_device"
758 -- 
759 Clone disk via ssh:
760
761 This one uses CPU cycles on the remote server to compare the files:
762 # ssh target_address cat remotefile | diff - localfile
763 # cat localfile | ssh target_address diff - remotefile
764
765 This one uses CPU cycles on the local server to compare the files:
766 # ssh target_address cat <localfile "|" diff - remotefile
767 -- 
768 Useful tools for cloning / backups:
769
770 * dd: convert and copy a file
771 * dd_rescue: copies data from one file (or block device) to another
772 * pcopy: a replacement for dd
773 * partimage: back up and restore disk partitions
774 * dirvish: Disk based virtual image network backup system
775 * devclone: in-place filesystem conversion -- device cloning
776 * ntfsclone: efficiently clone, image, restore or rescue an NTFS
777 * dump: ext2/3 filesystem backup
778 * udpcast: multicast file transfer tool
779 * cpio: copy files to and from archives
780 * pax: read and write file archives and copy directory hierarchies
781 * netcat / ssh / tar / gzip / bzip2: additional helper tools
782 -- 
783 Use grml as a rescue system:
784
785 Different tools:
786
787   * dd: convert and copy a file
788   * ddrescue: copies data from one file or block device to another
789   * partimage: Linux/UNIX utility to save partitions in a compressed image file
790   * cfdisk: Partition a hard drive
791   * nparted: Newt and GNU Parted based disk partition table manipulator
792   * parted-bf: The GNU Parted disk partition resizing program, small version
793   * testdisk: Partition scanner and disk recovery tool
794   * gpart: Guess PC disk partition table, find lost partitions
795
796 ext2/ext3:
797
798   * e2fsprogs: ext2 file system utilities and libraries
799   * e2tools: utilities for manipulating files in an ext2/ext3 filesystem
800   * e2undel: Undelete utility for the ext2 file system
801   * ext2resize: an ext2 filesystem resizer
802   * recover: Undelete files on ext2 partitions
803
804 ReiserFS/Reiser4:
805
806   * reiser4progs: administration utilities for the Reiser4 filesystem
807   * reiserfsprogs: User-level tools for ReiserFS filesystems
808
809 XFS:
810
811   * xfsdump: Administrative utilities for the XFS filesystem
812   * xfsprogs: Utilities for managing the XFS filesystem
813
814 JFS:
815
816   * jfsutils: utilities for managing the JFS filesystem
817
818 NTFS:
819
820   * ntfsprogs: tools for doing neat things in NTFS partitions from Linux
821   * salvage-ntfs: free NTFS data recovery tools
822   * scrounge-ntfs: data recovery program for NTFS file systems
823   * ntfsresize: resize ntfs partitions
824 -- 
825 Get ASCII value of a character with zsh:
826
827 % char=N ; print $((#char))
828 -- 
829 Convert a collection of mp3 files to wave or cdr using zsh:
830
831 % for i (./*.mp3){mpg321 --w - $i > ${i:r}.wav}
832 -- 
833 Convert images (foo.gif to foo.png) using zsh:
834
835 % for i in **/*.gif; convert $i $i:r.png
836 -- 
837 Remove all "non txt" files using zsh:
838
839 % rm ./^*.txt
840 -- 
841 Remote Shell Using SSH:
842
843 remote host:
844 % ssh -NR 3333:localhost:22 user@yourhost
845
846 local host:
847 % ssh user@localhost -p 3333
848 -- 
849 Reverse Shell with Netcat:
850
851 local host:
852 % netcat -v -l -p 3333 -e /bin/sh
853
854 remote host:
855 % netcat 192.168.0.1 3333
856 -- 
857 Remove empty directories with zsh:
858
859 % rmdir ./**/*(/od) 2> /dev/null
860 -- 
861 Find all the empty directories in a tree with zsh:
862
863 % ls -ld *(/^F)
864 -- 
865 Find all files without a valid owner and change ownership with zsh:
866
867 % chmod user /**/*(D^u:${(j.:u:.)${(f)"$(</etc/passwd)"}%%:*}:)
868 -- 
869 Display the 5-10 last modified files with zsh:
870
871 % print -rl -- /path/to/dir/**/*(D.om[5,10])
872 -- 
873 Find and list the ten newest files in directories and subdirs (recursive) with zsh:
874
875 % print -rl -- **/*(Dom[1,10])
876 -- 
877 Find most recent file in a directory with zsh:
878
879 % setopt dotglob ; print directory/**/*(om[1])
880 -- 
881 Tunnel all traffic through an external server:
882
883 % ssh -ND 3333 username@external.machine
884
885 Then set the SOCKS4/5 proxy to localhost:3333.
886 Check whether it's working by surfing e.g. to checkip.dyndns.org
887 -- 
888 Tunnel everything through SSH via tsocks:
889
890 set up the SSH proxy on the client side:
891
892 % ssh -ND 3333 user@remote.host.example.com
893
894 Adjust /etc/tsocks.conf afterwards (delete all other lines):
895
896 server = 127.0.0.1
897 server_port = 3333
898
899 For programs who natively support proxying connections (e.g. Mozilla
900 Firefox) you can now set the proxy address to localhost port 3333.
901
902 All other programs which's connections you want to tunnel through your
903 external host are prefixed with tsocks, e.g.:
904
905 % tsocks netcat example.com 80
906 % tsocks irssi -c irc.quakenet.eu.org -p 6667
907
908 If you call tsocks without parameters it executes a shell witht the
909 LD_PRELOAD environment variable already set and exported.
910 -- 
911 smartctl - control and monitor utility for harddisks using Self-Monitoring,
912 Analysis and Reporting Technology (SMART):
913
914 # smartctl --all /dev/ice
915
916 If you want to use smartctl on S-ATA (sata) disks use:
917
918 # smartctl -d ata --all /dev/sda
919
920 Start offline test:
921 # smartctl -t offline /dev/ice
922
923 Start short test:
924 # smartctl -t short /dev/ice
925
926 Display results of test:
927 # smartctl -l selftest /dev/ice
928
929 Query device information:
930 # smartctl -i /dev/ice
931 -- 
932 Mount a BSD / Solaris partition:
933
934 # mount -t ufs -o ufstype=ufs2 /dev/hda1 /mnt/hda1
935
936 Use ufstype 44bsd  for FreeBSD, NetBSD, OpenBSD (read-write).
937 Use ufstype ufs2   for >= FreeBSD 5.x (read-only).
938 Use ufstype sun    for SunOS (Solaris) (read-write).
939 Use ufstype sunx86 for SunOS for Intel (Solarisx86) (read-write).
940
941 See /usr/share/doc/linux-doc-$(uname -r)/Documentation/filesystems/ufs.txt.gz
942 for more details.
943 -- 
944 Read BIOS (and or BIOS) password:
945
946 # dd if=/dev/mem bs=512 skip=2 count=1 | hexdump -C | head
947 -- 
948 Clone one of the kernel trees via git:
949
950  git clone rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
951                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
952 This path defines the tree. See http://kernel.org/git/ for an overview.
953 -- 
954 Mount filesystems over ssh protocol:
955
956 % sshfs user@host:/remote_dir /mnt/test
957
958 Unmount via:
959
960 % fusermount -u /mnt/test
961
962 (Notice: requires fuse kernel module)
963 -- 
964 Install Gentoo using grml:
965
966 See http://www.gentoo.org/doc/en/altinstall.xml
967 -- 
968 Install (plain) Debian (sarge release) via grml:
969
970 Assuming you want to install Debian to sda1:
971
972 mkfs.ext3 /dev/sda1           # make an ext3 filesystem on /dev/sda1
973 mount -o rw,suid,dev /dev/sda1 /mnt/test # now mount the new partition
974 debootstrap sarge /mnt/test ftp://ftp.tugraz.at/mirror/debian # get main packages from a debian-mirror
975 chroot /mnt/test /bin/bash    # let's chroot into the new system
976 mount -t devpts none /dev/pts # ...otherwise running base-config might fail ("Terminated" or "openpty failed")
977 mount -t proc   none /proc    # make sure we also have a mounted /proc
978 base-config                   # now configure some main settings
979 vi /etc/mkinitrd/mkinitrd.conf # adjust $ROOT (to /dev/sda1) for your new partition, autodetection will fail in chroot
980 cd /dev ; ./MAKEDEV generic                                # make sure we have all necessary devices for lilo
981 apt-get install lilo linux-image-2.6.12-1-386              # install lilo and a kernel which fits your needs
982 cp /usr/share/doc/lilo/examples/conf.sample /etc/lilo.conf # let's use a template
983 vi /etc/lilo.conf && lilo                                  # adjust the file for your needs and run lilo afterwards
984 umount /proc ; umount /dev/pts                             # we do not need them any more
985 exit                                                       # now leave chroot
986 cp /etc/hosts /etc/fstab /mnt/test/etc/           # you might want to take the existing files...
987 cp /etc/network/interfaces /mnt/test/etc/network/ # ...from the running grml system for your new system
988 umount /mnt/test && reboot    # unmount partition and reboot...
989
990 See also: http://www.debian.org/releases/stable/i386/apcs04.html.en
991 -- 
992 Install (plain) Debian (etch release) via grml
993
994 Assuming you want to install Debian to sda1:
995
996 mkfs.ext3 /dev/sda1           # make an ext3 filesystem on /dev/sda1
997 mount -o rw,suid,dev /dev/sda1 /mnt/test # now mount the new partition
998 debootstrap etch /mnt/test ftp://ftp.tugraz.at/mirror/debian # get main packages from a debian-mirror
999 chroot /mnt/test /bin/bash    # let's chroot into the new system
1000 mount -t proc   none /proc    # make sure we have a mounted /proc
1001 apt-get install locales console-data  # install locales
1002 dpkg-reconfigure locales console-data # adjust locales to your needs
1003 apt-get install vim most zsh screen less initrd-tools file grub     \
1004         usbutils pciutils bzip2 sysfsutils dhcp3-client resolvconf  \
1005         strace lsof w3m # install useful software
1006 apt-get install linux-headers-2.6-686 linux-image-686  # install current kernel
1007
1008 echo "127.0.0.1       localhost" > /etc/hosts   # adjust /etc/hosts and network:
1009 cat >> /etc/network/interfaces << EOF
1010 iface lo inet loopback
1011 iface eth0 inet dhcp
1012 auto lo
1013 auto eth0
1014 EOF
1015
1016 ln -sf /usr/share/zoneinfo/Europe/Vienna /etc/localtime # adjust timezone and /etc/fstab:
1017 cat >> /etc/fstab << EOF
1018 sysfs          /sys         sysfs   auto                       0   0
1019 proc           /proc        proc    defaults                   0   0
1020 /dev/sda1      /            ext3    defaults,errors=remount-ro 0   1
1021 /dev/sda2      none         swap    sw                         0   0
1022 /dev/cdrom     /mnt/cdrom0  iso9660 ro,user,noauto             0   0
1023 EOF
1024 passwd             # set password of user root
1025
1026 mkdir /boot/grub   # setup grub
1027 cp /usr/share/doc/grub/examples/menu.lst /boot/grub
1028 cat >> /boot/grub/menu.lst << EOF
1029 title           Debian Etch, kernel 2.6.17-2-686 (on /dev/sda1)
1030 root            (hd0,0)
1031 kernel          /boot/vmlinuz-2.6.17-2-686 root=/dev/sda1 ro
1032 initrd          /boot/initrd.img-2.6.17-2-686
1033 EOF
1034 vim /boot/grub/menu.lst               # adjust grub configuration to your needs
1035 cd /dev && MAKEDEV generic            # create default devices
1036 cp -i /usr/lib/grub/i386-pc/* /boot/grub/ # copy stage-files to /boot/grub/
1037 grub install  # now install grub, run in grub-cmdline following commands:
1038 > root (hd0,0)
1039 > setup (hd0)
1040 > quit
1041 umount -a # unmount all filesystems in chroot and finally:
1042 exit      # exit the chroot and:
1043 reboot
1044
1045 If you want to use lilo instead of grub take a look at
1046 /usr/share/doc/lilo/examples/conf.sample or use the following template:
1047
1048 cat > /etc/lilo.conf << EOF
1049 # This allows booting from any partition on disks with more than 1024 cylinders.
1050 lba32
1051
1052 # Specifies the boot device
1053 boot=/dev/sda1
1054
1055 # Specifies the device that should be mounted as root.
1056 root=/dev/sda1
1057
1058 # use Debian on software raid:
1059 # raid-extra-boot=mbr-only
1060
1061 install=text
1062 # prompt
1063 timeout=1
1064 map=/boot/map
1065 vga=normal
1066
1067 image=/boot/vmlinuz-2.6.17-grml
1068         label="2.6.17-grml"
1069         #append="...."
1070         read-only
1071         initrd=/boot/initrd.img-2.6.17-grml
1072 EOF
1073
1074 See also: http://www.debian.org/releases/stable/i386/apcs04.html.en
1075 -- 
1076 Convert files from Unicode / UTF to ISO:
1077
1078 % iconv -f utf8 -t iso-8859-15 < utffile > isofile
1079
1080 and vice versa:
1081
1082 % iconv -f iso-8859-15 -t utf8 < isofile > utffile
1083 -- 
1084 Assign static setup for network cards (eth0 and eth1) via udev:
1085
1086 First method - manual:
1087 ~~~~~~~~~~~~~~~~~~~~~~
1088 Get information for SYSFS address:
1089 # udevinfo -a -p /sys/class/net/eth0/ | grep address
1090
1091 Then create udev rules:
1092 # cat /etc/udev/network.rules
1093 # match eth* stuff:
1094 KERNEL=="eth*", SYSFS{address}=="00:00:00:00:00:01", NAME="wlan0"
1095 KERNEL=="eth*", SYSFS{address}=="00:00:00:00:00:02", NAME="lan0"
1096 # do not match eth* drivers but also e.g. firewire stuff:
1097 ACTION=="add", SUBSYSTEM=="net", SYSFS{address}=="00:00:00:00:00:03", NAME="1394"
1098
1099 Now activate the rules:
1100 # cd /etc/udev/rules.d/ && ln -s ../network.rules z35_network.rules
1101
1102 Unload the drivers, restart udev and load the drivers again to activate
1103 the settings.
1104
1105 Second method - automatic:
1106 ~~~~~~~~~~~~~~~~~~~~~~~~~~
1107 Run /lib/udev/write_net_rules shipped with recent udev versions:
1108
1109 # INTERFACE=wlan1 /lib/udev/write_net_rules 00:00:00:00:00:04
1110
1111 This command will create /etc/udev/rules.d/z25_persistent-net.rules containing:
1112
1113 SUBSYSTEM=="net", DRIVER=="?*", SYSFS{address}=="00:00:00:00:00:04", NAME=wlan1
1114
1115 See /usr/share/doc/udev/writing_udev_rules/index.html for more information.
1116 -- 
1117 Change the suffix from *.sh to *.pl using zsh:
1118
1119 % autoload zmv
1120 % zmv -W '*.sh' '*.pl'
1121 -- 
1122 Generate SSL certificate:
1123
1124 Create self signed certificate (adjust /etc/ssl/openssl.cnf if necessary):
1125 # openssl req -x509 -newkey rsa:1024 -keyout keyfile -out certfile -days 9999 -nodes
1126
1127 Check certfile:
1128 # openssl x509 -in certfile -text
1129
1130 Verify against CA certificate:
1131 # openssl verify -CAfile cacert.crt -verbose -purpose sslserver
1132
1133 Generate 2048bit RSA-key:
1134 # openssl req -new -x509 -keyout pub-sec-key.pem -out pub-sec-key.pem -days 365 -nodes
1135
1136 As before but add request to existing key pub-sec-key.pem:
1137 # openssl req -new -out request.pem -keyin pub-sec-key.pem
1138
1139 Show request request.pem:
1140 # openssl req -text -noout -in request.pem
1141
1142 Verify signature of request request.pem:
1143 # openssl req -verify -noout -in request.pem
1144
1145 Generate SHA1 fingerprint (modulo key) of request.pem:
1146 # openssl req -noout -modulus -in request.pem | openssl sha1 -c
1147
1148 Generate 2048bit RSA-key and put it to pub-sec-key.pem. Save self signed certificate in self-signed-certificate.pem:
1149 # openssl req -x509 -days 365 -newkey rsa:2048 -out self-signed-certificate.pem -keyout pub-sec-key.pem
1150
1151 As before but create self signed certificate based on existing key pub-sec-key.pem:
1152 # openssl req -x509 -days 365 -new -out self-signed-certificate.pem -key pub-sec-key.pem
1153
1154 Generate new request out of existing self signed certificate:
1155 # openssl x509 -x509toreq -in self-signed-certificate.pem -signkey pub-sec-key.pem -out request.pem
1156
1157 Display certificate self-signed-certificate.pem in plaintext:
1158 # openssl x509 -text -noout -md5 -in self-signed-certificate.pem
1159
1160 Check self signed certificate:
1161 # openssl verify -issuer_checks -CAfile self-signed-certificate.pem self-signed-certificate.pem
1162
1163 Estable OpenSSL-connection using self-signed-certificate.pem and display certificate:
1164 # openssl s_client -showcerts -CAfile self-signed-certificate.pem -connect www.example.com:443
1165
1166 Also take a look at make-ssl-cert (debconf wrapper for openssl)
1167 and mod-ssl-makecert (utility to create SSL certificates in /etc/apache/ssl.*/).
1168 -- 
1169 Change Windows NT password(s):
1170
1171 # mount -o rw /mnt/hda1
1172 # cd /mnt/hda1/WINDOWS/system32/config/
1173 # chntpw SAM SECURITY system
1174
1175 Notice: if mounting the partition read-write did not work (check syslog!)
1176 try using mount.ntfs-3g instead: mount.ntfs-3g /dev/hda1 /mnt/hda1
1177
1178 (Be careful with deactivating syskey!)
1179 -- 
1180 glark - replacement for grep written in Ruby:
1181
1182 A replacement for (or supplement to) the grep family, glark offers:
1183 Perl compatible regular expressions, highlighting of matches,
1184 context around matches, complex expressions and automatic exclusion
1185 of non-text files.
1186
1187 Usage examples:
1188
1189 % glark -y keyword file      # display only the region that matched, not the entire line
1190 % glark -o format print *.h  # search for either "printf" or "format"
1191
1192 More information: man glark
1193 -- 
1194 Find CD burning device(s):
1195
1196 General information on CD-ROM:
1197 % cat /proc/sys/dev/cdrom/info
1198
1199 Scan using ATA Packet specific SCSI transport:
1200 # cdrecord -dev=ATA -scanbus
1201 # cdrecord-prodvd -s -scanbus dev=ATA
1202
1203 Get specific information for /dev/ice:
1204 # cdrecord dev=/dev/ice -scanbus
1205 -- 
1206 Create devices in /dev on udev:
1207
1208 For example create md devices (/dev/md0, /dev/md1,...):
1209 # cd /dev ; WRITE_ON_UDEV=1 ./MAKEDEV md
1210 -- 
1211 Identify network device (NIC):
1212
1213 # ethtool -i $DEVICE
1214
1215 Show NIC statistics:
1216
1217 # ethtool -S $DEVICE
1218
1219 If your NIC shows some aging signs, you may want to be sure:
1220
1221 # ethtool -t $DEVICE
1222
1223 Disable TCP/UDP checksums:
1224
1225 # ethtool -K $DEVICE tx off
1226 -- 
1227 grml2hd seems to hang? Getting Squashfs errors? Problems while booting?
1228
1229 Switch to tty12 and take a look at the syslog. If you see something like:
1230
1231   SQUASHFS error: zlib_fs returned unexpected result 0x........
1232   SQUASHFS error: Unable to read cache block [.....]
1233   SQUASHFS error: Unable to read inode [.....]
1234
1235 your ISO/CD-ROM very probably is not ok. Verify it via booting with grml testcd.
1236 Check your CD low-level via running:
1237
1238 # readcd -c2scan dev=/dev/cdrom
1239
1240 If the medium really is ok and it still fails try to boot with deactivated DMA
1241 via using grml nodma at the bootprompt.
1242 -- 
1243 Write a Microsoft compatible boot record (MBR) using ms-sys
1244
1245 Write a Windows 2000/XP/2003 MBR to device:
1246
1247 # ms-sys -m /dev/ice
1248 -- 
1249 Use a Vodafone 3G Datacard (UMTS) with Linux:
1250
1251 Plug in your vodafone card and check in syslog whether the appropriate
1252 (probably /dev/ttyUSB0 or /dev/noz0 when using newer vodafone cards) has
1253 been created. If so run:
1254
1255 # gcom -d $DEVICE
1256 # wvdial --config /etc/wvdial.conf.umts $PROFILE
1257
1258 Usage examples:
1259 # gcom -d /dev/ttyUSB0
1260 # wvdial --config /etc/wvdial.conf.umts a1usb
1261
1262 # gcom -d /dev/noz0
1263 # wvdial --config /etc/wvdial.conf.umts tmnozomi
1264
1265 # gcom -d /dev/noz0
1266 # wvdial --config /etc/wvdial.conf.umts dreiusb
1267
1268 Notice: newer vodafone cards require the nozomi driver. Run 'modprobe nozomi' on
1269 your grml system.
1270 -- 
1271 hdparm - get/set hard disk parameters
1272
1273 Display the identification info that was obtained from the drive at boot time,
1274 if available:
1275 # hpdarm -i /dev/ice
1276
1277 Request identification info directly from the drive:
1278 # hpdarm -I /dev/ice
1279
1280 Perform timings of device + cache reads for benchmark and comparison purposes:
1281 # hdparm -tT /dev/ice
1282 -- 
1283 bonnie++ - program to test hard drive performance.
1284
1285 # mkdir /mnt/benchmark
1286 # mount /dev/ice /mnt/benchmark
1287 # chmod go+w /mnt/benchmark
1288 # bonnie -u grml -d /mnt/benchmark -s 2000M
1289 -- 
1290 Use gizmo with a bluetooth headset:
1291
1292 % DEVICE="/dev/dsp$(awk '/- BT Headset/ {print $1}' /proc/asound/cards)"
1293 % gizmo --mic $DEVICE --speaker $DEVICE
1294 -- 
1295 Scan a v4l device for TV stations:
1296
1297 % scantv -c /dev/video0 -C /dev/vbi0 -o ~/.xawtv
1298
1299 Then running xawtv should work:
1300
1301 % xawtv
1302 -- 
1303 Run apt-get with timeout of 3 seconds:
1304
1305 # apt-get -o acquire::http::timeout=3  update
1306 -- 
1307 Debian GNU/Linux device driver check page
1308
1309 % $BROWSER http://kmuto.jp/debian/hcl/index.cgi
1310 -- 
1311 Use dd with status line:
1312
1313 # dd if=/dev/ice conv=noerror,notrunc,sync | buffer -S 100k | dd of=/tmp/file
1314 -- 
1315 Generate a 512k file of random data with status bar:
1316
1317 % dd if=/dev/random bs=1024 count=512 | bar -s 512k -of ./random
1318 -- 
1319 Install Grub instead of lilo on grml installation (grml2hd):
1320
1321 install grml:
1322 # grml2hd ....
1323
1324 adjust grub's configuration file menu.lst:
1325 # $EDITOR /boot/grub/menu.lst
1326
1327 now install grub (usage example for /dev/sda1):
1328 # grub install
1329 root (hd0,0)
1330 setup (hd0)
1331 -- 
1332 Install Ubuntu using grml:
1333
1334 See https://wiki.ubuntu.com/Installation/FromKnoppix
1335 -- 
1336 Resize ext2 / ext3 partition:
1337
1338 # tune2fs -O '^has_journal' /dev/iceX # disable journaling
1339 # fsck.ext2 -v -y -f /dev/iceX        # check the filesystem
1340 # resize2fs -p /dev/iceX  $SIZE       # resize it (adjust $SIZE)
1341 # fdisk /dev/ice                      # adjust partition in partition table
1342 # fsck.ext2 -v -y -f /dev/iceX        # check filesystem again
1343 # resize2fs -p /dev/iceX              # resize it to maximum
1344 # tune2fs -j /dev/iceX                # re-enable journal
1345 -- 
1346 Tune ext2 / ext3 filesystem:
1347
1348 Check partition first:
1349
1350 # tune2fs -l /dev/iceX
1351
1352 If you don't see dir_index in the list, then enable it:
1353
1354 # tune2fs -O dir_index /dev/iceX
1355
1356 Now run e2fsck with the -D option to have the directories optimized:
1357
1358 # e2fsck -D /dev/iceX
1359
1360 Notice: since e2fsprogs (1.39-1) filesystems are created with
1361 directory indexing and on-line resizing enabled by default.
1362 -- 
1363 Search for printers via network:
1364
1365 # pconf_detect -m NETWORK -i 192.168.0.1/24
1366 -- 
1367 Mount a remote directory via webdav (e.g. Mediacenter of GMX):
1368
1369 # mount -t davfs https://mediacenter.gmx.net/ /mnt/test
1370 -- 
1371 System-Profiling using oprofile:
1372
1373 Prepare setup:
1374
1375 # opcontrol --reset
1376 # opcontrol --setup --no-vmlinux --event=CPU_CLK_UNHALTED:500000:0:1:1 --separate=library
1377
1378 Start logging:
1379 # opcontrol --start
1380
1381 Now $DO_SOME_TASKS...
1382
1383 Stop logging:
1384 # opcontrol --shutdown
1385
1386 Then take a look at the reports using something like e.g.:
1387 # opreport -t 0.5 --exclude-dependent
1388 # opreport -t 0.5 /path/to/executable_to_check
1389 # opannotate -t 0.5 --source --assembly
1390 -- 
1391 Install ATI's fglrx driver for Xorg / X.org:
1392
1393 Usually there already exist drivers for the grml-system:
1394 # apt-get update ; apt-get install fglrx-driver fglrx-kernel-`uname -r`
1395
1396 After installing adjust xorg.conf via running:
1397 # aticonfig --initial --input=/etc/X11/xorg.conf
1398
1399 For more information take a look at http://wiki.grml.org/doku.php?id=ati
1400 -- 
1401 Install nvidia driver for Xorg / X.org:
1402
1403 Usually there already exist drivers for the grml-system:
1404 # apt-get update ; apt-get install nvidia-glx nvidia-kernel-`uname -r`
1405
1406 Then switch from module nv to nvidia:
1407
1408 # sed -i 's/Driver.*nv.*/Driver      "nvidia"/' /etc/X11/xorg.conf
1409 -- 
1410 glxgears - a GLX demo that draws three rotating gears
1411
1412 To print frames per second (fps) use:
1413 % glxgears -printfps
1414 -- 
1415 You forgot to boot with 'grml noeject noprompt' to avoid
1416 ejecting and prompting for CD removal when rebooting/halting
1417 the system?
1418
1419 Either run:
1420
1421 # noeject reboot
1422
1423 or:
1424
1425 # noeject halt
1426
1427 If you want to avoid only the prompting part, run:
1428
1429 # noprompt reboot
1430
1431 or:
1432
1433 # noprompt halt
1434 -- 
1435 Mount wikipedia local via fuse:
1436
1437 Adjust configuration:
1438 % cat ~/.wikipediafs/config.xml
1439 <wfs-config>
1440     <general>
1441        <article-cache-time>300</article-cache-time>
1442     </general>
1443     <sites>
1444       <site>
1445         <dirname>wikipedia-de</dirname>
1446         <host>de.wikipedia.org</host>
1447         <basename>/w/index.php</basename>
1448       </site>
1449       <site>
1450         <dirname>wikipedia-en</dirname>
1451         <host>en.wikipedia.org</host>
1452         <basename>/w/index.php</basename>
1453       </site>
1454     </sites>
1455 </wfs-config>
1456
1457 Mount it (/wiki must exist of course):
1458 % mount.wikipediafs /wiki
1459 % cat /wiki/wikipedia-en/Cat
1460
1461 Unmount via:
1462 % fusermount -u /wiki
1463 -- 
1464 Remote notification on X via osd (on screen display):
1465
1466 Start osd_server.py at your local host (listens on port 1234 by default):
1467 % osd_server.py
1468
1469 Then login to a $REMOTEHOST
1470 % ssh -R 1234:localhost:1234 $REMOTEHOST
1471
1472 Now send the text to your local display via running something like:
1473 % echo "text to send" | nc localhost 1234
1474
1475 Very useful when you are waiting for a long running job
1476 but want to do something else in the meanwhile:
1477
1478 % ./configure && make && echo "finished compiling" | netcat localhost 1234
1479
1480 You can use this in external programs as well of course. Examples:
1481
1482 Use osd in centericq:
1483
1484 % cat ~/.centericq/external
1485 [...]
1486 %action osd notify
1487 event msg
1488 proto all
1489 status all
1490 options nowait
1491 %exec
1492 #!/bin/bash
1493 if [ -x /usr/bin/socat -a -x /bin/netcat ] ; then
1494   CONTACT_CUSTOM_NICK=$(cat ${CONTACT_INFODIR}/info | head -n 46 | tail -n 1)
1495   osd_msg="*** CenterICQ: new ${EVENT_NETWORK} ${EVENT_TYPE} from ${CONTACT_CUSTOM_NICK} ***"
1496   if echo | socat - TCP4:localhost:1234 &>/dev/null ; then
1497     echo "${osd_msg}" | netcat localhost 1234
1498   fi
1499 fi
1500
1501 Use it in the IRC console client irssi via running:
1502
1503 /script load osd.pl
1504
1505 You can even activate the port forwarding by default globally:
1506
1507 % cat ~/.ssh/config
1508 [...]
1509 Host *
1510 RemoteForward 1234 127.0.0.1:1234
1511 ForwardAgent yes
1512
1513 Notice: if you get 'ABORT: Requested font not found' make sure the
1514 requested font is available, running 'LANG=C LC_ALL=C osd_server.py...'
1515 might help as well.
1516 -- 
1517 Avoid automatical startup of init scripts via invoke-rc.d:
1518
1519 First of all make sure the package policyrcd-script-zg2 (which
1520 provides the /usr/sbin/policy-rc.d interface) is installed.
1521
1522 In policyrcd-script-zg2's configuration file named
1523 /etc/zg-policy-rc.d.conf the script /usr/sbin/grml-policy-rc.d is
1524 defined as the interface for handling invoke-rc.d's startup policy.
1525
1526 grml-policy-rc.d can be configure via /etc/policy-rc.d.conf.  By
1527 default you won't notice any differences to Debian's default
1528 behaviour, except that invoke-rc.d won't be executed if a chroot has
1529 been detected (detection: /proc is missing).
1530
1531 If you want to disable automatical startup of newly installed packages
1532 (done via the invoke-rc.d mechanism) just set EXITSTATUS to '101' in
1533 /etc/policy-rc.d.conf.
1534
1535 To restore the default behaviour set EXITSTATUS back to '0' in
1536 /etc/policy-rc.d.conf.
1537 -- 
1538 Install VMware-Tools for grml:
1539
1540 First of all make sure a CD-ROM device in VMware is available.
1541
1542 Mount the CD-ROM device to /mnt/cdrom, then unpack and install
1543 the tools running:
1544
1545 cd /tmp
1546 unp /mnt/cdrom/vmware-linux-tools.tar.gz
1547 cd vmware-tools-distrib
1548 ./vmware-install.pl
1549
1550 /etc/init.d/networking stop
1551 rmmod pcnet32
1552 rmmod vmxnet
1553 depmod -a
1554 modprobe vmxnet
1555 /etc/init.d/networking start
1556
1557 In an X terminal, launch the VMware Tools running:
1558
1559 vmware-toolbox
1560 -- 
1561 Some important Postfix stuff
1562
1563 List mail queue:
1564
1565 # mailq
1566 or
1567 # postqueue -p
1568
1569 Send all messages in the queue:
1570
1571 # postqueue -f
1572
1573 Send all messages in the queue for a specific site:
1574
1575 # postqueue -s site
1576
1577 Delete a specific message
1578 # postsuper -d 12345678942
1579
1580 Deletes all messages held in the queue for later delivery
1581 # postsuper -d ALL deferred
1582
1583 Mail queues in postfix:
1584
1585     incoming -> mail who just entered the system
1586     active   -> mail to be delivered
1587     deferred -> mail to be delivered later because there were problems
1588     hold     -> mail that should not be delivered until released from hold
1589
1590 For configuration of postfix take a look at
1591 /etc/postfix/master.cf  - man 5 master
1592 /etc/postfix/main.cf    - man 5 postconf
1593 and http://www.postfix.org/documentation.html.
1594 -- 
1595 File permissions
1596
1597 mode 4000 - set user ID (suid):
1598
1599 - for executable files: run as the user who owns the file, instead of the
1600   user who runs the file
1601 - for directories: not used
1602
1603 mode 2000 - set group ID (guid):
1604
1605 - for executable files: run as the group who owns the file, instead of the
1606   group of the user who runs the file
1607 - for directories: when a file is created inside the directory, it belongs
1608   to the group of the directory instead of the default group of the user who
1609   created the file
1610
1611 mode 1000 - sticky bit:
1612
1613 - for files: not used
1614 - for directories: only the owner of a file can delete or rename the file
1615 -- 
1616 Create MySQL database
1617
1618 # apt-get install mysql-client mysql-server
1619
1620 Run 'mysql' as root - create a database with:
1621
1622 create database grml
1623
1624 Give a user access to the database (without password):
1625
1626 grant all on grml.* to mika;
1627
1628 Give a user access to the database (with password):
1629
1630 grant all on grml.* to enrico identified by "PASSWORD";
1631 -- 
1632 Setup an HTTPS website:
1633
1634 create a certificate:
1635
1636 /usr/sbin/apache2-ssl-certificate -days 365
1637
1638 Create a virtual host on port 443:
1639
1640 <VirtualHost www.foo.invalid:443>
1641 [...]
1642 </VirtualHost>
1643
1644 Enable SSL in the VirtualHost:
1645
1646 SSLEngine On
1647 SSLCertificateFile /etc/apache2/ssl/apache.pem
1648
1649 Enable listening on the HTTPS port (/etc/apache2/ports.conf):
1650
1651 Listen 443
1652 -- 
1653 Useful Apache / Apache2 stuff
1654
1655 Check configuration file via running:
1656
1657 # apache2ctl configtest
1658
1659 Enable a site:
1660
1661 # a2ensite sitename
1662
1663 Enable a module
1664
1665 # a2enmod modulename
1666 -- 
1667 Create tar archive and store it on remote machine:
1668
1669 % tar zcf - /sourcedir | ssh user@targethost "cat >file.tgz"
1670 -- 
1671 Pick out and displays images from network traffic:
1672
1673 # driftnet
1674 -- 
1675 Install Flash plugin:
1676
1677 # dpkg-reconfigure flashplugin-nonfree
1678 -- 
1679 To test a proxy, low level way:
1680
1681 % telnet proxy 8080
1682 [...]
1683 GET http://www.google.com HTTP/1.0 [press enter twice]
1684 -- 
1685 Adjust system for use of qemu with kqemu:
1686
1687 Make sure you have all you need:
1688 # apt-get update ; apt-get install qemu grml-kerneladdons
1689
1690 Then set up kqemu:
1691
1692 modprobe kqemu
1693 mknod /dev/kqemu c 250 0
1694 chmod 666 /dev/kqemu
1695 chmod 666 /dev/net/tun
1696
1697 Check kqemu support via starting qemu, press
1698 Ctrl-Alt-2 and entering 'info kqemu'.
1699 -- 
1700 (High-Load) Debugging related tools:
1701
1702 mpstat  # report processors related statistics
1703 iostat  # report CPU statistics and input/output statistics for devices and partitions
1704 vmstat  # report virtual memory statistics
1705 slabtop # display kernel slab cache information in real time
1706 atsar   # system activity report
1707 dstat   # versatile tool for generating system resource statistics
1708
1709 Usage examples:
1710
1711 # mptstat -P ALL
1712 # iostat -x 1
1713 # iostat -xtc 5 3
1714 # vmstat 1
1715 # atsar -t 60 10
1716 # dstat -af
1717 -- 
1718 Using WPA for network setup manually:
1719
1720 # wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf
1721
1722 Adjust the options and configuration file to your needs.
1723 Also take a look at 'grml-network'.
1724 -- 
1725 Start X and lock console via exiting:
1726
1727 % startx 2>~/.xsession-errors &| exit
1728 -- 
1729 Which process is writing to disk?
1730
1731 # echo 1 > /proc/sys/vm/block_dump
1732
1733 Warning: you must disable syslogd before you do this, or you must
1734 make sure that kernel output is not logged.
1735
1736 When you're done, disable block dump using:
1737 # echo 0 > /proc/sys/vm/block_dump
1738
1739 Alternative:
1740 laptop-mode-tools provides a tool named lm-profiler (laptop mode profiler)
1741 which handles block_dump on its own.
1742 -- 
1743 Install initrd via initramfs-tools for currently running kernel:
1744
1745 # update-initramfs -c -t -k $(uname -r)
1746 -- 
1747 Install initrd via yaird for currently running kernel:
1748
1749 # yaird -o /boot/initrd.img-$(uname -r)
1750
1751 Install initrd via yaird for specific kernel:
1752
1753 # mount /proc
1754 # mount /sys
1755 # yaird -o /boot/initrd.img-2.6.15-1-686 2.6.15-1-686
1756 -- 
1757 Reinstall package with its original configuration files:
1758
1759 # apt-get install --reinstall -o DPkg::Options::=--force-confmiss -o \
1760   DPkg::Options::=--force-confnew package
1761 -- 
1762 grml 0.8 funkenzutzler - rt2x00 drivers:
1763
1764 To avoid conflicts with the other rt2x00-drivers the package rt2x00 (which
1765 includes beta-version drivers) is not installed by default. If you want to
1766 use the kernel modules rt2400pci, rt2500pci, rt2500usb, rt61pci and/or
1767 rt73usb please install the package manually running:
1768
1769 # dpkg -i /usr/src/rt2x00-modules-*.deb
1770 -- 
1771 Use Java with jikes and jamvm on grml:
1772
1773 Simple demo:
1774
1775 % cp /usr/share/doc/grml-templates/template.java .
1776 % jikes template.java
1777 % jamvm HelloWorld
1778
1779 Notice that grml exports $JIKESPATH (/usr/share/classpath/glibj.zip),
1780 so you do not have to manually run
1781 jikes --bootclasspath /usr/share/classpath/glibj.zip
1782 -- 
1783 Online resizing of (Software-)RAID5:
1784
1785 # Initiate a RAID5 setup for testing purposes:
1786 mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/hda1 /dev/hdb1 /dev/hdd1
1787
1788 # Create filesystem, mount md0, create a testfile and save md5sum for
1789 # later check:
1790 mkfs.ext3 /dev/md0
1791 mount /dev/md0 /mnt/test
1792 dd if=/dev/urandom of=/mnt/test/dd bs=512 count=10000
1793 md5sum /mnt/test/dd > md5sum
1794
1795 # Make sure the RAID is synched via checking:
1796 cat /proc/mdstat
1797
1798 # Now remove one partition:
1799 mdadm /dev/md0 --fail /dev/hdd1 --remove /dev/hdd1
1800
1801 # Delete partition, create a new + bigger one and set partition type to fd
1802 # (Linux raid autodetect):
1803 cfdisk /dev/hdd
1804
1805 # And re-add the partition:
1806 mdadm -a /dev/md0 /dev/hdd1
1807
1808 # Make sure the RAID is synched via checking:
1809 cat /proc/mdstat
1810
1811 # Repeat the steps for all other disks/partitions as well:
1812 mdadm /dev/md0 --fail /dev/hdb1 --remove /dev/hdb1
1813 cfdisk /dev/hdb
1814 mdadm -a /dev/md0 /dev/hdb1
1815 cat /proc/mdstat
1816 mdadm /dev/md0 --fail /dev/hda1 --remove /dev/hda1
1817 cfdisk /dev/hda
1818 mdadm -a /dev/md0 /dev/hda1
1819 cat /proc/mdstat
1820
1821 # Now resize the RAID5 system online [see 'man mdadm' for details]:
1822 mdadm --detail /dev/md0 | grep -e 'Array Size' -e 'Device Size'
1823 mdadm --grow /dev/md0 -z max
1824 mdadm --detail /dev/md0 | grep -e "Array Size" -e 'Device Size'
1825
1826 # Last step - resize the filesystem (online again):
1827 resize2fs /dev/md0
1828 -- 
1829 ext3 online resizing:
1830
1831 Starting with Linux kernel 2.6.10 you can resize ext3 online.  With
1832 e2fsprogs >=1.39-1 new filesystems are created with directory indexing and
1833 on-line resizing enabled by default (see /etc/mke2fs.conf).
1834
1835 Demo:
1836
1837 cfdisk /dev/hda                           # create a partition with type 8e (lvm)
1838 pvcreate /dev/hda2                        # create a physical volume
1839 vgcreate resize_me /dev/hda2              # create volume group
1840 lvcreate -n resize_me -L100 resize_me     # create a logical volume
1841 mkfs.ext3 /dev/resize_me/resize_me        # now create a new filesystem
1842 mount /dev/resize_me/resize_me /mnt/test  # mount the new fs for demonstrating online resizing
1843 df -h                                     # check the size of the partition
1844 lvextend -L+100M /dev/resize_me/resize_me # let's extend the logical volume
1845 resize2fs /dev/resize_me/resize_me        # and finally resize the filesystem
1846 df -h                                     # recheck the size of the partition
1847
1848 This also works for Software-RAID. Demo:
1849
1850 mdadm --create --verbose /dev/md0 --level=raid1 --raid-devices=2 /dev/hda2 /dev/hdb1
1851 mkfs.ext3 /dev/md0
1852 mount /dev/md0 /mnt/test
1853 mdadm /dev/md0 --fail /dev/hda2 --remove /dev/hda2
1854 cfdisk /dev/hda                                  # adjust partition size for hda2
1855 mdadm /dev/md0 --add /dev/hda2
1856 mdadm /dev/md0 --fail /dev/hdb1 --remove /dev/hdb1
1857 cfdisk /dev/hdb                                  # adjust partition size for hdb1
1858 mdadm /dev/md0 --add /dev/hdb1
1859 mdadm --grow /dev/md0 --size=max
1860 resize2fs /dev/md0
1861
1862 Notice: online resizing works as soon as the kernel can re-read the
1863 partition table. So it works for example with LVM and SW-RAID but not with
1864 a plain device (/dev/[sh]d*). The kernel does not re-read the partition
1865 table if the device is already mounted.
1866 -- 
1867 Use vim as an outline editor:
1868
1869 % $PAGER /usr/share/doc/vim-vimoutliner/README.Debian
1870 % vim ~/foo.otl
1871 :he vo
1872 -- 
1873 Monitor directories/files for changes using iwatch
1874
1875 Monitor /tmp for changes:
1876 % iwatch /tmp/
1877
1878 Monitor files/directories specified in /etc/iwatch.xml
1879 and send mail on changes:
1880 % iwatch
1881 -- 
1882 Some often used mdadm commands:
1883
1884 Set up RAID1:
1885 # mdadm --create --verbose /dev/md0 --level=raid1 --raid-devices=2 /dev/hda1 /dev/hdb1
1886
1887 Display details of specific RAID:
1888 # mdadm --detail /dev/md0
1889 # cat /proc/mdstat
1890
1891 Simulating a drive failure by software:
1892 # mdadm --manage --set-faulty /dev/md0 /dev/hda1
1893
1894 Remove disk from RAID:
1895 # mdadm /dev/md0 -r /dev/hda1
1896
1897 Set disk as faulty and remove from RAID:
1898 # mdadm /dev/md0 --fail /dev/hda1 --remove /dev/hda1
1899
1900 Stop a RAID-device:
1901 # mdadm -S /dev/md0
1902
1903 Restart a RAID-device:
1904 # mdadm -R /dev/md0
1905
1906 Add another disk to existing RAID setup (hotadd):
1907 # mdadm /dev/md0 -a /dev/hde1
1908 # mdadm --grow /dev/md0 --raid-devices=4
1909
1910 Assemble and start all arrays:
1911 # mdadm --assemble --scan
1912
1913 Assemble a specific array:
1914 # mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1
1915
1916 Resync:
1917 # mdadm --assemble --run --force --update=resync /dev/md0 /dev/sda1 /dev/sda2
1918
1919 Stop and rebuild:
1920 # mdadm --stop --scan
1921
1922 Scan for and setup arrays automatically:
1923 # mdadm --assemble --scan --auto=yes --verbose
1924
1925 Notice: If the above does not work make sure /etc/mdadm/mdadm.conf contains:
1926 DEVICE partitions
1927 CREATE owner=root group=disk mode=0660 auto=yes
1928 HOMEHOST <system>
1929 MAILADDR root
1930
1931 Running
1932 # /usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf
1933 might help as well.
1934
1935 Monitoring the sw raid
1936 # nohup mdadm --monitor --mail=root@localhost --delay=300 /dev/md0
1937
1938 Producing /etc/mdadm/mdadm.conf:
1939 # mdadm --detail --scan > /etc/mdadm/mdadm.conf
1940
1941 See also: man mdadm | less -p "^EXAMPLES"
1942           http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html
1943 -- 
1944 A quick summary of the most commonly used RAID levels:
1945
1946 RAID 0: Striped Set
1947  => 2 disks each 160 GB: 320 GB data
1948 RAID 1: Mirrored Set
1949  => 2 disks each 160 GB: 160 GB data
1950 RAID 5: Striped Set with Parity
1951  => 3 disks each 160 GB: 320 GB data; 160 GB redundancy
1952
1953 Common nested RAID levels:
1954 RAID 01: A mirror of stripes
1955 RAID 10: A stripe of mirrors
1956 RAID 30: A stripe across dedicated parity RAID systems
1957 RAID 100: A stripe of a stripe of mirrors
1958
1959   -- http://en.wikipedia.org/wiki/RAID
1960 -- 
1961 Logical Volume Management (LVM) with Linux
1962
1963 LVM setup layout:
1964 ~~~~~~~~~~~~~~~~~
1965
1966 |    hda1   hdc1      (PV:s on partitions or whole disks)
1967 |       \   /
1968 |        \ /
1969 |       diskvg        (VG)
1970 |       /  |  \
1971 |      /   |   \
1972 |  usrlv rootlv varlv (LV:s)
1973 |    |      |     |
1974 | ext3    ext3  xfs   (filesystems)
1975
1976 Often used commands:
1977 ~~~~~~~~~~~~~~~~~~~~
1978
1979 Create a physical volume:
1980 # pvcreate /dev/hda2
1981
1982 Create a volume group:
1983 # vgcreate testvg /dev/hda2
1984
1985 Create a logical volume:
1986 # lvcreate -n test_lv -L100 testvg
1987
1988 Resize a logical volume:
1989 # lvextend -L+100M /dev/resize_me/resize_me
1990 # resize2fs /dev/resize_me/resize_me               # ext2/3
1991 # xfs_growfs  /dev/resize_me/resize_me             # xfs
1992 # resize_reiserfs -f /dev/resize_me/resize_me      # reiserfs online
1993 # mount -o remount,resize /dev/resize_me/resize_me # jfs
1994
1995 Create a snapshot of a logical volume:
1996 # lvcreate -L 500M --snapshot -n mysnap /dev/testvg/test_lv
1997
1998 Deactivate a volume group:
1999 # vgchange -a n my_volume_group
2000
2001 Actually remove a volume group:
2002 # vgremove my_volume_group
2003
2004 Display information about physical volume:
2005 # pvdisplay /dev/hda1
2006
2007 Remove physical volume:
2008 # vgreduce my_volume_group /dev/hda1
2009
2010 Remove logical volume:
2011 # umount /dev/myvg/homevol
2012 # lvremove /dev/myvg/homevol
2013
2014 See also: man lvm
2015           http://www.tldp.org/HOWTO/LVM-HOWTO/
2016 -- 
2017 How to use APT locally
2018
2019 Sometimes you have lots of packages .deb that you would like to use APT to
2020 install so that the dependencies would be automatically solved. Solution:
2021
2022 mkdir ~debs
2023 dpkg-scanpackages debs /dev/null | gzip > debs/Packages.gz
2024 echo "  deb file:/root debs/" >> /etc/apt/sources.list
2025 dpkg-scansources debs | gzip > debs/Sources.gz
2026 echo "  deb-src file:/root debs/" >> /etc/apt/sources.list
2027
2028 See also: http://www.debian.org/doc/manuals/apt-howto/ch-basico.en.html
2029 -- 
2030 Check filesystem's LABEL:
2031
2032 generic way:
2033 # vol_id -l /dev/sda1
2034
2035 ext2/3 without vol_id:
2036 # dumpe2fs /dev/sda1 | grep "Filesystem volume name"
2037
2038 xfs without vol_id:
2039 # xfs_admin -l /dev/sda1
2040
2041 reiserfs without vol_id:
2042 # debugreiserfs /dev/sda1 | grep UUID
2043
2044 reiser4 without vol_id:
2045 # debugfs.reiser4 /dev/sda1 | grep uuid
2046 -- 
2047 Check filesystem's UUID:
2048
2049 generic way:
2050 # vol_id -u /dev/sda1
2051
2052 ext2/3 without vol_id:
2053 # dumpe2fs /dev/sda1 | grep UUID
2054
2055 xfs without vol_id:
2056 # xfs_admin -u /dev/sda1
2057
2058 reiserfs without vol_id:
2059 # debugreiserfs /dev/sda1 | grep LABEL
2060
2061 reiser4 without vol_id:
2062 # debugfs.reiser4 /dev/sda1 | grep label
2063 -- 
2064 Disable pdiffs feature of APT:
2065
2066 Permanent:
2067 # echo 'Acquire::PDiffs "false";' >> /etc/apt/apt.conf
2068
2069 Temporary:
2070 # apt-get update -o Acquire::Pdiffs=false
2071 -- 
2072 Backup big devices or files and create compressed splitted
2073 image chunks of it using zsplit
2074
2075 Create backup of /dev/sda named archiveofsda_#.spl.zp in directory
2076 /mnt/sda1/backup, split the files up into chunks of 1GB each and set
2077 read/write buffer to 256kB:
2078 # zsplit -b 256 -N archiveofsda -o /mnt/sda1/backup/ -s 1G /dev/sda
2079
2080 Restore the backup using unzsplit:
2081 # unzsplit -D /dev/sda -d archiveofsda
2082
2083 More usage examples: man zsplit + man unzsplit
2084 -- 
2085 Measure network performance using ipserf
2086
2087 Server side:
2088 % iperf -s -V
2089
2090 Client side:
2091 % iperf -c <server_address> -V
2092
2093 or
2094
2095 Server with 128k TCP window size:
2096 % iperf -s -w128k
2097
2098 Client with running for 60 seconds and bidirectional test:
2099 % iperf -c <server_address> -r -w128k -t60
2100 -- 
2101 Framebuffer resolutions:
2102
2103                               Resolution in pixels
2104 Color depth      |   640x480      800x600      1024x768      1280x1024
2105 256        (8bit)|     769          771           773           775
2106 32000     (15bit)|     784          787           790           793
2107 65000     (16bit)|     785          788           791           794
2108 16.7 Mill.(24bit)|     786          789           792           795
2109
2110 vga=0x... modes:
2111
2112   Mode 0x0300: 640x400 (+640), 8 bits
2113   Mode 0x0301: 640x480 (+640), 8 bits
2114   Mode 0x0303: 800x600 (+800), 8 bits
2115   Mode 0x0303: 800x600 (+832), 8 bits
2116   Mode 0x0305: 1024x768 (+1024), 8 bits
2117   Mode 0x0307: 1280x1024 (+1280), 8 bits
2118   Mode 0x030e: 320x200 (+640), 16 bits
2119   Mode 0x030f: 320x200 (+1280), 24 bits
2120   Mode 0x0311: 640x480 (+1280), 16 bits
2121   Mode 0x0312: 640x480 (+2560), 24 bits
2122   Mode 0x0314: 800x600 (+1600), 16 bits
2123   Mode 0x0315: 800x600 (+3200), 24 bits
2124   Mode 0x0317: 1024x768 (+2048), 16 bits
2125   Mode 0x0318: 1024x768 (+4096), 24 bits
2126   Mode 0x031a: 1280x1024 (+2560), 16 bits
2127   Mode 0x031b: 1280x1024 (+5120), 24 bits
2128   Mode 0x0330: 320x200 (+320), 8 bits
2129   Mode 0x0331: 320x400 (+320), 8 bits
2130   Mode 0x0332: 320x400 (+640), 16 bits
2131   Mode 0x0333: 320x400 (+1280), 24 bits
2132   Mode 0x0334: 320x240 (+320), 8 bits
2133   Mode 0x0335: 320x240 (+640), 16 bits
2134   Mode 0x0336: 320x240 (+1280), 24 bits
2135   Mode 0x033c: 1400x1050 (+1408), 8 bits
2136   Mode 0x033d: 640x400 (+1280), 16 bits
2137   Mode 0x033e: 640x400 (+2560), 24 bits
2138   Mode 0x0345: 1600x1200 (+1600), 8 bits
2139   Mode 0x0346: 1600x1200 (+3200), 16 bits
2140   Mode 0x034d: 1400x1050 (+2816), 16 bits
2141   Mode 0x035c: 1400x1050 (+5632), 24 bits
2142 -- 
2143 Portscan using netcat:
2144
2145 # netcat -v -w2 <host|ip-addr.> 1-1024
2146 -- 
2147 Run apt-get but disable apt-listchanges:
2148
2149 APT_LISTCHANGES_FRONTEND=none apt-get ...
2150
2151 Upgrade system but disable apt-listbugs:
2152
2153 APT_LISTBUGS_FRONTEND=none apt-get ...
2154 -- 
2155 Set up a Transparent Debian Proxy
2156
2157 Install of apt-cacher, the default config will do:
2158 # apt-get install apt-cacher
2159
2160 Check out the ip address of debian mirror(s).
2161 Then add this to your firewall script:
2162
2163 DEBIAN_MIRRORS="141.76.2.4 213.129.232.18"
2164 for ip in ${DEBIAN_MIRRORS} ; do
2165   ${IPTABLES} -t nat -A PREROUTING -s $subnet -d $ip -p tcp --dport 80 -j REDIRECT --to-port 3142
2166 done
2167
2168 where ${IPTABLES} is the location of your iptables binary
2169 and $subnet is your internal subnet.
2170
2171 Now everybody in your subnet who does access either
2172 ftp.de.debian.org or ftp.at.debian.org will actually
2173 access your apt-cacher instead.
2174
2175 To use apt-cacher on the router itself, add the following
2176 line to your /etc/apt/apt.conf:
2177
2178 Acquire::http::Proxy "http://localhost:3142/";
2179 -- 
2180 Version control using Mercurial
2181
2182 Setting up a Mercurial project:
2183
2184 % cd project
2185 % hg init           # creates .hg
2186 % hg add            # add all files
2187 % hg commit         # commit all changes, edit changelog entry
2188
2189 Branching and merging:
2190
2191 % hg clone linux linux-work  # create a new branch
2192 % cd linux-work
2193 <make changes>
2194 % hg commit
2195 % cd ../linux
2196 % hg pull ../linux-work     # pull changesets from linux-work
2197 % hg merge                  # merge the new tip from linux-work into
2198                             # (old versions used "hg update -m" instead)
2199                             # our working directory
2200 % hg commit                 # commit the result of the merge
2201
2202 Importing patches:
2203
2204 % cat ../p/patchlist | xargs hg import -p1 -b ../p
2205
2206 Exporting a patch:
2207
2208 (make changes)
2209 % hg commit
2210 % hg tip
2211 1234:af3b5cd57dd5
2212 % hg export 1234 > foo.patch    # export changeset 1234
2213
2214 Export your current repo via HTTP with browsable interface:
2215
2216 % hg serve -n "My repo" -p 80
2217
2218 Pushing changes to a remote repo with SSH:
2219
2220 % hg push ssh://user@example.com/~/hg/
2221
2222 Merge changes from a remote machine:
2223
2224 host1% hg pull http://foo/
2225 host2% hg merge # merge changes into your working directory
2226
2227 Set up a CGI server on your webserver:
2228 % cp hgwebdir.cgi ~/public_html/hg/index.cgi
2229 % $EDITOR ~/public_html/hg/index.cgi # adjust the defaults
2230
2231 Mercurial repositories of grml can be found at http://hg.grml.org/
2232 -- 
2233 Download binary codecs for mplayer:
2234
2235 # /usr/share/mplayer/scripts/win32codecs.sh
2236
2237 To play encrypted DVDs and if you are living in a country where using
2238 libdvdcss code is not illegal can install Debian package libdvdread3
2239 and use the script /usr/share/doc/libdvdread3/install-css.sh.
2240 -- 
2241 Read manpages of uninstalled packages with debman:
2242
2243 % debman -p git-core git
2244 -- 
2245 Test network performance using netperf:
2246
2247 Server:
2248 # netserver
2249
2250 Client:
2251 # netperf -t TCP_STREAM -H 192.168.0.41
2252 -- 
2253