Added tip how to bypass the password of a PDF file
[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 Grep with highlighting:
418
419 % grep --color=auto ...
420 % hgrep ...
421 -- 
422 Extract matches when grepping:
423
424 Usage examples:
425 % ifconfig | grepc 'inet addr:(.*?)\s'
426 % ifconfig | glark --extract-matches 'inet addr:(.*?)\s'
427 -- 
428 Output text as sound:
429
430 % say 'ghroummel'
431 % xsay            # when running X and text selected via mouse
432 -- 
433 Adjust a grml harddisk (grml2hd) installation:
434
435 # grml2hd-utils
436 -- 
437 Get information on movie files:
438
439 % tcprobe -i file.avi
440 -- 
441 Get an overview of your image files:
442
443 % convert 'vid:*.jpg' thumbnails.jpg
444 -- 
445 List all standard defines:
446
447 % gcc -dM -E - < /dev/null
448 -- 
449 Send a mail as reminder:
450
451 echo "mail -s 'check TODO-list' $MAILADDRESS < /dev/null" | at 23:42
452 -- 
453 ncurses-based presentation tool:
454
455 % tpp
456
457 See: man tpp and /usr/share/doc/tpp/examples/
458 -- 
459 Use ICQ / Jabber / Yahoo! / AIM / MSN /... on command line:
460
461 % centericq
462 -- 
463 Use IRC on command line:
464
465 % irssi
466 -- 
467 Diff / merge files:
468
469 % vimdiff file1 file2
470
471 Re-diffing:
472
473 :diffupdate
474
475 Moving between diffs:
476
477 [c
478 ]c
479
480 Synchronizing:
481
482 :diffget
483 :diffput
484 -- 
485 Hardware monitoring without kernel dependencies:
486
487 % mbmon
488 -- 
489 Install grml-iso to usb-stick:
490
491 % grml2usb grml.iso /mount/point
492 -- 
493 Use mplayer on framebuffer console:
494
495 % mplayer -vo fbdev ...
496 -- 
497 Use links2 on framebuffer console:
498
499 % links2 -driver fb ...
500 -- 
501 Switch language / keyboard:
502
503 * use the bootparam lang to set language environment ($LANG, $LC_ALL, $LANGUAGE)
504 * use the bootparams keyboard / xkeyboard to activate specific keyboard layout
505   Usage example: 'grml lang=us keyboard=de xkeyboard=de'
506
507 Or run one of the following commands:
508
509 % grml-lang de
510 or
511 # loadkeys i386/qwertz/de-latin1-nodeadkeys.kmap.gz # console
512 % setxkbmap de                                      # X11
513 -- 
514 Switch setting of caps-control key (switch between ctrl + shift) on keyboard:
515
516 # caps-ctrl
517 -- 
518 Mount usb device / usb stick:
519
520 % mount /mnt/external1   # corresponds to /dev/sda1
521 or
522 % mount /mnt/external    # corresponds to /dev/sda
523 -- 
524 Install Sun Java packages:
525
526 Download j2re.bin-file from http://java.sun.com/downloads/index.html and run
527
528 # apt-get install java-package
529 # fakeroot make-jpkg j2re-*.bin
530 # dpkg -i sun-j2re*.deb
531 # update-alternatives --config java
532 -- 
533 Improved dd version:
534
535 ddrescue is an improved version of dd which tries to read and
536 if it fails it will go on with the next sectors, where tools
537 like dd will fail.
538
539 % ddrescue ...
540
541 See: man ddrescue
542 -- 
543 How to make an audio file (e.g. Musepack format) out of a DVD track:
544
545 % mkfifo /tmp/fifo.wav
546 % mppenc /tmp/fifo.wav track06.mpc &
547 % mplayer -vo null -vc null -ao pcm:fast:file=/tmp/fifo.wav -dvd-device /dev/dvd dvd://1 -chapter 6-6
548
549 Adjust the mppenc line with the encoder you would like to use,
550 for example 'oggenc -o track06.ogg /tmp/fifo.wav' for ogg files.
551
552 Alternative:
553
554 % mplayer -vo null -dumpaudio -dumpfile track06.raw -aid N -dvd-device /dev/dvd dvd://1 -chapter 6-6
555 to extract audio without processing, where 'N' is the corresponding audio channel (see 'man mplayer')
556
557 Usage example for getting a PCM/wave file from audio channel 128:
558 % mplayer -vo null -vc null -ao pcm:fast:file=track06.wav -aid 128 -dvd-device /dev/dvd dvd://6
559 -- 
560 Create simple chroot:
561
562 # make_chroot_jail $USERNAME
563 -- 
564 Convert DOS formated file to unix format:
565
566 sed 's/.$//'    dosfile > unixfile       # assumes that all lines end with CR/LF
567 sed 's/^M$//'   dosfile > unixfile       # in bash/tcsh, press Ctrl-V then Ctrl-M
568 sed 's/\x0D$//' dosfile > unixfile       # gsed 3.02.80, but top script is easier
569 awk '{sub(/\r$/,"");print}'              # assumes EACH line ends with Ctrl-M
570 gawk -v BINMODE="w" '1' infile >outfile  # in DOS environment; cannot be done with
571                                          # DOS versions of awk, other than gawk
572 tr -d \r < dosfile > unixfile            # GNU tr version 1.22 or higher
573 tr -d '\015' < dosfile > unixfile        # use octal value for "\r" (see man ascii)
574 tr -d '[\015\032]' < dosfile > unixfile  # sometimes ^Z is appended to DOS-files
575 vim -c ":set ff=unix" -c ":wq" file      # convert using vim
576 vim -c "se ff=dos|x" file                # ... and even shorter ;)
577 recode ibmpc..lat1 file                  # convert using recode
578 echo -e "s/\r//g" > dos2unix.sed; sed -f dos2unix.sed < dosfile > unixfile
579 -- 
580 Save live audio stream to file:
581
582 % mplayer -ao pcm:file=$FILE
583
584 or
585
586 % mencoder mms://file.wmv -o $FILE -ovc copy -oac copy
587
588 or
589
590 % mimms mms://file.wmv
591 -- 
592 Merge video files:
593
594 AVI:
595
596 % avimerge -i *.avi -o blub.avi
597
598 MPEG:
599
600 % cat *.mpg > blub.mpg
601
602 WMV:
603
604 % mencoder file1.wmv -ovc lavc -oac lavc -ofps 25 -srate 48000 -mc 0 -noskip -forceidx -o file1.avi
605 % mencoder file2.wmv -ovc lavc -oac lavc -ofps 25 -srate 48000 -mc 0 -noskip -forceidx -o file2.avi
606 % avimerge -i file1.avi file2.avi -o blub.avi
607 -- 
608 Display MS-Word file:
609
610 % strings file.doc | fmt | less
611
612 or
613
614 % antiword file.doc
615 -- 
616 Convert MS-Word file to postscript:
617
618 % antiword -p a4 file.doc > file.ps
619 -- 
620 Convert manual to postscript:
621
622 % zcat /usr/share/man/man1/zsh.1.gz | groff -man > zsh.1.ps
623 or
624 % man -t zsh > zsh.ps
625 -- 
626 Read BIOS:
627
628 % dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8
629 -- 
630 Read HTTP via netcat:
631
632 echo "GET / HTTP/1.0\r\n\r\n" | netcat $DOMAIN 80
633 -- 
634 Get X ressources for specific program:
635
636 % xrdb -q |grep -i xterm
637 -- 
638 Get windowid of specific X-window:
639
640 % xwininfo -int | grep "Window id:" | cut -d ' ' -f 4
641 -- 
642 Get titel of specific X-window:
643
644 % xprop WM_CLASS
645 -- 
646 check locale - LC_MESSAGES:
647
648 % locale -ck LC_MESSAGES
649 -- 
650 Create random password:
651
652 % pwgen
653 or
654 % dd if=/dev/urandom bs=14 count=1 | hexdump | cut -c 9-
655 -- 
656 Get tarballs of various Linux Kernel trees:
657
658 % ketchup 2.6
659 to get the current stable 2.6 release
660
661 % ketchup -l
662 to get a list of all supported trees
663 -- 
664 Transfer your SSH public key to another host:
665
666 % ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote-system
667 or
668 % cat $HOME/.ssh/id_rsa.pub  | ssh user@remote-system 'cat >> .ssh/authorized_keys'
669 -- 
670 Update /etc/fstab entries:
671
672 # grml-rebuildfstab
673
674 See "man grml-rebuildfstab" for more details about
675 generation of /etc/fstab (including stuff like
676 fs LABELs / UUIDs,...).
677 -- 
678 Fetch and potentially change SCSI device parameters:
679
680 # sdparm /dev/sda
681
682 See: man sdparm
683 -- 
684 reclaim disk space by linking identical files together:
685
686 % dupmerge...
687 -- 
688 Find and remove duplicate files:
689
690 % dupseek ...
691 -- 
692 Perform layer 2 attacks:
693
694 # yersinia ...
695 -- 
696 rootsh
697 -- 
698 Guess PC-type hard disk partitions / partition table:
699
700 # gpart <options>
701
702 Perform a standard scan:
703 # gpart /dev/ice
704
705 Write back the guessed table:
706 # gpart -W /dev/ice /dev/ice
707 -- 
708 Develop, test and use exploit code with the Metasploit Framework:
709
710 cd /tmp
711 wget http://framework-mirrors.metasploit.com/msf/downloader/framework-3.0.tar.gz
712 unp framework-3.0.tar.gz
713 cd framework-3.0
714 ./msfcli
715 -- 
716 Useful documentation:
717
718 % w3m   /usr/share/doc/Debian/reference/reference.en.html
719 or
720 % xpdf =(zcat /usr/share/doc/Debian/reference/reference.en.pdf.gz)
721
722 http://grml.org/docs/           grml Documentation
723 http://wiki.grml.org/           grml Wiki
724 http://www.debian.org/doc/      Debian Documentation
725 http://wiki.debian.org/         Debian Wiki
726 http://www.gentoo.org/doc/en/   Gentoo Documentation
727 http://gentoo-wiki.com/         Gentoo Wiki
728 http://www.tldp.org/            The Linux Documentation Project
729
730 Tips and tricks:
731
732 % fortune debian-hints
733 -- 
734 Fun stuff:
735
736 % fortune debian-hints
737 % dpkg -L funny-manpages
738 -- 
739 Backup master boot record (MBR):
740
741 # dd if=/dev/ice of=/tmp/backup_of_mbr bs=512 count=1
742 -- 
743 Backup partition table:
744
745 # sfdisk -d /dev/hda > hda.out
746
747 Restore partition table:
748
749 # sfdisk /dev/hda < hda.out
750 -- 
751 Clone disk via network using netcat:
752
753 Listener:
754 # nc -vlp 30000 > hda1.img
755 Source:
756 # dd if=/dev/hda1 | nc -vq 0 192.168.1.2 30000
757
758 Adjust blocksize (dd's option bs=...) and include 'gzip -c'
759 to tune speed:
760
761 # dd if=/dev/hda1 bs=32M | gzip -c | nc -vq 0 192.168.1.2 30000
762 -- 
763 Backup specific directories via cpio and ssh:
764
765 # for f in directory_list; do find $f >> backup.list done
766 # cpio -v -o --format=newc < backup.list | ssh user@host "cat > backup_device"
767 -- 
768 Clone disk via ssh:
769
770 This one uses CPU cycles on the remote server to compare the files:
771 # ssh target_address cat remotefile | diff - localfile
772 # cat localfile | ssh target_address diff - remotefile
773
774 This one uses CPU cycles on the local server to compare the files:
775 # ssh target_address cat <localfile "|" diff - remotefile
776 -- 
777 Useful tools for cloning / backups:
778
779 * dd: convert and copy a file
780 * dd_rescue: copies data from one file (or block device) to another
781 * pcopy: a replacement for dd
782 * partimage: back up and restore disk partitions
783 * dirvish: Disk based virtual image network backup system
784 * devclone: in-place filesystem conversion -- device cloning
785 * ntfsclone: efficiently clone, image, restore or rescue an NTFS
786 * dump: ext2/3 filesystem backup
787 * udpcast: multicast file transfer tool
788 * cpio: copy files to and from archives
789 * pax: read and write file archives and copy directory hierarchies
790 * netcat / ssh / tar / gzip / bzip2: additional helper tools
791 -- 
792 Use grml as a rescue system:
793
794 Different tools:
795
796   * dd: convert and copy a file
797   * ddrescue: copies data from one file or block device to another
798   * partimage: Linux/UNIX utility to save partitions in a compressed image file
799   * cfdisk: Partition a hard drive
800   * nparted: Newt and GNU Parted based disk partition table manipulator
801   * parted-bf: The GNU Parted disk partition resizing program, small version
802   * testdisk: Partition scanner and disk recovery tool
803   * gpart: Guess PC disk partition table, find lost partitions
804
805 ext2/ext3:
806
807   * e2fsprogs: ext2 file system utilities and libraries
808   * e2tools: utilities for manipulating files in an ext2/ext3 filesystem
809   * e2undel: Undelete utility for the ext2 file system
810   * ext2resize: an ext2 filesystem resizer
811   * recover: Undelete files on ext2 partitions
812
813 ReiserFS/Reiser4:
814
815   * reiser4progs: administration utilities for the Reiser4 filesystem
816   * reiserfsprogs: User-level tools for ReiserFS filesystems
817
818 XFS:
819
820   * xfsdump: Administrative utilities for the XFS filesystem
821   * xfsprogs: Utilities for managing the XFS filesystem
822
823 JFS:
824
825   * jfsutils: utilities for managing the JFS filesystem
826
827 NTFS:
828
829   * ntfsprogs: tools for doing neat things in NTFS partitions from Linux
830   * salvage-ntfs: free NTFS data recovery tools
831   * scrounge-ntfs: data recovery program for NTFS file systems
832   * ntfsresize: resize ntfs partitions
833 -- 
834 Get ASCII value of a character with zsh:
835
836 % char=N ; print $((#char))
837 -- 
838 Convert a collection of mp3 files to wave or cdr using zsh:
839
840 % for i (./*.mp3){mpg321 --w - $i > ${i:r}.wav}
841 -- 
842 Convert images (foo.gif to foo.png) using zsh:
843
844 % for i in **/*.gif; convert $i $i:r.png
845 -- 
846 Remove all "non txt" files using zsh:
847
848 % rm ./^*.txt
849 -- 
850 Remote Shell Using SSH:
851
852 remote host:
853 % ssh -NR 3333:localhost:22 user@yourhost
854
855 local host:
856 % ssh user@localhost -p 3333
857 -- 
858 Reverse Shell with Netcat:
859
860 local host:
861 % netcat -v -l -p 3333 -e /bin/sh
862
863 remote host:
864 % netcat 192.168.0.1 3333
865 -- 
866 Reverse Shell via SSH:
867
868 local host (inside the network):
869 % ssh -NR 1234:localhost:22 remote_host
870
871 remote host (outside the network):
872 % ssh localhost -p 1234
873 -- 
874 Remove empty directories with zsh:
875
876 % rmdir ./**/*(/od) 2> /dev/null
877 -- 
878 Find all the empty directories in a tree with zsh:
879
880 % ls -ld *(/^F)
881 -- 
882 Find all files without a valid owner and change ownership with zsh:
883
884 % chmod user /**/*(D^u:${(j.:u:.)${(f)"$(</etc/passwd)"}%%:*}:)
885 -- 
886 Display the 5-10 last modified files with zsh:
887
888 % print -rl -- /path/to/dir/**/*(D.om[5,10])
889 -- 
890 Find and list the ten newest files in directories and subdirs (recursive) with zsh:
891
892 % print -rl -- **/*(Dom[1,10])
893 -- 
894 Find most recent file in a directory with zsh:
895
896 % setopt dotglob ; print directory/**/*(om[1])
897 -- 
898 Tunnel all traffic through an external server:
899
900 % ssh -ND 3333 username@external.machine
901
902 Then set the SOCKS4/5 proxy to localhost:3333.
903 Check whether it's working by surfing e.g. to checkip.dyndns.org
904 -- 
905 Tunnel everything through SSH via tsocks:
906
907 set up the SSH proxy on the client side:
908
909 % ssh -ND 3333 user@remote.host.example.com
910
911 Adjust /etc/tsocks.conf afterwards (delete all other lines):
912
913 server = 127.0.0.1
914 server_port = 3333
915
916 For programs who natively support proxying connections (e.g. Mozilla
917 Firefox) you can now set the proxy address to localhost port 3333.
918
919 All other programs which's connections you want to tunnel through your
920 external host are prefixed with tsocks, e.g.:
921
922 % tsocks netcat example.com 80
923 % tsocks irssi -c irc.quakenet.eu.org -p 6667
924
925 If you call tsocks without parameters it executes a shell witht the
926 LD_PRELOAD environment variable already set and exported.
927 -- 
928 smartctl - control and monitor utility for harddisks using Self-Monitoring,
929 Analysis and Reporting Technology (SMART):
930
931 # smartctl --all /dev/ice
932
933 If you want to use smartctl on S-ATA (sata) disks use:
934
935 # smartctl -d ata --all /dev/sda
936
937 Start offline test:
938 # smartctl -t offline /dev/ice
939
940 Start short test:
941 # smartctl -t short /dev/ice
942
943 Display results of test:
944 # smartctl -l selftest /dev/ice
945
946 Query device information:
947 # smartctl -i /dev/ice
948 -- 
949 Mount a BSD / Solaris partition:
950
951 # mount -t ufs -o ufstype=ufs2 /dev/hda1 /mnt/hda1
952
953 Use ufstype 44bsd  for FreeBSD, NetBSD, OpenBSD (read-write).
954 Use ufstype ufs2   for >= FreeBSD 5.x (read-only).
955 Use ufstype sun    for SunOS (Solaris) (read-write).
956 Use ufstype sunx86 for SunOS for Intel (Solarisx86) (read-write).
957
958 See /usr/share/doc/linux-doc-$(uname -r)/Documentation/filesystems/ufs.txt.gz
959 for more details.
960 -- 
961 Read BIOS (and or BIOS) password:
962
963 # dd if=/dev/mem bs=512 skip=2 count=1 | hexdump -C | head
964 -- 
965 Clone one of the kernel trees via git:
966
967  git clone rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
968                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
969 This path defines the tree. See http://kernel.org/git/ for an overview.
970 -- 
971 Mount filesystems over ssh protocol:
972
973 % sshfs user@host:/remote_dir /mnt/test
974
975 Unmount via:
976
977 % fusermount -u /mnt/test
978
979 (Notice: requires fuse kernel module)
980 -- 
981 Install Gentoo using grml:
982
983 See http://www.gentoo.org/doc/en/altinstall.xml
984 -- 
985 Install (plain) Debian (sarge release) via grml:
986
987 Assuming you want to install Debian to sda1:
988
989 mkfs.ext3 /dev/sda1           # make an ext3 filesystem on /dev/sda1
990 mount -o rw,suid,dev /dev/sda1 /mnt/test # now mount the new partition
991 debootstrap sarge /mnt/test ftp://ftp.tugraz.at/mirror/debian # get main packages from a debian-mirror
992 chroot /mnt/test /bin/bash    # let's chroot into the new system
993 mount -t devpts none /dev/pts # ...otherwise running base-config might fail ("Terminated" or "openpty failed")
994 mount -t proc   none /proc    # make sure we also have a mounted /proc
995 base-config                   # now configure some main settings
996 vi /etc/mkinitrd/mkinitrd.conf # adjust $ROOT (to /dev/sda1) for your new partition, autodetection will fail in chroot
997 cd /dev ; ./MAKEDEV generic                                # make sure we have all necessary devices for lilo
998 apt-get install lilo linux-image-2.6.12-1-386              # install lilo and a kernel which fits your needs
999 cp /usr/share/doc/lilo/examples/conf.sample /etc/lilo.conf # let's use a template
1000 vi /etc/lilo.conf && lilo                                  # adjust the file for your needs and run lilo afterwards
1001 umount /proc ; umount /dev/pts                             # we do not need them any more
1002 exit                                                       # now leave chroot
1003 cp /etc/hosts /etc/fstab /mnt/test/etc/           # you might want to take the existing files...
1004 cp /etc/network/interfaces /mnt/test/etc/network/ # ...from the running grml system for your new system
1005 umount /mnt/test && reboot    # unmount partition and reboot...
1006
1007 See also: http://www.debian.org/releases/stable/i386/apcs04.html.en
1008 Avoid all of the above steps - use grml-debootstrap(8) instead!
1009 -- 
1010 Install (plain) Debian (etch release) via grml
1011
1012 Assuming you want to install Debian to sda1:
1013
1014 mkfs.ext3 /dev/sda1           # make an ext3 filesystem on /dev/sda1
1015 mount -o rw,suid,dev /dev/sda1 /mnt/test # now mount the new partition
1016 debootstrap etch /mnt/test ftp://ftp.tugraz.at/mirror/debian # get main packages from a debian-mirror
1017 chroot /mnt/test /bin/bash    # let's chroot into the new system
1018 mount -t proc   none /proc    # make sure we have a mounted /proc
1019 apt-get install locales console-data  # install locales
1020 dpkg-reconfigure locales console-data # adjust locales to your needs
1021 apt-get install vim most zsh screen less initrd-tools file grub     \
1022         usbutils pciutils bzip2 sysfsutils dhcp3-client resolvconf  \
1023         strace lsof w3m # install useful software
1024 apt-get install linux-headers-2.6-686 linux-image-686  # install current kernel
1025
1026 echo "127.0.0.1       localhost" > /etc/hosts   # adjust /etc/hosts and network:
1027 cat >> /etc/network/interfaces << EOF
1028 iface lo inet loopback
1029 iface eth0 inet dhcp
1030 auto lo
1031 auto eth0
1032 EOF
1033
1034 ln -sf /usr/share/zoneinfo/Europe/Vienna /etc/localtime # adjust timezone and /etc/fstab:
1035 cat >> /etc/fstab << EOF
1036 sysfs          /sys         sysfs   auto                       0   0
1037 proc           /proc        proc    defaults                   0   0
1038 /dev/sda1      /            ext3    defaults,errors=remount-ro 0   1
1039 /dev/sda2      none         swap    sw                         0   0
1040 /dev/cdrom     /mnt/cdrom0  iso9660 ro,user,noauto             0   0
1041 EOF
1042 passwd             # set password of user root
1043
1044 mkdir /boot/grub   # setup grub
1045 cp /usr/share/doc/grub/examples/menu.lst /boot/grub
1046 cat >> /boot/grub/menu.lst << EOF
1047 title           Debian Etch, kernel 2.6.18-3-686 (on /dev/sda1)
1048 root            (hd0,0)
1049 kernel          /boot/vmlinuz-2.6.18-3-686 root=/dev/sda1 ro
1050 initrd          /boot/initrd.img-2.6.18-3-686
1051 EOF
1052 vim /boot/grub/menu.lst               # adjust grub configuration to your needs
1053 cd /dev && MAKEDEV generic            # create default devices
1054 cp -i /usr/lib/grub/i386-pc/* /boot/grub/ # copy stage-files to /boot/grub/
1055 grub install  # now install grub, run in grub-cmdline following commands:
1056 > root (hd0,0)
1057 > setup (hd0)
1058 > quit
1059 umount -a # unmount all filesystems in chroot and finally:
1060 exit      # exit the chroot and:
1061 reboot
1062
1063 If you want to use lilo instead of grub take a look at
1064 /usr/share/doc/lilo/examples/conf.sample or use the following template:
1065
1066 cat > /etc/lilo.conf << EOF
1067 # This allows booting from any partition on disks with more than 1024 cylinders.
1068 lba32
1069
1070 # Specifies the boot device
1071 boot=/dev/sda1
1072
1073 # Specifies the device that should be mounted as root.
1074 root=/dev/sda1
1075
1076 # use Debian on software raid:
1077 # raid-extra-boot=mbr-only
1078
1079 install=text
1080 # prompt
1081 timeout=1
1082 map=/boot/map
1083 vga=normal
1084
1085 image=/boot/vmlinuz-2.6.18-grml
1086         label="2.6.18-grml"
1087         #append="...."
1088         read-only
1089         initrd=/boot/initrd.img-2.6.18-grml
1090 EOF
1091
1092 See also: http://www.debian.org/releases/stable/i386/apcs04.html.en
1093 Avoid all of the above steps - use grml-debootstrap(8) instead!
1094 -- 
1095 Convert files from Unicode / UTF-8 to ISO:
1096
1097 % iconv -f utf8 -t iso-8859-15 < utffile > isofile
1098
1099 and vice versa:
1100
1101 % iconv -f iso-8859-15 -t utf8 < isofile > utffile
1102 -- 
1103 Assign static setup for network cards (eth0 and eth1) via udev:
1104
1105 First method - manual:
1106 ~~~~~~~~~~~~~~~~~~~~~~
1107 Get information for SYSFS address:
1108 # udevinfo -a -p /sys/class/net/eth0/ | grep address
1109
1110 Then create udev rules:
1111 # cat /etc/udev/network.rules
1112 # match eth* stuff:
1113 KERNEL=="eth*", SYSFS{address}=="00:00:00:00:00:01", NAME="wlan0"
1114 KERNEL=="eth*", SYSFS{address}=="00:00:00:00:00:02", NAME="lan0"
1115 # do not match eth* drivers but also e.g. firewire stuff:
1116 ACTION=="add", SUBSYSTEM=="net", SYSFS{address}=="00:00:00:00:00:03", NAME="1394"
1117
1118 Now activate the rules:
1119 # cd /etc/udev/rules.d/ && ln -s ../network.rules z35_network.rules
1120
1121 Unload the drivers, restart udev and load the drivers again to activate
1122 the settings.
1123
1124 Second method - automatic:
1125 ~~~~~~~~~~~~~~~~~~~~~~~~~~
1126 Run /lib/udev/write_net_rules shipped with recent udev versions:
1127
1128 # INTERFACE=wlan1 /lib/udev/write_net_rules 00:00:00:00:00:04
1129
1130 This command will create /etc/udev/rules.d/z25_persistent-net.rules containing:
1131
1132 SUBSYSTEM=="net", DRIVER=="?*", SYSFS{address}=="00:00:00:00:00:04", NAME=wlan1
1133
1134 See /usr/share/doc/udev/writing_udev_rules/index.html for more information.
1135 -- 
1136 Change the suffix from *.sh to *.pl using zsh:
1137
1138 % autoload zmv
1139 % zmv -W '*.sh' '*.pl'
1140 -- 
1141 Generate SSL certificate:
1142
1143 Create self signed certificate (adjust /etc/ssl/openssl.cnf if necessary):
1144 # openssl req -x509 -newkey rsa:1024 -keyout keyfile -out certfile -days 9999 -nodes
1145
1146 Check certfile:
1147 # openssl x509 -in certfile -text
1148
1149 Verify against CA certificate:
1150 # openssl verify -CAfile cacert.crt -verbose -purpose sslserver
1151
1152 Generate 2048bit RSA-key:
1153 # openssl req -new -x509 -keyout pub-sec-key.pem -out pub-sec-key.pem -days 365 -nodes
1154
1155 As before but add request to existing key pub-sec-key.pem:
1156 # openssl req -new -out request.pem -keyin pub-sec-key.pem
1157
1158 Show request request.pem:
1159 # openssl req -text -noout -in request.pem
1160
1161 Verify signature of request request.pem:
1162 # openssl req -verify -noout -in request.pem
1163
1164 Generate SHA1 fingerprint (modulo key) of request.pem:
1165 # openssl req -noout -modulus -in request.pem | openssl sha1 -c
1166
1167 Generate 2048bit RSA-key and put it to pub-sec-key.pem. Save self signed certificate in self-signed-certificate.pem:
1168 # openssl req -x509 -days 365 -newkey rsa:2048 -out self-signed-certificate.pem -keyout pub-sec-key.pem
1169
1170 As before but create self signed certificate based on existing key pub-sec-key.pem:
1171 # openssl req -x509 -days 365 -new -out self-signed-certificate.pem -key pub-sec-key.pem
1172
1173 Generate new request out of existing self signed certificate:
1174 # openssl x509 -x509toreq -in self-signed-certificate.pem -signkey pub-sec-key.pem -out request.pem
1175
1176 Display certificate self-signed-certificate.pem in plaintext:
1177 # openssl x509 -text -noout -md5 -in self-signed-certificate.pem
1178
1179 Check self signed certificate:
1180 # openssl verify -issuer_checks -CAfile self-signed-certificate.pem self-signed-certificate.pem
1181
1182 Estable OpenSSL-connection using self-signed-certificate.pem and display certificate:
1183 # openssl s_client -showcerts -CAfile self-signed-certificate.pem -connect www.example.com:443
1184
1185 Generate ssl-certificate for use with apache2:
1186
1187 export RANDFILE=/dev/random
1188 mkdir /etc/apache2/ssl/
1189 openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
1190 chmod 600 /etc/apache2/ssl/apache.pem
1191
1192 Also take a look at make-ssl-cert (debconf wrapper for openssl):
1193
1194 # /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/apache.pem
1195
1196 and mod-ssl-makecert (utility to create SSL certificates in /etc/apache/ssl.*/).
1197 -- 
1198 Change Windows NT password(s):
1199
1200 # mount -o rw /mnt/hda1
1201 # cd /mnt/hda1/WINDOWS/system32/config/
1202 # chntpw SAM SECURITY system
1203
1204 Notice: if mounting the partition read-write did not work (check syslog!)
1205 try using mount.ntfs-3g instead: mount.ntfs-3g /dev/hda1 /mnt/hda1
1206
1207 (Be careful with deactivating syskey!)
1208 -- 
1209 glark - replacement for grep written in Ruby:
1210
1211 A replacement for (or supplement to) the grep family, glark offers:
1212 Perl compatible regular expressions, highlighting of matches,
1213 context around matches, complex expressions and automatic exclusion
1214 of non-text files.
1215
1216 Usage examples:
1217
1218 % glark -y keyword file      # display only the region that matched, not the entire line
1219 % glark -o format print *.h  # search for either "printf" or "format"
1220
1221 More information: man glark
1222 -- 
1223 Find CD burning device(s):
1224
1225 General information on CD-ROM:
1226 % cat /proc/sys/dev/cdrom/info
1227
1228 Scan using ATA Packet specific SCSI transport:
1229 # cdrecord -dev=ATA -scanbus
1230 # cdrecord-prodvd -s -scanbus dev=ATA
1231
1232 Get specific information for /dev/ice:
1233 # cdrecord dev=/dev/ice -scanbus
1234 -- 
1235 Create devices in /dev on udev:
1236
1237 For example create md devices (/dev/md0, /dev/md1,...):
1238 # cd /dev ; WRITE_ON_UDEV=1 ./MAKEDEV md
1239 -- 
1240 Identify network device (NIC):
1241
1242 # ethtool -i $DEVICE
1243
1244 Show NIC statistics:
1245
1246 # ethtool -S $DEVICE
1247
1248 If your NIC shows some aging signs, you may want to be sure:
1249
1250 # ethtool -t $DEVICE
1251
1252 Disable TCP/UDP checksums:
1253
1254 # ethtool -K $DEVICE tx off
1255 -- 
1256 grml2hd seems to hang? Getting Squashfs errors? Problems while booting?
1257
1258 Switch to tty12 and take a look at the syslog. If you see something like:
1259
1260   SQUASHFS error: zlib_fs returned unexpected result 0x........
1261   SQUASHFS error: Unable to read cache block [.....]
1262   SQUASHFS error: Unable to read inode [.....]
1263
1264 your ISO/CD-ROM very probably is not ok. Verify it via booting with grml testcd.
1265 Check your CD low-level via running:
1266
1267 # readcd -c2scan dev=/dev/cdrom
1268
1269 If the medium really is ok and it still fails try to boot with deactivated DMA
1270 via using grml nodma at the bootprompt.
1271 -- 
1272 Write a Microsoft compatible boot record (MBR) using ms-sys
1273
1274 Write a Windows 2000/XP/2003 MBR to device:
1275
1276 # ms-sys -m /dev/ice
1277 -- 
1278 Use a Vodafone 3G Datacard (UMTS) with Linux:
1279
1280 Plug in your vodafone card and check in syslog whether the appropriate
1281 (probably /dev/ttyUSB0 or /dev/noz0 when using newer vodafone cards) has
1282 been created. If so run:
1283
1284 # gcom -d $DEVICE
1285 # wvdial --config /etc/wvdial.conf.umts $PROFILE
1286
1287 Usage examples:
1288 # gcom -d /dev/ttyUSB0
1289 # wvdial --config /etc/wvdial.conf.umts a1usb
1290
1291 # gcom -d /dev/noz0
1292 # wvdial --config /etc/wvdial.conf.umts tmnozomi
1293
1294 # gcom -d /dev/noz0
1295 # wvdial --config /etc/wvdial.conf.umts dreiusb
1296
1297 Notice: newer vodafone cards require the nozomi driver. Run 'modprobe nozomi' on
1298 your grml system.
1299 -- 
1300 hdparm - get/set hard disk parameters
1301
1302 Display the identification info that was obtained from the drive at boot time,
1303 if available:
1304 # hpdarm -i /dev/ice
1305
1306 Request identification info directly from the drive:
1307 # hpdarm -I /dev/ice
1308
1309 Perform timings of device + cache reads for benchmark and comparison purposes:
1310 # hdparm -tT /dev/ice
1311 -- 
1312 bonnie++ - program to test hard drive performance.
1313
1314 # mkdir /mnt/benchmark
1315 # mount /dev/ice /mnt/benchmark
1316 # chmod go+w /mnt/benchmark
1317 # bonnie -u grml -d /mnt/benchmark -s 2000M
1318 -- 
1319 Use gizmo with a bluetooth headset:
1320
1321 % DEVICE="/dev/dsp$(awk '/- BT Headset/ {print $1}' /proc/asound/cards)"
1322 % gizmo --mic $DEVICE --speaker $DEVICE
1323 -- 
1324 Scan a v4l device for TV stations:
1325
1326 % scantv -c /dev/video0 -C /dev/vbi0 -o ~/.xawtv
1327
1328 Then running xawtv should work:
1329
1330 % xawtv
1331 -- 
1332 Run apt-get with timeout of 3 seconds:
1333
1334 # apt-get -o acquire::http::timeout=3  update
1335 -- 
1336 Debian GNU/Linux device driver check page
1337
1338 % $BROWSER http://kmuto.jp/debian/hcl/index.cgi
1339 -- 
1340 Use dd with status line:
1341
1342 # dd if=/dev/ice conv=noerror,notrunc,sync | buffer -S 100k | dd of=/tmp/file
1343 -- 
1344 Generate a 512k file of random data with status bar:
1345
1346 % dd if=/dev/random bs=1024 count=512 | bar -s 512k -of ./random
1347 -- 
1348 Install Grub instead of lilo on grml installation (grml2hd):
1349
1350 install grml:
1351 # grml2hd ....
1352
1353 adjust grub's configuration file menu.lst:
1354 # $EDITOR /boot/grub/menu.lst
1355
1356 now install grub (usage example for /dev/sda1):
1357 # grub install
1358 root (hd0,0)
1359 setup (hd0)
1360 -- 
1361 Install Ubuntu using grml:
1362
1363 See https://wiki.ubuntu.com/Installation/FromKnoppix
1364 -- 
1365 Resize ext2 / ext3 partition:
1366
1367 # tune2fs -O '^has_journal' /dev/iceX # disable journaling
1368 # fsck.ext2 -v -y -f /dev/iceX        # check the filesystem
1369 # resize2fs -p /dev/iceX  $SIZE       # resize it (adjust $SIZE)
1370 # fdisk /dev/ice                      # adjust partition in partition table
1371 # fsck.ext2 -v -y -f /dev/iceX        # check filesystem again
1372 # resize2fs -p /dev/iceX              # resize it to maximum
1373 # tune2fs -j /dev/iceX                # re-enable journal
1374 -- 
1375 Tune ext2 / ext3 filesystem:
1376
1377 Check partition first:
1378
1379 # tune2fs -l /dev/iceX
1380
1381 If you don't see dir_index in the list, then enable it:
1382
1383 # tune2fs -O dir_index /dev/iceX
1384
1385 Now run e2fsck with the -D option to have the directories optimized:
1386
1387 # e2fsck -D /dev/iceX
1388
1389 Notice: since e2fsprogs (1.39-1) filesystems are created with
1390 directory indexing and on-line resizing enabled by default.
1391 -- 
1392 Search for printers via network:
1393
1394 # pconf_detect -m NETWORK -i 192.168.0.1/24
1395 -- 
1396 Mount a remote directory via webdav (e.g. Mediacenter of GMX):
1397
1398 # mount -t davfs https://mediacenter.gmx.net/ /mnt/test
1399 -- 
1400 System-Profiling using oprofile:
1401
1402 Prepare setup:
1403
1404 # opcontrol --reset
1405 # opcontrol --setup --no-vmlinux --event=CPU_CLK_UNHALTED:500000:0:1:1 --separate=library
1406
1407 Start logging:
1408 # opcontrol --start
1409
1410 Now $DO_SOME_TASKS...
1411
1412 Stop logging:
1413 # opcontrol --shutdown
1414
1415 Then take a look at the reports using something like e.g.:
1416 # opreport -t 0.5 --exclude-dependent
1417 # opreport -t 0.5 /path/to/executable_to_check
1418 # opannotate -t 0.5 --source --assembly
1419 -- 
1420 Install ATI's fglrx driver for Xorg / X.org:
1421
1422 Usually there already exist drivers for the grml-system:
1423 # apt-get update ; apt-get install fglrx-driver fglrx-kernel-`uname -r`
1424
1425 After installing adjust xorg.conf via running:
1426 # aticonfig --initial --input=/etc/X11/xorg.conf
1427
1428 For more information take a look at http://wiki.grml.org/doku.php?id=ati
1429 -- 
1430 Install nvidia driver for Xorg / X.org:
1431
1432 Usually there already exist drivers for the grml-system:
1433 # apt-get update ; apt-get install nvidia-glx nvidia-kernel-`uname -r`
1434
1435 Then switch from module nv to nvidia:
1436
1437 # sed -i 's/Driver.*nv.*/Driver      "nvidia"/' /etc/X11/xorg.conf
1438 -- 
1439 glxgears - a GLX demo that draws three rotating gears
1440
1441 To print frames per second (fps) use:
1442 % glxgears -printfps
1443 -- 
1444 You forgot to boot with 'grml noeject noprompt' to avoid
1445 ejecting and prompting for CD removal when rebooting/halting
1446 the system?
1447
1448 Either run:
1449
1450 # noeject reboot
1451
1452 or:
1453
1454 # noeject halt
1455
1456 If you want to avoid only the prompting part, run:
1457
1458 # noprompt reboot
1459
1460 or:
1461
1462 # noprompt halt
1463 -- 
1464 Mount wikipedia local via fuse:
1465
1466 Adjust configuration:
1467 % cat ~/.wikipediafs/config.xml
1468 <wfs-config>
1469     <general>
1470        <article-cache-time>300</article-cache-time>
1471     </general>
1472     <sites>
1473       <site>
1474         <dirname>wikipedia-de</dirname>
1475         <host>de.wikipedia.org</host>
1476         <basename>/w/index.php</basename>
1477       </site>
1478       <site>
1479         <dirname>wikipedia-en</dirname>
1480         <host>en.wikipedia.org</host>
1481         <basename>/w/index.php</basename>
1482       </site>
1483     </sites>
1484 </wfs-config>
1485
1486 Mount it (/wiki must exist of course):
1487 % mount.wikipediafs /wiki
1488 % cat /wiki/wikipedia-en/Cat
1489
1490 Unmount via:
1491 % fusermount -u /wiki
1492 -- 
1493 Remote notification on X via osd (on screen display):
1494
1495 Start osd_server.py at your local host (listens on port 1234 by default):
1496 % osd_server.py
1497
1498 Then login to a $REMOTEHOST
1499 % ssh -R 1234:localhost:1234 $REMOTEHOST
1500
1501 Now send the text to your local display via running something like:
1502 % echo "text to send" | nc localhost 1234
1503
1504 Very useful when you are waiting for a long running job
1505 but want to do something else in the meanwhile:
1506
1507 % ./configure && make && echo "finished compiling" | netcat localhost 1234
1508
1509 You can use this in external programs as well of course. Examples:
1510
1511 Use osd in centericq:
1512
1513 % cat ~/.centericq/external
1514 [...]
1515 %action osd notify
1516 event msg
1517 proto all
1518 status all
1519 options nowait
1520 %exec
1521 #!/bin/bash
1522 if [ -x /usr/bin/socat -a -x /bin/netcat ] ; then
1523   CONTACT_CUSTOM_NICK=$(cat ${CONTACT_INFODIR}/info | head -n 46 | tail -n 1)
1524   osd_msg="*** CenterICQ: new ${EVENT_NETWORK} ${EVENT_TYPE} from ${CONTACT_CUSTOM_NICK} ***"
1525   if echo | socat - TCP4:localhost:1234 &>/dev/null ; then
1526     echo "${osd_msg}" | netcat localhost 1234
1527   fi
1528 fi
1529
1530 Use it in the IRC console client irssi via running:
1531
1532 /script load osd.pl
1533
1534 You can even activate the port forwarding by default globally:
1535
1536 % cat ~/.ssh/config
1537 [...]
1538 Host *
1539 RemoteForward 1234 127.0.0.1:1234
1540 ForwardAgent yes
1541
1542 Notice: if you get 'ABORT: Requested font not found' make sure the
1543 requested font is available, running 'LANG=C LC_ALL=C osd_server.py...'
1544 might help as well.
1545 -- 
1546 Avoid automatical startup of init scripts via invoke-rc.d:
1547
1548 First of all make sure the package policyrcd-script-zg2 (which
1549 provides the /usr/sbin/policy-rc.d interface) is installed.
1550
1551 In policyrcd-script-zg2's configuration file named
1552 /etc/zg-policy-rc.d.conf the script /usr/sbin/grml-policy-rc.d is
1553 defined as the interface for handling invoke-rc.d's startup policy.
1554
1555 grml-policy-rc.d can be configure via /etc/policy-rc.d.conf.  By
1556 default you won't notice any differences to Debian's default
1557 behaviour, except that invoke-rc.d won't be executed if a chroot has
1558 been detected (detection: /proc is missing).
1559
1560 If you want to disable automatical startup of newly installed packages
1561 (done via the invoke-rc.d mechanism) just set EXITSTATUS to '101' in
1562 /etc/policy-rc.d.conf.
1563
1564 To restore the default behaviour set EXITSTATUS back to '0' in
1565 /etc/policy-rc.d.conf.
1566 -- 
1567 Install VMware-Tools for grml:
1568
1569 First of all make sure a CD-ROM device in VMware is available.
1570
1571 Mount the CD-ROM device to /mnt/cdrom, then unpack and install
1572 the tools running:
1573
1574 cd /tmp
1575 unp /mnt/cdrom/vmware-linux-tools.tar.gz
1576 cd vmware-tools-distrib
1577 ./vmware-install.pl
1578
1579 /etc/init.d/networking stop
1580 rmmod pcnet32
1581 rmmod vmxnet
1582 depmod -a
1583 modprobe vmxnet
1584 /etc/init.d/networking start
1585
1586 In an X terminal, launch the VMware Tools running:
1587
1588 vmware-toolbox
1589 -- 
1590 Some important Postfix stuff
1591
1592 List mail queue:
1593
1594 # mailq
1595 or
1596 # postqueue -p
1597
1598 Send all messages in the queue:
1599
1600 # postqueue -f
1601
1602 Send all messages in the queue for a specific site:
1603
1604 # postqueue -s site
1605
1606 Delete a specific message
1607 # postsuper -d 12345678942
1608
1609 Deletes all messages held in the queue for later delivery
1610 # postsuper -d ALL deferred
1611
1612 Mail queues in postfix:
1613
1614     incoming -> mail who just entered the system
1615     active   -> mail to be delivered
1616     deferred -> mail to be delivered later because there were problems
1617     hold     -> mail that should not be delivered until released from hold
1618
1619 For configuration of postfix take a look at
1620 /etc/postfix/master.cf  - man 5 master
1621 /etc/postfix/main.cf    - man 5 postconf
1622 and http://www.postfix.org/documentation.html.
1623 -- 
1624 File permissions
1625
1626 mode 4000 - set user ID (suid):
1627
1628 - for executable files: run as the user who owns the file, instead of the
1629   user who runs the file
1630 - for directories: not used
1631
1632 mode 2000 - set group ID (guid):
1633
1634 - for executable files: run as the group who owns the file, instead of the
1635   group of the user who runs the file
1636 - for directories: when a file is created inside the directory, it belongs
1637   to the group of the directory instead of the default group of the user who
1638   created the file
1639
1640 mode 1000 - sticky bit:
1641
1642 - for files: not used
1643 - for directories: only the owner of a file can delete or rename the file
1644 -- 
1645 Create MySQL database
1646
1647 # apt-get install mysql-client mysql-server
1648
1649 Run 'mysql' as root - create a database with:
1650
1651 create database grml
1652
1653 Give a user access to the database (without password):
1654
1655 grant all on grml.* to mika;
1656
1657 Give a user access to the database (with password):
1658
1659 grant all on grml.* to enrico identified by "PASSWORD";
1660 -- 
1661 Setup an HTTPS website:
1662
1663 Create a certificate:
1664
1665 # mkdir /etc/apache2/ssl
1666 # make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
1667
1668 Create a virtual host on port 443:
1669
1670 <VirtualHost www.foo.invalid:443>
1671 [...]
1672 </VirtualHost>
1673
1674 Enable SSL in the VirtualHost:
1675
1676 SSLEngine On
1677 SSLCertificateFile /etc/apache2/ssl/apache.pem
1678
1679 Enable listening on the HTTPS port (/etc/apache2/ports.conf):
1680
1681 Listen 443
1682
1683 and make sure the SSL module is used:
1684
1685 # a2enmod ssl
1686 -- 
1687 Useful Apache / Apache2 stuff
1688
1689 Check configuration file via running:
1690
1691 # apache2ctl configtest
1692
1693 Enable a site:
1694
1695 # a2ensite sitename
1696
1697 Enable a module
1698
1699 # a2enmod modulename
1700 -- 
1701 Create tar archive and store it on remote machine:
1702
1703 % tar zcf - /sourcedir | ssh user@targethost "cat >file.tgz"
1704 -- 
1705 Pick out and displays images from network traffic:
1706
1707 # driftnet
1708 -- 
1709 Install Flash plugin:
1710
1711 # dpkg-reconfigure flashplugin-nonfree
1712 -- 
1713 To test a proxy, low level way:
1714
1715 % telnet proxy 8080
1716 [...]
1717 GET http://www.google.com HTTP/1.0 [press enter twice]
1718 -- 
1719 Adjust system for use of qemu with kqemu:
1720
1721 Make sure you have all you need:
1722 # aptitude update ; aptitude install qemu kqemu-modules-$(uname -r)
1723
1724 Then set up kqemu:
1725
1726 modprobe kqemu
1727 mknod /dev/kqemu c 250 0
1728 chmod 666 /dev/kqemu
1729 chmod 666 /dev/net/tun
1730
1731 Check kqemu support via starting qemu, press
1732 Ctrl-Alt-2 and entering 'info kqemu'.
1733 -- 
1734 (High-Load) Debugging related tools:
1735
1736 mpstat  # report processors related statistics
1737 iostat  # report CPU statistics and input/output statistics for devices and partitions
1738 vmstat  # report virtual memory statistics
1739 slabtop # display kernel slab cache information in real time
1740 atsar   # system activity report
1741 dstat   # versatile tool for generating system resource statistics
1742
1743 Usage examples:
1744
1745 # mpstat -P ALL
1746 # iostat -x 1
1747 # iostat -xtc 5 3
1748 # vmstat 1
1749 # atsar -t 60 10
1750 # dstat -af
1751 -- 
1752 Using WPA for network setup manually:
1753
1754 # wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf
1755
1756 Adjust the options and configuration file to your needs.
1757 Also take a look at 'grml-network'.
1758 -- 
1759 Start X and lock console via exiting:
1760
1761 % startx 2>~/.xsession-errors &| exit
1762 -- 
1763 Which process is writing to disk and/or causes the disk to spin up?
1764
1765 First of all use lsof to check what's going on. Does not help? ->
1766
1767 # echo 1 > /proc/sys/vm/block_dump
1768
1769 The command sets a sysctl to cause the kernel to log all disk
1770 writes. Please notice that there is a lot of data.  So please
1771 disable syslogd/syslog-ng before you do this, or you must make
1772 sure that kernel output is not logged.
1773
1774 When you're done, disable block dump using:
1775 # echo 0 > /proc/sys/vm/block_dump
1776
1777 Alternative:
1778 laptop-mode-tools provides a tool named lm-profiler (laptop mode profiler)
1779 which handles block_dump on its own.
1780
1781 See: $KERNEL-SOURCE/Documentation/laptop-mode.txt
1782
1783 Also take a look at event-viewer(8) which is part of grml-debugtools.
1784 -- 
1785 Install initrd via initramfs-tools for currently running kernel:
1786
1787 # update-initramfs -c -t -k $(uname -r)
1788 -- 
1789 Install initrd via yaird for currently running kernel:
1790
1791 # yaird -o /boot/initrd.img-$(uname -r)
1792
1793 Install initrd via yaird for specific kernel:
1794
1795 # mount /proc
1796 # mount /sys
1797 # yaird -o /boot/initrd.img-2.6.15-1-686 2.6.15-1-686
1798 -- 
1799 Reinstall package with its original configuration files:
1800
1801 # apt-get install --reinstall -o DPkg::Options::=--force-confmiss -o \
1802   DPkg::Options::=--force-confnew package
1803 -- 
1804 grml 0.8 funkenzutzler - rt2x00 drivers:
1805
1806 To avoid conflicts with the other rt2x00-drivers the package rt2x00 (which
1807 includes beta-version drivers) is not installed by default. If you want to
1808 use the kernel modules rt2400pci, rt2500pci, rt2500usb, rt61pci and/or
1809 rt73usb please install the package manually running:
1810
1811 # dpkg -i /usr/src/rt2x00-modules-*.deb
1812 -- 
1813 Use Java with jikes and jamvm on grml:
1814
1815 Simple demo:
1816
1817 % cp /usr/share/doc/grml-templates/template.java .
1818 % jikes template.java
1819 % jamvm HelloWorld
1820
1821 Notice that grml exports $JIKESPATH (/usr/share/classpath/glibj.zip),
1822 so you do not have to manually run
1823 jikes --bootclasspath /usr/share/classpath/glibj.zip
1824 -- 
1825 Online resizing of (Software-)RAID5:
1826
1827 # Initiate a RAID5 setup for testing purposes:
1828 mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/hda1 /dev/hdb1 /dev/hdd1
1829
1830 # Create filesystem, mount md0, create a testfile and save md5sum for
1831 # later check:
1832 mkfs.ext3 /dev/md0
1833 mount /dev/md0 /mnt/test
1834 dd if=/dev/urandom of=/mnt/test/dd bs=512 count=10000
1835 md5sum /mnt/test/dd > md5sum
1836
1837 # Make sure the RAID is synched via checking:
1838 cat /proc/mdstat
1839
1840 # Now remove one partition:
1841 mdadm /dev/md0 --fail /dev/hdd1 --remove /dev/hdd1
1842
1843 # Delete partition, create a new + bigger one and set partition type to fd
1844 # (Linux raid autodetect):
1845 cfdisk /dev/hdd
1846
1847 # And re-add the partition:
1848 mdadm -a /dev/md0 /dev/hdd1
1849
1850 # Make sure the RAID is synched via checking:
1851 cat /proc/mdstat
1852
1853 # Repeat the steps for all other disks/partitions as well:
1854 mdadm /dev/md0 --fail /dev/hdb1 --remove /dev/hdb1
1855 cfdisk /dev/hdb
1856 mdadm -a /dev/md0 /dev/hdb1
1857 cat /proc/mdstat
1858 mdadm /dev/md0 --fail /dev/hda1 --remove /dev/hda1
1859 cfdisk /dev/hda
1860 mdadm -a /dev/md0 /dev/hda1
1861 cat /proc/mdstat
1862
1863 # Now resize the RAID5 system online [see 'man mdadm' for details]:
1864 mdadm --detail /dev/md0 | grep -e 'Array Size' -e 'Device Size'
1865 mdadm --grow /dev/md0 -z max
1866 mdadm --detail /dev/md0 | grep -e "Array Size" -e 'Device Size'
1867
1868 # Last step - resize the filesystem (online again):
1869 resize2fs /dev/md0
1870 -- 
1871 ext3 online resizing:
1872
1873 Starting with Linux kernel 2.6.10 you can resize ext3 online.  With
1874 e2fsprogs >=1.39-1 new filesystems are created with directory indexing and
1875 on-line resizing enabled by default (see /etc/mke2fs.conf).
1876
1877 Demo:
1878
1879 cfdisk /dev/hda                           # create a partition with type 8e (lvm)
1880 pvcreate /dev/hda2                        # create a physical volume
1881 vgcreate resize_me /dev/hda2              # create volume group
1882 lvcreate -n resize_me -L100 resize_me     # create a logical volume
1883 mkfs.ext3 /dev/resize_me/resize_me        # now create a new filesystem
1884 mount /dev/resize_me/resize_me /mnt/test  # mount the new fs for demonstrating online resizing
1885 df -h                                     # check the size of the partition
1886 lvextend -L+100M /dev/resize_me/resize_me # let's extend the logical volume
1887 resize2fs /dev/resize_me/resize_me        # and finally resize the filesystem
1888 df -h                                     # recheck the size of the partition
1889
1890 This also works for Software-RAID. Demo:
1891
1892 mdadm --create --verbose /dev/md0 --level=raid1 --raid-devices=2 /dev/hda2 /dev/hdb1
1893 mkfs.ext3 /dev/md0
1894 mount /dev/md0 /mnt/test
1895 mdadm /dev/md0 --fail /dev/hda2 --remove /dev/hda2
1896 cfdisk /dev/hda                                  # adjust partition size for hda2
1897 mdadm /dev/md0 --add /dev/hda2
1898 mdadm /dev/md0 --fail /dev/hdb1 --remove /dev/hdb1
1899 cfdisk /dev/hdb                                  # adjust partition size for hdb1
1900 mdadm /dev/md0 --add /dev/hdb1
1901 mdadm --grow /dev/md0 --size=max
1902 resize2fs /dev/md0
1903
1904 Notice: online resizing works as soon as the kernel can re-read the
1905 partition table. So it works for example with LVM and SW-RAID but not with
1906 a plain device (/dev/[sh]d*). The kernel does not re-read the partition
1907 table if the device is already mounted.
1908 -- 
1909 Use vim as an outline editor:
1910
1911 % $PAGER /usr/share/doc/vim-vimoutliner/README.Debian
1912 % vim ~/foo.otl
1913 :he vo
1914 -- 
1915 Monitor directories/files for changes using iwatch
1916
1917 Monitor /tmp for changes:
1918 % iwatch /tmp/
1919
1920 Monitor files/directories specified in /etc/iwatch.xml
1921 and send mail on changes:
1922 % iwatch
1923 -- 
1924 Some often used mdadm commands:
1925
1926 Set up RAID1:
1927 # mdadm --create --verbose /dev/md0 --level=raid1 --raid-devices=2 /dev/hda1 /dev/hdb1
1928
1929 Display details of specific RAID:
1930 # mdadm --detail /dev/md0
1931 # cat /proc/mdstat
1932
1933 Simulating a drive failure by software:
1934 # mdadm --manage --set-faulty /dev/md0 /dev/hda1
1935
1936 Remove disk from RAID:
1937 # mdadm /dev/md0 -r /dev/hda1
1938
1939 Set disk as faulty and remove from RAID:
1940 # mdadm /dev/md0 --fail /dev/hda1 --remove /dev/hda1
1941
1942 Stop a RAID-device:
1943 # mdadm -S /dev/md0
1944
1945 Restart a RAID-device:
1946 # mdadm -R /dev/md0
1947
1948 Add another disk to existing RAID setup (hotadd):
1949 # mdadm /dev/md0 -a /dev/hde1
1950 # mdadm --grow /dev/md0 --raid-devices=4
1951
1952 Assemble and start all arrays:
1953 # mdadm --assemble --scan
1954
1955 Assemble a specific array:
1956 # mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1
1957
1958 Resync:
1959 # mdadm --assemble --run --force --update=resync /dev/md0 /dev/sda1 /dev/sda2
1960
1961 Stop and rebuild:
1962 # mdadm --stop --scan
1963
1964 Scan for and setup arrays automatically:
1965 # mdadm --assemble --scan --auto=yes --verbose
1966
1967 Notice: If the above does not work make sure /etc/mdadm/mdadm.conf contains:
1968 DEVICE partitions
1969 CREATE owner=root group=disk mode=0660 auto=yes
1970 HOMEHOST <system>
1971 MAILADDR root
1972
1973 Running
1974 # /usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf
1975 might help as well.
1976
1977 Monitoring the sw raid
1978 # nohup mdadm --monitor --mail=root@localhost --delay=300 /dev/md0
1979
1980 Producing /etc/mdadm/mdadm.conf:
1981 # mdadm --detail --scan > /etc/mdadm/mdadm.conf
1982
1983 See also: man mdadm | less -p "^EXAMPLES"
1984           http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html
1985 -- 
1986 A quick summary of the most commonly used RAID levels:
1987
1988 RAID 0: Striped Set
1989  => 2 disks each 160 GB: 320 GB data
1990 RAID 1: Mirrored Set
1991  => 2 disks each 160 GB: 160 GB data
1992 RAID 5: Striped Set with Parity
1993  => 3 disks each 160 GB: 320 GB data; 160 GB redundancy
1994
1995 Common nested RAID levels:
1996 RAID 01: A mirror of stripes
1997 RAID 10: A stripe of mirrors
1998 RAID 30: A stripe across dedicated parity RAID systems
1999 RAID 100: A stripe of a stripe of mirrors
2000
2001   -- http://en.wikipedia.org/wiki/RAID
2002 -- 
2003 Logical Volume Management (LVM) with Linux
2004
2005 LVM setup layout:
2006 ~~~~~~~~~~~~~~~~~
2007
2008 |    hda1   hdc1      (PV:s on partitions or whole disks)
2009 |       \   /
2010 |        \ /
2011 |       diskvg        (VG)
2012 |       /  |  \
2013 |      /   |   \
2014 |  usrlv rootlv varlv (LV:s)
2015 |    |      |     |
2016 | ext3    ext3  xfs   (filesystems)
2017
2018 Often used commands:
2019 ~~~~~~~~~~~~~~~~~~~~
2020
2021 Create a physical volume:
2022 # pvcreate /dev/hda2
2023
2024 Create a volume group:
2025 # vgcreate testvg /dev/hda2
2026
2027 Create a logical volume:
2028 # lvcreate -n test_lv -L100 testvg
2029
2030 Resize a logical volume:
2031 # lvextend -L+100M /dev/resize_me/resize_me
2032 # resize2fs /dev/resize_me/resize_me               # ext2/3
2033 # xfs_growfs  /dev/resize_me/resize_me             # xfs
2034 # resize_reiserfs -f /dev/resize_me/resize_me      # reiserfs online
2035 # mount -o remount,resize /dev/resize_me/resize_me # jfs
2036
2037 Create a snapshot of a logical volume:
2038 # lvcreate -L 500M --snapshot -n mysnap /dev/testvg/test_lv
2039
2040 Deactivate a volume group:
2041 # vgchange -a n my_volume_group
2042
2043 Actually remove a volume group:
2044 # vgremove my_volume_group
2045
2046 Display information about physical volume:
2047 # pvdisplay /dev/hda1
2048
2049 Remove physical volume:
2050 # vgreduce my_volume_group /dev/hda1
2051
2052 Remove logical volume:
2053 # umount /dev/myvg/homevol
2054 # lvremove /dev/myvg/homevol
2055
2056 See also: man lvm
2057           http://www.tldp.org/HOWTO/LVM-HOWTO/
2058 -- 
2059 How to use APT locally
2060
2061 Sometimes you have lots of packages .deb that you would like to use APT to
2062 install so that the dependencies would be automatically solved. Solution:
2063
2064 mkdir debs
2065 dpkg-scanpackages debs /dev/null | gzip > debs/Packages.gz
2066 echo "  deb file:/root debs/" >> /etc/apt/sources.list
2067 dpkg-scansources debs | gzip > debs/Sources.gz
2068 echo "  deb-src file:/root debs/" >> /etc/apt/sources.list
2069
2070 See also: http://www.debian.org/doc/manuals/apt-howto/ch-basico.en.html
2071 -- 
2072 Check filesystem's LABEL:
2073
2074 generic way:
2075 # vol_id -l /dev/sda1
2076
2077 ext2/3 without vol_id:
2078 # dumpe2fs /dev/sda1 | grep "Filesystem volume name"
2079
2080 xfs without vol_id:
2081 # xfs_admin -l /dev/sda1
2082
2083 reiserfs without vol_id:
2084 # debugreiserfs /dev/sda1 | grep -i label
2085
2086 jfs without vol_id:
2087 # jfs_tune -l /dev/sda1 | grep -i label
2088
2089 reiser4 without vol_id:
2090 # debugfs.reiser4 /dev/sda1 | grep -i label
2091 -- 
2092 Check filesystem's UUID:
2093
2094 generic way:
2095 # vol_id -u /dev/sda1
2096
2097 ext2/3 without vol_id:
2098 # dumpe2fs /dev/sda1 | grep -i UUID
2099
2100 xfs without vol_id:
2101 # xfs_admin -u /dev/sda1
2102
2103 reiserfs without vol_id:
2104 # debugreiserfs /dev/sda1 | grep -i UUID
2105
2106 reiser4 without vol_id:
2107 # debugfs.reiser4 /dev/sda1 | grep -i UUID
2108 -- 
2109 Change a filesystem's LABEL:
2110
2111 swap:
2112 # mkswap -L $LABEL /dev/sda1
2113
2114 ext2/ext3:
2115 # e2label /dev/sda1 $LABEL
2116 # tune2fs -L $LABEL /dev/sda1
2117
2118 reiserfs:
2119 # reiserfstune -l $LABEL /dev/sda1
2120
2121 jfs:
2122 # jfs_tune -L $LABEL /dev/sda1
2123
2124 xfs:
2125 # xfs_admin -L $LABEL /dev/sda1
2126
2127 fat/vfat:
2128 # echo 'drive i: file="/dev/sda1"' >> ~/.mtoolsrc
2129 # mlabel -s i:$LABEL
2130
2131 ntfs:
2132 # ntfslabel $LABEL /dev/sda1
2133 -- 
2134 Disable pdiffs feature of APT:
2135
2136 Permanent:
2137 # echo 'Acquire::PDiffs "false";' >> /etc/apt/apt.conf
2138
2139 Temporary:
2140 # apt-get update -o Acquire::Pdiffs=false
2141 -- 
2142 Backup big devices or files and create compressed splitted
2143 image chunks of it using zsplit
2144
2145 Create backup of /dev/sda named archiveofsda_#.spl.zp in directory
2146 /mnt/sda1/backup, split the files up into chunks of 1GB each and set
2147 read/write buffer to 256kB:
2148 # zsplit -b 256 -N archiveofsda -o /mnt/sda1/backup/ -s 1G /dev/sda
2149
2150 Restore the backup using unzsplit:
2151 # unzsplit -D /dev/sda -d archiveofsda
2152
2153 More usage examples: man zsplit + man unzsplit
2154 -- 
2155 Measure network performance using iperf:
2156
2157 Server side:
2158 % iperf -s -V
2159
2160 Client side:
2161 % iperf -c <server_address> -V
2162
2163 or
2164
2165 Server with 128k TCP window size:
2166 % iperf -s -w128k
2167
2168 Client with running for 60 seconds and bidirectional test:
2169 % iperf -c <server_address> -r -w128k -t60
2170 -- 
2171 Framebuffer resolutions:
2172
2173                               Resolution in pixels
2174 Color depth      |   640x480      800x600      1024x768      1280x1024
2175 256        (8bit)|     769          771           773           775
2176 32000     (15bit)|     784          787           790           793
2177 65000     (16bit)|     785          788           791           794
2178 16.7 Mill.(24bit)|     786          789           792           795
2179
2180 vga=0x... modes:
2181
2182   Mode 0x0300: 640x400 (+640), 8 bits
2183   Mode 0x0301: 640x480 (+640), 8 bits
2184   Mode 0x0303: 800x600 (+800), 8 bits
2185   Mode 0x0303: 800x600 (+832), 8 bits
2186   Mode 0x0305: 1024x768 (+1024), 8 bits
2187   Mode 0x0307: 1280x1024 (+1280), 8 bits
2188   Mode 0x030e: 320x200 (+640), 16 bits
2189   Mode 0x030f: 320x200 (+1280), 24 bits
2190   Mode 0x0311: 640x480 (+1280), 16 bits
2191   Mode 0x0312: 640x480 (+2560), 24 bits
2192   Mode 0x0314: 800x600 (+1600), 16 bits
2193   Mode 0x0315: 800x600 (+3200), 24 bits
2194   Mode 0x0317: 1024x768 (+2048), 16 bits
2195   Mode 0x0318: 1024x768 (+4096), 24 bits
2196   Mode 0x031a: 1280x1024 (+2560), 16 bits
2197   Mode 0x031b: 1280x1024 (+5120), 24 bits
2198   Mode 0x0330: 320x200 (+320), 8 bits
2199   Mode 0x0331: 320x400 (+320), 8 bits
2200   Mode 0x0332: 320x400 (+640), 16 bits
2201   Mode 0x0333: 320x400 (+1280), 24 bits
2202   Mode 0x0334: 320x240 (+320), 8 bits
2203   Mode 0x0335: 320x240 (+640), 16 bits
2204   Mode 0x0336: 320x240 (+1280), 24 bits
2205   Mode 0x033c: 1400x1050 (+1408), 8 bits
2206   Mode 0x033d: 640x400 (+1280), 16 bits
2207   Mode 0x033e: 640x400 (+2560), 24 bits
2208   Mode 0x0345: 1600x1200 (+1600), 8 bits
2209   Mode 0x0346: 1600x1200 (+3200), 16 bits
2210   Mode 0x034d: 1400x1050 (+2816), 16 bits
2211   Mode 0x035c: 1400x1050 (+5632), 24 bits
2212 -- 
2213 Portscan using netcat:
2214
2215 # netcat -v -w2 <host|ip-addr.> 1-1024
2216 -- 
2217 Run apt-get but disable apt-listchanges:
2218
2219 APT_LISTCHANGES_FRONTEND=none apt-get ...
2220
2221 Upgrade system but disable apt-listbugs:
2222
2223 APT_LISTBUGS_FRONTEND=none apt-get ...
2224 -- 
2225 Set up a Transparent Debian Proxy
2226
2227 Install of apt-cacher, the default config will do:
2228 # apt-get install apt-cacher
2229
2230 Check out the ip address of debian mirror(s).
2231 Then add this to your firewall script:
2232
2233 DEBIAN_MIRRORS="141.76.2.4 213.129.232.18"
2234 for ip in ${DEBIAN_MIRRORS} ; do
2235   ${IPTABLES} -t nat -A PREROUTING -s $subnet -d $ip -p tcp --dport 80 -j REDIRECT --to-port 3142
2236 done
2237
2238 where ${IPTABLES} is the location of your iptables binary
2239 and $subnet is your internal subnet.
2240
2241 Now everybody in your subnet who does access either
2242 ftp.de.debian.org or ftp.at.debian.org will actually
2243 access your apt-cacher instead.
2244
2245 To use apt-cacher on the router itself, add the following
2246 line to your /etc/apt/apt.conf:
2247
2248 Acquire::http::Proxy "http://localhost:3142/";
2249 -- 
2250 Version control using Mercurial
2251
2252 Setting up a Mercurial project:
2253
2254 % cd project
2255 % hg init           # creates .hg
2256 % hg add            # add all files
2257 % hg commit         # commit all changes, edit changelog entry
2258
2259 Branching and merging:
2260
2261 % hg clone linux linux-work  # create a new branch
2262 % cd linux-work
2263 <make changes>
2264 % hg commit
2265 % cd ../linux
2266 % hg pull ../linux-work     # pull changesets from linux-work
2267 % hg merge                  # merge the new tip from linux-work into
2268                             # (old versions used "hg update -m" instead)
2269                             # our working directory
2270 % hg commit                 # commit the result of the merge
2271
2272 Importing patches:
2273
2274 % cat ../p/patchlist | xargs hg import -p1 -b ../p
2275
2276 Exporting a patch:
2277
2278 (make changes)
2279 % hg commit
2280 % hg tip
2281 1234:af3b5cd57dd5
2282 % hg export 1234 > foo.patch    # export changeset 1234
2283
2284 Export your current repo via HTTP with browsable interface:
2285
2286 % hg serve -n "My repo" -p 80
2287
2288 Pushing changes to a remote repo with SSH:
2289
2290 % hg push ssh://user@example.com/~/hg/
2291
2292 Merge changes from a remote machine:
2293
2294 host1% hg pull http://foo/
2295 host2% hg merge # merge changes into your working directory
2296
2297 Set up a CGI server on your webserver:
2298 % cp hgwebdir.cgi ~/public_html/hg/index.cgi
2299 % $EDITOR ~/public_html/hg/index.cgi # adjust the defaults
2300
2301 Mercurial repositories of grml can be found at http://hg.grml.org/
2302 -- 
2303 Download binary codecs for mplayer:
2304
2305 # /usr/share/mplayer/scripts/win32codecs.sh
2306
2307 or
2308
2309 # /usr/share/mplayer/scripts/binary_codecs.sh install
2310
2311 (depending on the mplayer version you have).
2312
2313 To play encrypted DVDs and if you are living in a country where using
2314 libdvdcss code is not illegal can install Debian package libdvdread3
2315 and use the script /usr/share/doc/libdvdread3/install-css.sh.
2316 -- 
2317 Read manpages of uninstalled packages with debman:
2318
2319 % debman -p git-core git
2320 -- 
2321 Test network performance using netperf:
2322
2323 Server:
2324 # netserver
2325
2326 Client:
2327 # netperf -t TCP_STREAM -H 192.168.0.41
2328 -- 
2329 Setup Xen within 20 minutes on Debian/grml
2330
2331 Install relevant software und update grub's menu.lst (Xen does not work with
2332 usual lilo so install grub instead if not done already):
2333
2334 apt-get install linux-image-2.6.18-1-xen-686 xen-hypervisor-3.0.3-1-i386 \
2335                  xen-utils-3.0.3-1 xen-tools bridge-utils
2336 update-grub
2337
2338 Example for installation of Debian etch as DomU:
2339
2340 mkdir /mnt/md1/xen
2341 xen-create-image --debootstrap --dir=/mnt/md1/xen --size=2Gb --memory=512Mb --fs=ext3 \
2342    --cache=yes --dist=etch --hostname=xengrml1 --ip 192.168.1.2 --netmask 255.255.255.0 \
2343   --gateway 192.168.1.1 --initrd=/boot/initrd.img-2.6.18-1-xen-686 \
2344   --kernel=/boot/vmlinuz-2.6.18-1-xen-686 --mirror=http://ftp.at.debian.org/debian/
2345
2346 Start services:
2347
2348 /etc/init.d/xend start
2349 /etc/init.d/xendomains start
2350
2351 Setup a bridge for network, either manually:
2352
2353 brctl addbr xenintbr
2354 brctl stp xenintbr off
2355 brctl sethello xenintbr 0
2356 brctl setfd xenintbr 0
2357 ifconfig xenintbr 192.168.1.1 netmask 255.255.255.0 up
2358
2359 or via /etc/network/interfaces (run ifup xenintbr to bring up the device then
2360 without rebooting):
2361
2362 auto xenintbr
2363 iface xenintbr inet static
2364   pre-up brctl addbr xenintbr
2365   post-down brctl delbr xenintbr
2366   address 192.168.1.1
2367   netmask 255.255.255.0
2368   bridge_fd 0
2369   bridge_hello 0
2370   bridge_stp off
2371
2372 Setup forwarding (adjust $PUBLIC_IP; for permanet setup use /etc/sysctl.conf and
2373 add the iptables commands to a startup script like /etc/init.d/rc.local):
2374
2375 echo 1 > /proc/sys/net/ipv4/ip_forward
2376 iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to $PUBLIC_IP
2377 iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to $PUBLIC_IP
2378
2379 Adjust network configuration of Xend:
2380
2381 cat >> /etc/xen/xend-config.sxp << EOF
2382 (network-script    network-route)
2383 (vif-bridge        xenintbr)
2384 (vif-script        vif-bridge)
2385 EOF
2386
2387 List domains, start up a DomU, shutdown later again:
2388
2389 xm create -c /etc/xen/xengrml1.cfg
2390 xm list
2391 xm shutdown 1
2392
2393 This HowTo is also available online at http://grml.org/xen/
2394 -- 
2395 Play tetris with zsh:
2396
2397 autoload -U tetris
2398 zle -N tetris
2399 bindkey "^Xt" tetris
2400
2401 Now press 'ctrl-x t'.
2402 -- 
2403 Set up a router with grml
2404
2405 Run grml-router script:
2406 # grml-router
2407
2408 Install dnsmasq if not already present:
2409 # apt-get update ; apt-get install dnsmasq
2410
2411 Adjust /etc/dnsmasq.conf according to your needs:
2412 # cat >> /etc/dnsmasq.conf << EOF
2413 domain-needed
2414 bogus-priv
2415 dhcp-range=19.168.0.124,192.168.0.254,1m # dhcp range
2416 dhcp-option=3,192.168.0.1   # dns server
2417 dhcp-option=1,255.255.255.0 # netmask
2418 EOF
2419
2420 Start dnsmasq finally:
2421 # Restart dnsmasq
2422 -- 
2423 Display stats about memory allocations performed by a program:
2424
2425 Usage example for 'ls':
2426
2427 % LD_PRELOAD=/lib/libmemusage.so ls > /dev/null
2428 -- 
2429 Use KVM (Kernel-based Virtual Machine for Linux):
2430
2431 Make sure to install the relevant tools:
2432 # apt-get update ; apt-get install kvm
2433 # modprobe kvm
2434
2435 Test it with a minimal system like ttylinux:
2436 # wget http://www.minimalinux.org/ttylinux/packages/bootcd-i386-5.3.iso.gz
2437 # gzip -d bootcd-i386-5.3.iso.gz
2438 # kvm -cdrom bootcd-i386-5.3.iso
2439 -- 
2440 EEPROM data decoding for SDRAM DIMM modules:
2441
2442 # modprobe eeprom
2443 # /usr/share/doc/lm-sensors/examples/eeprom/decode-dimms.pl
2444 -- 
2445 Set up and use DVB:
2446
2447 Make sure your device is supported by Linux and running.
2448 See http://www.linuxtv.org/ for more details.
2449
2450 If the DVB device works on your system (see 'hwinfo --usb'
2451 when using a DVB usb device for example), then make sure you
2452 have the scan util from dvb-utils available:
2453
2454 # aptitude install dvb-utils
2455
2456 Then create a channels.conf configuration file:
2457
2458 % scan /usr/share/doc/dvb-utils/examples/scan/... > ~/.mplayer/channels.conf
2459
2460 You can find some example configuration files on
2461 your grml system in ~/.channels. Usage example:
2462
2463 % ln -s ~/.mplayer/channels.conf-AT-graz ~/.mplayer/channels.conf
2464
2465 Tip: w_scan (see http://free.pages.at/wirbel4vdr/w_scan/index2.html)
2466 might be useful if you do not know the initial configuration
2467 details.
2468 -- 
2469 Get the lastest mercurial snapshot:
2470
2471 Make sure you have the python-dev package available:
2472 # apt-get update ; apt-get install python-dev
2473
2474 Get and build the source:
2475 % hg clone http://selenic.com/repo/hg mercurial
2476 % cd mercurial
2477 % make local
2478 % export PYTHONPATH=$(pwd)
2479 % export PATH=$PATH:$(pwd)
2480
2481 now you should have the newest version of mercurial whenever you execute hg.
2482
2483 To update to the lastest development snapshot, additionally use
2484 the following commands:
2485 % hg pull -u http://hg.intevation.org/mercurial/crew
2486 % make local
2487 -- 
2488 Configure timezone
2489 ==================
2490
2491 Available bootoptions relevant in live-cd mode:
2492 -----------------------------------------------
2493
2494 * utc: set UTC, if your system clock is set to UTC (GMT)
2495 * gmt: set UTC, if your system clock is set to UTC (GMT) [like bootoption utc]
2496 * tz=$option: set timezone to corresponding $option, usage example:
2497   tz=Europe/Vienna
2498
2499 Configuration options relevant on harddisk installation:
2500 --------------------------------------------------------
2501
2502 * Use the tzconfig utility to set the local timezone:
2503
2504   # tzconfig
2505
2506   which adjusts /etc/timezone and /etc/localtime according
2507   to the provided information. Running:
2508
2509   # dpkg-reconfigure tzdata
2510
2511   might be useful as well.
2512
2513 * /etc/default/rcS: set variable UTC according to your needs,
2514   whether your system clock is set to UTC (UTC='yes') or
2515   not (UTC='no')
2516
2517 * /etc/localtime: adjust zoneinfo according to your needs:
2518
2519   # ln -sf /usr/share/zoneinfo/$WHATEVER_YOU_WANT /etc/localtime
2520
2521   The zoneinfo directory contains the time zone files that were
2522   compiled by zic. The files contain information such as rules
2523   about DST. They allow the kernel to convert UTC UNIX time into
2524   appropriate local dates and times. Use the zdump utility to
2525   print current time and date (in the specified time zone).
2526
2527 * /etc/adjtime: This file is used e.g. by the adjtimex function,
2528   which can smoothly adjust system time while the system runs
2529
2530 * If you change the time (using 'date --set ...', ntpdate,...)
2531   it is worth setting also the hardware clock to the correct time:
2532
2533   # hwclock --systohc [--utc]
2534
2535   Remember to add the --utc -option if the hardware clock is set
2536   to UTC!
2537
2538 Still problems?
2539 ---------------
2540
2541 Check your current settings via:
2542
2543   cat /etc/timezone
2544   zdump /etc/localtime
2545   echo $TZ
2546   hwclock --show
2547   grep hwclock /etc/runlevel.conf
2548   grep '^UTC' /etc/default/rc
2549
2550 Further information:
2551 --------------------
2552
2553   hwclock(8) tzselect(1) tzconfig(8)
2554   http://www.debian.org/doc/manuals/system-administrator/ch-sysadmin-time.html
2555   http://wiki.debian.org/TimeZoneChanges
2556 -- 
2557 Recorder shellscript session using script:
2558
2559 % script -t 2>~/upgrade.time -a ~/upgrade.script
2560 % scriptreplay ~/upgrade.time ~/upgrade.script
2561 -- 
2562 Test UTF-8 capabilities of terminal:
2563
2564 wget http://melkor.dnp.fmph.uniba.sk/~garabik/debian-utf8/download/UTF-8-demo.txt.gz
2565 zcat UTF-8-demo.txt.gz
2566
2567 or:
2568
2569 wget http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt
2570 cat UTF-8-test.txt
2571 -- 
2572 UTF-8 at grml / some general information regarding Unicde/UTF-8:
2573
2574   http://wiki.grml.org/doku.php?id=utf8
2575 -- 
2576
2577 This allows one ssh connection attepmt per minute per source ip, with a initial
2578 burst of 10.  The available burst is like a counter which is initialised with
2579 10. Every connection attempt decrements the counter, and every minute where the
2580 connection limit of one per minute is not overstepped the counter is
2581 incremented by one.  If the burst counter is exhausted the real rate limit
2582 comes into play. This gives you 11 connectionattepmts in the first minute
2583 before blocked for 10minutes.  After 10 minutes block the game restarts.
2584
2585 Hint: you could set the burst value to 5 and the block time to only 5 minutes
2586 to achive the same average connection rate but with halve the block time.
2587
2588 iptables -A inet_in -p tcp --syn --dport 22 -m hashlimit --hashlimit-name ssh \
2589          --hashlimit 1/minute \ --hashlimit-burst 10 --hashlimit-mode srcip   \
2590          --hashlimit-htable-expire 600000 -j ACCEPT
2591 iptables -A inet_in -p tcp --dport 22 -m state --state NEW -j REJECT
2592 -- 
2593 Tunnel a specific connection via socat:
2594
2595 On the client:
2596 % socat TCP4-LISTEN:8003 TCP4:gateway:500
2597
2598 On the gateway:
2599 # socat TCP4-LISTEN:500,fork TCP4:target:$PORT
2600
2601 Using localhost:8003 on the client uses the tunnel now.
2602 -- 
2603 Set date:
2604
2605 # date --set=060916102007
2606
2607 where the bits are month(2)/day(2)/hour(2)/minute(2)/year(4)
2608
2609 Set date using a relative date:
2610
2611 # date -s '+3 mins'
2612
2613 or
2614
2615 # date -s '+tomorrow'
2616
2617 Display a specific relative date:
2618
2619 # date -d '+5 days -2 hours'
2620
2621 Don't forget to set hardware clock via:
2622
2623 # hwlock -w
2624 -- 
2625 Booting grml via network / PXE:
2626
2627 Start grml-terminalserver on a system with network access
2628 and where grml is running:
2629
2630 # grml-terminalserver
2631
2632 Then booting your client(s) via PXE should work without
2633 any further work.
2634 -- 
2635 Debugging SSL communications:
2636
2637 % openssl s_client -connect server.adress:993
2638
2639 or
2640
2641 # ssldump -a -A -H -i eth0
2642
2643 See http://prefetch.net/articles/debuggingssl.html for more details.
2644 -- 
2645 Remove bootmanager from MBR:
2646
2647 # lilo -M /dev/hda -s /dev/null
2648 -- 
2649 Rewrite grub to MBR:
2650
2651 # mount /mnt/sda1
2652 # grub-install --recheck --no-floppy --root-directory=/mnt/sda1 /dev/sda
2653 -- 
2654 Rewrite lilo to MBR:
2655
2656 # mount /mnt/hda1
2657 # lilo -r /mnt/hda1
2658 -- 
2659 Create screenshot of plain/real console - tty1:
2660
2661 # fbgrab -c 1 screeni.png
2662 -- 
2663 Create screenshot when running X:
2664
2665 % scrot
2666
2667 Tip: use the gkrellshoot plugin when using gkrellm
2668 -- 
2669 Redirect all connections to hostA:portA to hostB:portB, where hostA and hostB are
2670 different networks:
2671
2672 Run the following commands on hostA:
2673
2674 echo 1 > /proc/sys/net/ipv4/ip_forward
2675 iptables -t nat -A PREROUTING -p tcp --dport portA -j DNAT --to hostB:portB
2676 iptables -A FORWARD -i eth0 -o eth0 -d hostB -p tcp --dport portB -j ACCEPT
2677 iptables -A FORWARD -i eth0 -o eth0 -s hostB -p tcp --sport portB -j ACCEPT
2678 iptables -t nat -A POSTROUTING -p tcp -d hostB --dport portB -j SNAT --to-source hostA
2679 -- 
2680 Flash BIOS without DOS/Windows:
2681
2682 Dump flash info and set the flash chip to writable:
2683 # flashrom
2684
2685 Backup the original BIOS:
2686 # flashrom -r backup.bin
2687
2688 Notice: the following step will overwrite your current BIOS!
2689 So make sure you really know what you are doing.
2690
2691 Flash the BIOS image:
2692 # flashrom -wv newbios.bin
2693
2694 Also check out LinuxBIOS: http://linuxbios.org/
2695 -- 
2696 Enable shadow passwords:
2697
2698 # shadowconfig on
2699 -- 
2700 Set up an IPv6 tunneln on grml:
2701
2702 # ipv6-tunnel start
2703 -- 
2704 Set up console newsreader slrn for use with Usenet:
2705
2706 % grml-slrn
2707 -- 
2708 Calculate with IPv6 addresses:
2709
2710 % ipv6calc
2711
2712 For usage examples refer to manpage ipv6calc(8).
2713 -- 
2714 Common network debugging tools for use with IPv6:
2715
2716 % ping6
2717 % tracepath6
2718 % traceroute6
2719 % tracert6
2720 % nc6
2721 % tcpspray6
2722 -- 
2723 Set up NFS (Network File System):
2724
2725 Server-side
2726 ~~~~~~~~~~~
2727 Make sure the relevant services are running on the server side:
2728
2729 # /etc/init.d/portmap start
2730 # /etc/init.d/nfs-common start
2731 # /etc/init.d/nfs-kernel-server start
2732
2733 Export shares via /etc/exports:
2734
2735 /backups 192.168.1.100/24(rw,wdelay,no_root_squash,async,subtree_check)
2736
2737 ... or manually export a directory running:
2738
2739 # exportfs -o rw,wdelay,no_root_squash,async,subtree_check 192.168.1.100:/backups
2740
2741 and unexport a share running:
2742
2743 # exportfs -u 192.168.1.100:/backups
2744
2745 and every time when you modify /etc/exports file run
2746
2747 # exportfs -ra
2748
2749 Display what NFS components are running:
2750
2751 # rpcinfo -p
2752
2753 Display list of exported shares:
2754
2755 # exportfs -v
2756 or
2757 # showmount -e
2758
2759 Client-side
2760 ~~~~~~~~~~~
2761 Make sure the relevant services are running on the client side:
2762
2763 # /etc/init.d/portmap start
2764 # /etc/init.d/nfs-common start
2765
2766 Verify that the server allows you to access its RPC/NFS services:
2767
2768 # rpcinfo -p server_name
2769
2770 Check what directories the server exports:
2771
2772 # showmount -e server_name
2773
2774 On the client side you can use something like the following in /etc/fstab:
2775
2776 192.168.1.101:/backups /mnt/nfs nfs defaults,users,wsize=8192,rsize=8192 0 0
2777 -- 
2778 Mount a cloop file:
2779
2780 # aptitude install cloop-src
2781 # m-a a-i cloop-src
2782
2783 # modprobe cloop file=/path/to/cloop/file
2784 # mount -r -t iso9660 /dev/cloop /mnt/test
2785 -- 
2786 Create a PS/PDF of a plaintext file:
2787
2788 % a2ps --medium A4dj -E -o output.ps input_file
2789 % ps2pdf output.ps
2790 -- 
2791 Print two pages on one in a PDF file:
2792
2793 % pdfnup --nup 2x1 input.pdf
2794
2795 Concatenate, extract pages/parts, encrypt/decrypt,
2796 compress PDFs using 'pdftk'.
2797 -- 
2798 Read a PS/PDF file on console:
2799
2800 % pstotext file.pdf
2801
2802 or on plain framebuffer console in graphical mode:
2803
2804 % pdf2ps file.pdf ; ps2png file.ps file.png ; fbi file.png
2805
2806 or
2807
2808 % fbgs file.pdf
2809 -- 
2810 Bypass the password of a PDF file:
2811
2812 % gs -q -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf input.pdf -c quit
2813 --