Benutzer:Klaus Piotrik Qais Felli-Littmann/Arch Linux bei Kimsufi via Qemu

Diese Anleitung basiert auf einem Forumpost von heise.

# Set the language environment
export LANGUAGE=C;export LC_ALL=C;export LANG=C

# Booting the rescue systems gives you a complete linux system that is running on your server without using your harddisk.

# First get the network data of your server: ifconfig and save network data like IP, gateway, mac, etc.
root@rescue:~# ifconfig
eth0      Link encap:Ethernet  '''HWaddr 38:60:77:3e:f2:58'''  
          '''inet addr:37.59.29.XXX'''  Bcast:  Mask:
          inet6 addr: fe80::3a60:77ff:fe3e:f258/64 Scope:Link
          RX packets:90360 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24816 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:115106829 (109.7 MiB)  TX bytes:4129029 (3.9 MiB)
          Interrupt:20 Memory:fe500000-fe520000 

root@rescue:~# netstat -nr
Kernel IP routing table
Destination     '''Gateway'''         Genmask         Flags   MSS Window  irtt Iface         ''''''         UG        0 0          0 eth0   U         0 0          0 eth0

#Part of dmesg:
root@rescue:~# dmesg
e1000e: eth0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: None
e1000e 0000:00:19.0 eth0: 10/100 speed: disabling TSO
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Sending DHCP requests .., OK
IP-Config: Got DHCP answer from, '''my address is 37.59.29.XXX'''
IP-Config: Complete:
     device=eth0, hwaddr=38:60:77:3e:f2:58, ipaddr=37.59.29.XXX, mask=, gw=
     host=, domain=, nis-domain=(none)
     bootserver=, rootserver=, rootpath=/home/pub/bsd-rescue

# Second step is to get rid of the network drives, because they are read-only
root@rescue:~# top
KiB Mem:  16331460 total,   558884 used, 15772576 free,    62896 buffers
KiB Swap:        0 total,        0 used,   522236 free,   215728 cached
swapon /dev/sdb3    # use your own swap

root@rescue:~# mdadm /dev/md2 --fail /dev/sda2 --remove /dev/sda2
mdadm: set /dev/sda2 faulty in /dev/md2
mdadm: hot removed /dev/sda2 from /dev/md2

# Create partition for rescue system and new install
fdisk -u /dev/sda       # neue Partition in Größe von 30GB sollte ausreichen
n 6 default +30G
/dev/sda1   *        4096     1050623      523264   fd  Linux raid autodetect
/dev/sda2         1050624    42991615    20970496   fd  Linux raid autodetect
/dev/sda3        42991616    59766783     8387584   fd  Linux raid autodetect    # wrong partition type
/dev/sda4        59766784  1953509375   946871296    f  W95 Ext'd (LBA)
/dev/sda5        59768832   121204735    30717952   fd  Linux raid autodetect
/dev/sda6       121206784   184121343    31457280   83  Linux
t 3 82   # Linux swap
t 2 83


mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda6

mount  /dev/sda2 /mnt # use 10GB as recovery system 
rsync -avHAXS --dry-run --exclude=/mnt --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/run --progress / /mnt

root@rescue:~# unlink /mnt/boot
root@rescue:~# unlink /mnt/opt 
root@rescue:~# unlink /mnt/usr
root@rescue:~# mv /mnt/nfs/boot /mnt/boot
root@rescue:~# mv /mnt/nfs/opt /mnt/opt 
root@rescue:~# mv /mnt/nfs/usr /mnt/usr

unlink /mnt/var/backups;cp -r /nfs/var/backups /mnt/var/backups
unlink /mnt/var/cache;cp -r /nfs/var/cache /mnt/var/cache
unlink /mnt/var/lib;cp -r /nfs/var/lib /mnt/var/lib
cp -r /run /mnt/run
unlink /mnt/var/lock;ln -s /mnt/run/lock
unlink /mnt/var/run;ln -s /mnt/run /mnt/var/run

# KiB Mem:  16331460 total,  2450864 used, 13880596 free,    26188 buffers
# KiB Swap:   522236 total,        0 used,   522236 free,  2075168 cached
sync; echo 3 > /proc/sys/vm/drop_caches
# KiB Mem:  16331460 total,   289492 used, 16041968 free,      132 buffers
# KiB Swap:   522236 total,        0 used,   522236 free,    91132 cached

mount -B /mnt/var/cache /var/cache
mount -B /mnt/var/lib /var/lib
mount -B /mnt/usr /usr

# Now our linux system is mounted rw

mkdir /mnt/proc;mount -B /proc /mnt/proc
mkdir /mnt/sys;mount -B /sys /mnt/sys

# download windows iso into /mnt 
# wget http://domain.tld/yourwindows.iso #adjust as necessary
mkdir /mnt/md2
mount /dev/md2 /mnt/md2
cd /mnt/md2

# use QEMU from wheezy backports
# enable wheezy-backports

apt-get update
apt-get -t wheezy backports install qemu # take over 200MB

root@ns333XXXX:~# df -h
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                   20G  6.7G   13G  36% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   1.6G  392K  1.6G   1% /run
/dev/disk/by-uuid/37ffbf7c-be5b-4d75-86df-c66413401dd3   20G  6.7G   13G  36% /
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
tmpfs                                                   3.2G     0  3.2G   0% /run/shm
/dev/md5                                                 29G  1.4G   27G   5% /mnt/fedora

# Now use qemu
apt-get install squashfs-tools
qemu -cpu qemu64 -smp 2 -vnc :0 -m 2048 -usbdevice tablet -k en-us -cdrom  -hda /dev/sda -hdb /dev/sdb 

-cpu (CPU Type)
-smp (# of Processors)
-vnc (use VNC as monitor output)
:0 (means use vncdisplay :0 = 5900 port, :1 = 5901 port, etc)
-m (amount of memory)
-usbdevice (useful with VNC)
-k (keyboard format)
-cdrom (image file)
-hda (first hdd -> using physical HDD)
-hdb (second hdd -> using physical HDD)

[update] qemu-system-x86_64 -vnc :0 -m 2048 -usbdevice tablet -k en-us -cdrom /mnt/yourwindows.iso -hda /dev/sda -hdb /dev/sdb # to get 64-bit mode on Atom D2550 CPU [/update]

On your client maschine you can use the following command to tunnel vnc through ssh to safely access your headless qemu session

vncviewer -via root@yourip localhost:0

-via (login to your server through ssh, using user root and standard ssh port)
-localhost:0 (ssh makes remoteserver be localhost for you, :0 means connecting to port 5900 on remote server, :1 would mean connecting through port 5901, etc)

I use this method to unsquash my linux backup

apt-get install squashfs-tools
wget http:myimage
mkdir /mnt/md
cat /proc/mdstat # see raid devices
mount /dev/md1 /mnt/md
usquashfs -f -d /mnt/md /mnt/squash.file
mount -B /dev /mnt/md/dev
mount -B /sys /mnt/md/sys
mount -B /proc /mnt/md/proc
chroot /mnt/md
update system, like passworts, ip addresses, network mac, etc.