Unter Linux kann man ISO-Dateien ganz einfach wie CD-ROM Laufwerke mounten:
mount ISO-Image-Dateiname /mntpoint -t iso9660 -o loop |
Unter Linux kann man ISO-Dateien ganz einfach wie CD-ROM Laufwerke mounten:
mount ISO-Image-Dateiname /mntpoint -t iso9660 -o loop |
Kaum hat man sein Linux frisch installiert, schon merkt man, dass man noch einige Kernel Optionen braucht, etwa zusätzliche Module.
Vielmals schreckt das neu kompilieren des kernels ab, doch es ist eigentlich ganz einfach… 😉
cp -pv /boot/vmlinuz-x.x.x.x /root |
Paranoide können auch noch die ganze boot-partition sichern:
tar -cvvz /boot/* -f /root/oldboot.tar.gz |
2. Dann wechseln wir ins Linux Source verzeichniss:
cd /usr/src/linux-x.x.x.x |
Hinweis: Die ‚x‘ stehen für die kernel version, die man anhand der Eingabe von: <PRE>uname -a</PRE> herausfinden kann
3. Evtl. noch erstellen des Linux-Symlinks (die kann wichtig sein, wenn im quelltext auf /usr/src/linux, anstatt auf das verzeichniss mit der vollen Version verwiesen wird) und zur Sicherheit vorher den alten löschen:
rm /usr/src/linux && ln -s /usr/src/linux-x.x.x.x /usr/src/linux |
(Die x.x.x.x stehen wiederum für die Version des Kernels)
3. Erstellen der Kernel Konfiguration:
Falls man schon einen funktionierenden kernel am laufen hat, ist es am besten dessen Konfiguration erstmal zu übernehmen; dies erreichen wir mit:
make oldconfig |
-Hier kann man bis zum schluss einfach immer ENTER Drücken, da wir nacher die genaue Konfiguration noch in einem übersichtlichen Menu anpassen werden.
Nun wird der Kernel individuell angepasst:
make menuconfig |
Hier kannst du dann alle Kernel Optionen auswählen; weiss man nicht, was eine bestimmte Option bedeuted, kann man sich mit ‚HELP‘ die Beschfreibung dazu anzeigen lassen. -Ist man danach immer noch nicht schlauer, empfiehlt sich die vorgeschlagene default Einstellung zu lassen
[stextbox id=“note“ caption=“Hinweis“]Falls beim Befehl make menuconfig Fehler auftauchen, muss man sehr wahrscheinlich noch die ncurses-library installieren. Dies geschieht mittels:
apt-get install ncurses-dev |
[/stextbox]
4. Kompilieren des Kernels und der Kernel-Module:
make && make install && make modules_install |
5. Bootloader konfigurieren
Bei der Frage, ob z.B. LiLo gestarten werden soll, muss man mit Ja antworten
6. Boot Sicherheit (optional, nur LiLo)
Im schlimmsten Falle sollte man sicherstellen, dass man das System mit dem alten, funktionierendem kernel noch booten kann…
Dazu editiert man die lilo.conf datei; die Zeile "default=" (also z.B. default=kernel-2.6.17.6)
In dieser sollte jetzt noch der ALTE Kernel stehen (noch NICHT ändern)
Weiter unten sieht man die eingetragenen Kernel, hier den neuen hinzufügen:
image=/boot/vmlinuz-2.6.17.6 label=kernel-2.6.17.6 read-only |
Nun Editor verlassen und lilo ausführen:
lilo |
Es erscheint die Meldung, dass der neue Kernel hinzugefügt wurde:
Added kernel-2.6.17.6 * Added kernel-2.6.19 |
Nun kann man "lilo -R LABEL" starten; dies sagt dem LiLo, dass er den kernel mit dem label "LABEL" genau einmal bootet, danach wieder der alte.
lilo -R kernel-2.6.19 |
Falls der Rechner nun mit dem neuen Kernel nicht mehr richtig bootet, reicht ein Neustart und es wird wieder der alte Kernel gebootet! 😉
[stextbox id=“warning“ caption=“Achtung“]Nach dem korrekten Neustart des neuen Kernel, muss dieser "fest" als Standardkernel eingetragen werden:
/etc/lilo.conf editieren und bei "default=" den neuen Kernel eintragen.
-Danach am besten nochmals rebooten um zu sehen, ob der neue Kernel standardmässig gestartet wird.[/stextbox]
7. Neustarten
Nun noch das System Neustarten und der neue Kernel läuft:
shutdown -r now |
Wieder mal ein Tipp aus der Linux-Admin Trickkiste. 😉
In diesem Fall ging es darum ein System komplett auf ein anderes zu klonen. Sind die beiden Systeme baugleich, ist das mit dd und ssh relativ einfach einfach möglich.
Dazu müssen zuerst beide Systeme mit einer Linux-BootCD (z.B. sysrescuecd) gebootet- und das Netzwerk konfiguriert werden.
Dann gibt man auf dem Quell-System einfach:
quelle~ # dd if=/dev/sda | ssh root@zielsystem "dd of=/dev/sda" |
ein und wartet bis der Vorgang abgeschlossen ist. Wer sich noch einen Status des Kopiervorganges anzeigen lassen möchte:
ziel~ # kill -USR1 $(pgrep '^dd$') |
-Die Ausgabe erfolgt dabei auf der Konsole vom Quellsystem.
Nach dem Kopiervorgang sollte man das System mounten und die Netzwerk-, sowie Hostname noch anpassen; sonst gibt es danach einen IP-Adresskonflikt im Netzwerk.
[stextbox id=“warning“ caption=“Achtung“]Dass das ganze klappt sollten beide Systeme (zumindest die Disks) relativ baugleich sein – Und natürlich gehen die Daten auf dem Zielsystem unwiderruflich verloren. ;-)[/stextbox]
Komprimieren: Es wäre nun noch Möglich die Daten durch gzip zu pipen um Bandbreite zu sparen.
Erweiterter Status: Mit pv kann man sich erweiterte Statusinformationen über den Kopiervorgang zusammenbasteln.
http://blog.t-error.ch/article/444/festplattenimage_mit_linux_erstellen/
http://linuxcommando.blogspot.com/2008/06/show-progress-during-dd-copy.html
Mittels des programms ’screen‘ kann ein anderer Benutzer, der sich einloggt die die Konsole mit einem anderen "teilen"; d.h. beide können Kommandos eingeben und sehen auch was der andere eingibt.
Dies ist z.B. Hilfreich, wenn man einem entfernten Benutzer zeigen möchte wie etwas auf der Konsole gemacht wird.
Dazu sind nur 2 Schritte notwendig:
Benuzer1 meldet sich an und gibt
screen |
ein.
Der Benutzer2 meldet sich auch an und startet mit
screen -x |
die "Lernkonsole".
Wenn man Windows und Linux auf einer Platte installiert hat, verwendet man meistens den Bootmanager von Linux (LiLo, GRUB,…) um die beiden Systeme zu starten.
Manchmal möchte man aber lieber den Windows-Bootloader verwenden, denn auch das geht:
Um den Windows bootmanager dazu bringen, Linux zu starten, muss man den Linux Bootsektor in eine Datei schreiben, diese auf die Windows Partition
kopieren und dann diese in der boot.ini eintragen.
Und so gehts:
# Linux starten und als root anmelden.
# Diskette in das Laufwerk einlegen und wie folgt mounten:
mount /dev/fd0 /mnt/floppy |
# Folgendes in der Konsole eingeben (statt "/dev/hda3",die gewünschte Linux Partition angeben):
dd if=/dev/hda3 bs=512 count=1 of=/mnt/floppy/linux.sec |
# Das floppy wieder unmounten duch die Eingabe von
umount /mnt/floppy |
wieder und starten weider Windows
Nun die Datei "linux.sec" von der Diskette auf C: kopieren, danach die Datei ‚C:boot.ini‘ öffnen.
Hier unter der letzten Zeile Eintragen:
C:linux.sec="Linux" ein. Die boot.ini sollte nun etwa so aussehen:
-----BOOT.INI------- [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)WINNT [operating systems] multi(0)disk(0)rdisk(0)partition(1)WINNT="Windows 2000 Professional" D:="Windows ME" C:linux.sec="Linux" -----BOOT.INI------- |
Nun die Datei speichern, schliessen und Windows neu starten.
Es sollte jetzt zusätzlich der Menüpunkt "Linux" beim starten erscheinen.
Nach der Installation und erstem Start vom DHCP-Server bringt dieser die Meldung:
localhost dhcpd: No subnet declaration for eth0 (xxx.xxx.xxx.xxx).
localhost dhcpd: Please write a subnet declaration in your dhcpd.conf file for the
localhost dhcpd: network segment to which interface eth0 is attached.
localhost dhcpd: exiting.
Besonders bei Gateways, die zwei Netzwerkkarten haben, man aber nur dynamische IPs auf einer (z.B. eth1) verteilen möchte, muss man dem Installationsprogramm sagen, dass der DHCP nur auf eth1 hören soll. Standardmässig hört er nämlich auf eth0, was bei vielen das "externe" interface ist.
Abhilfe schafft nach der Installation vom DHCP Server das editieren der Datei: ‚/etc/default/dhcp‘, dort das verwendete (interne) Interface eintragen und mittels:
dpkg-reconfigure dhcp |
neu Konfigurieren.
Weitere Infos zu diesem Problem: http://www.online-tutorials.net/betriebssysteme/linux-dhcp-server-subnet-declaration/t-10-29-8-page1.html
Manchmal kann es sinnvoll sein eine "Müll-Datei" mit Einstellbarer Grösse zu erzeugen, etwa um ein Alarmierungssystem zu testen wenn ein Filesystem voll ist. Dies geht ganz einfach mit "dd":
dd if=/dev/zero of=mein_muell_file bs=block_groesse_in_bytes count=anzahl |
So generiert z.B.:
dd if=/dev/zero of=null_file bs=1048576 count=10 |
folgendes File:
Name: null_file
Grösse: 10MB (= 10 * 1MB)
Inhalt: 10485760 Null-Bytes
Das gleiche bekommt man übrigens auch mit:
dd if=/dev/zero of=null_file bs=1048576 count=1 |
Zum Prinzip: Das File enthält nichts anderes als ca. 10 Millionen Null-Bytes. Die Grösse kann man so entsprechend Einstellen.
Falls man bei einem neu installierten System auf einmal Berechtigungsprobleme bekommt, etwa die Meldung von VSFTP: "500 OOPS: cannot change directory", obwohl die Berechtigungen korrekt gesetzt sind ist meistens SELinux im Spiel.
SELinux oder auch "Security Enhanced Linux" ist eine Erweiterung des Linux Kernels, dass versucht zusätzliche Zugriffskontrollen umzusetzen.
in /var/log/messages gibt das Schlüsselwort "avc" darüber Auskunft.
Die SELinux Berechtigungen lassen sich mit "getsebool -a" anzeigen und mit "setsebool -P" ändern.
Um also Beispielsweise das Problem mit dem FTP Server zu lösen genügt ein:
setsebool -P ftp_home_dir 1 |
[[Befehl] &
Man kann die Konsole weiter benutzen z.B.
firefox &
[[Befehl] && [[Befehl]
Befehle werden nacheinander ausgefürt z.B.
firefox && shutdown -h now
man [[Programm]
Zeigt die Hilfe zu einem Programm an man iptables
CTRL + C
Bricht aktuellen Vorgang in der Shell ab strg + C
VERZEICHNISSE UND DATEIEN
cd [[Verzeichnis]
Wechselt in ein Verzeichnis z.B.
cd /tmp
cd .. (Wechselt ein Verzeichnis höher)/td>
cd / (Wechselt ins Wurzelverzeichnis)
cd – (Wechselt in das vorherige Verzeichnis)
cp [[Datei][[Verz]
Kopiert Datei in Verzeichnis z.B.
cp 123.txt /tmp
mv
Verschiebt eine Datei z.B.
mv 123.txt /tmp
mv [[Datei1][[Datei2] benennt Datei [[DATEI1] in [[DATEI2] um z.B.
mv 123.txt 456.txt
rm [[-r|f]
Löscht eine Datei (-r =rekursiv; -f =unterdrückt warnmeldungen -ACHTUNG: löscht alles im Verzeichnis ohne Nachfrage!) z.B.
rm /tmp/123.txt
rm /tmp/*
rm -rf /tmp/
mkdir [[Verzeichnis]
Erzeugt ein Verzeichnis z.B.
mkdir /home/test
rmdir [[Verzeichnis]
Löscht ein Verzeichnis z.B.
rmdir /home/test
ln [[-s] /pfad/datei /phadLink/dateiLink
Erzeugt einen Link zu Pfad/Datei (-s =symbolischer link ’symlink‘)
ls [[-l|a|h]
Zeigt Ordner-Inhalt an (-l =ausführich; -a =alle Dateien, auch versteckte anzeigen; -la =alle Dateien in der ausführlichen Listenansicht anzeigen; -h =Dateigrössen in KB/MB/GB/… anzeigen z.B.
ls /home/test
ls -l /home/test
ls -la /home/test
alias ls=’ls –color‘
Stellt farbige Ansicht ein z.B.
alias ls=’ls –color‘
pwd
Zeigt das aktuelle arbeitsVerzeichnis an
cat [[Datei]
Zeigt Inhalt einer Datei
more [[Datei]
Zeigt Inhalt einer Datei seitenweise an
touch [[Datei]
Erzeugt leere Datei z.B.
touch 123.txt
whereis [[Prog]
Sucht nach einem Programm z.B.
whereis samba
find . | grep [[DATEI]
sucht eine Datei im Verzeichnis z.B.
find . | grep 123.txt
grep [[KEY] [[DATEI]
Sucht nach Begriff in einer Datei z.B.
grep Haus 123.txt
locate [[DATEI]
Sucht nach Datei in der Datenbank z.B.
locate 123.txt
updatedb
Aktualisiert den Such Datenbank Index (sollte man immer vor dem befehl "locate" ausführen)
which
Zeigt an, wo sich ein Programm befindet z.B.
which apache
SYSTEM
arch Prozessorfamilie arch
cat /proc/filesystems
Unterstützte Dateisysteme cat /proc/filesystems
cat /proc/cpuinfo
Infos zur CPU cat /proc/cpuinfo
cat /proc/filesystems
Alle unterstützten Dateisysteme cat /proc/filesystems
cat /proc/pci
Infos zu den PCI-Karten cat /proc/pci
dmesg | grep hd
Infos über alle Laufwerke dmesg | grep hd
date
Datum und Zeit
dmesg
Kernellogger: Zeigt Kernelaktivtäten
free
Zeigt Ausnutzung des Arbeitsspeichers
glxgears Kleiner Grafiktest zur Performance der VGA
glxinfo
Angaben über OpenGL und Grafikkarte glxinfo
kill [[PID] Schiesst Prozess mit bestimmter ID ab z.B.
kill 1067
killall [[Prog]
Schiesst alle Prozesse mit Prozessname "Prog" ab z.B.
killall inetd
lspci
Infos über PCI-Komponenten
shutdown [[-h|-r] [[now]
Fährt den Rechner herunter (-h) , oder startet ihn neu (-r) (now=sofort; alternativ kann hier auch eine zeit angegeben werden) z.B.
shutdown -r now
top
Zeigt Programme und CPU-Auslastung an
uptime
Wie lange ist der PC im Betrieb?
X -version
Zeigt Version von Xfree an
FESTPLATTE
df [[-h]
Speicherplatz anzeigen (-h = Anagaben in KB/MB/GB/…)
fdisk Festplatte partitionieren fdisk /dev/hda
mkfs.ext[[2|3]
HDD mit ext2|3 formatieren z.B.
mkfs.ext3 /dev/hda1
mkreiserfs
HDD mit reiserfs formatieren z.B.
mkreiserfs /dev/hda1
sync
gepufferte Daten auf HDD speichern
MOUNTEN
mount
Hängt Datenträger in das System ein z.B.
mount /dev/hda1 /mnt/win
mount -t [[Filesystem] Mountet mit vorgegebenen Dateisystem mount -t ntfs /mnt/win_xp
mount -a Mountet alle Datenträger aus der /etc/fstab mount -a
mount -r Von Datenträger kann nur gelesen werden mount -r /mnt/win
mount -w Datenträger kann gelesen und beschrieben werden mount -w /mnt/win
mount -m Mountet ohne Eintrag in /etc/mtab mount -n /mnt/win
BENUTZER
id
Zeigt Benutzername und Gruppe an
whoami
Zeigt aktuell angemeldeten Benutzer an
who
Wer ist alles eingeloggt?
groupadd [[Gruppe]
Erzeugt eine neue Gruppe
groupdel [[Gruppe]
Löscht eine neue Gruppe groupdel
useradd -m [[USER]
Erzeugt Benutzers und Homeverz.
userdel -r [[USER]
Löscht Benutzers (und Homeverz; -r)
passwd [[USER]
Ändert Passwort des Benutzers
su [[user]
Wechselt den aktuellen Benutzer z.B.
su (Man arbeitet nun als Root an der Konsole)
su [[USER] Man arbeitet nun als [[USER] an der Konsole
NETZWERK
ifconfig Zeigt Netzwerk-Infos an z.B.
ifconfig (zeigt alle Netzwerkverbindungen an)
ifconfig eth0 (zeigt Infos zur Netzwerkkarte ‚eth0‘ an)
iwconfig Zeigt Infos zum WLAN an
ping [[Rechner]
Testet Verbindung zu einem Rechner z.B.
ping 192.168.0.1
KERNEL UND MODULE
lsmod Zeigt geladene Module an
make menuconfig
Einrichten des Kernels z.B.
cd /usr/src/linux;
make menuconfig
modprobe [[Modul]
Lädt ein Modul z.B.
modprobe printer
uname -a
Zeigt Kernel-Version an
SONSTIGES
ps aux
Zeigt alle laufenden Prozesse und Dienste an
rc-update show
Zeigt die Dienste an, die beim Start geladen werden
ls -s /pfad/zur/echten/datei /gelinkter/symbolischer/pfad
Erzeugt einen Symbolischen Link
Das Vergrössern eines Volumes geht relativ einfach mit:
lvextend -L+1G /dev/volumegroup/logicalvolume resize2fs /dev/volumegroup/logicalvolume |
[stextbox id=“tip“ caption=“Tipp: lvextend Parameter -r“]
Mittels dem Paramater -r
wird das filesystem nach dem vergrössern des Volumes automatisch angepasst!
So kann man anstelle der zwei obigen Zeilen auch einfach:
lvextend -r -L+1G /dev/volumegroup/logicalvolume
eingeben.
[/stextbox]
Das Verkleinern ist etwas komplizierter und ein Fehler könnte das ganze LV korrupt (unbrauchbar) machen.
Hier eine Beschreibung wies trotzdem glatt läuft:
Folgendes muss hierbei beachtet werden:
Abfolge:
#Prüfen wie viel Platz das Filesystem braucht: df -h /home #Filesystem Size Used Avail Use% Mounted on #/dev/mapper/rootvg-home_lv # 25G 18G 5.9G 75% /home #Partition unmounten: umount -f /home/ #Filesystem check machen (zwingend) e2fsck -f /dev/rootvg/home_lv #Filesystem verkleinern; wir wollen das LV auf 20GB verkleinern, deshalb machen wir das filesystem nur 19GB gross: resize2fs /dev/rootvg/home_lv 19G #Das LV wird dann auf 20GB resized (etwas grösser als filesystem) lvresize -L 20G /dev/rootvg/home_lv #Mit "resize2fs" kann man dann das filesystem wieder auf die Grösse des LVs erweitern resize2fs /dev/rootvg/home_lv #Und wieder mounten: mount /home |
Wenn es sich bei der Partition zufällig um eine system Partition wie z.B.: /, /usr/, /var handelt, die sich nicht im laufenden Betrieb mounten lässt, so muss das System mit einer Linux Boot-CD gestartet werden.