среда, 30 января 2013 г.

Arch Linux 01.2013 Installation



Знаю, что Arch Linux, в основном, выбор опытных пользователей, но возможно, просто будет удобно держать все параметры и саму конфигурацию установки в одном месте:

# Arch Install 01/2013

------BOOT FROM FLASH------

cfdisk

mkfs.reiserfs /dev/sdXy -l <label>

mount /dev/sdXy /mnt

pacstrap /mnt base base-devel grub-bios cifs-utils bridge-utils lm_sensors hddtemp gpm openssh net-tools dosfstools ntfsprogs

genfstab -p /mnt >> /mnt/etc/fstab -U

arch-chroot /mnt

nano /etc/fstab
# change /dev/sdXy to /dev/disk/by-uuid/<uuid>
# cifs //<ip>/<shared-folder> /<mount>/<point> cifs uid=<uid>,gid=<gid>,username=<username>,password=<password>,workgroup=<WORKGROUP>,ip=<ip>,suid,user,noauto 0 0

nano /etc/hostname
<hostname>

ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

nano /etc/adjtime
LOCAL

nano /etc/locale.gen
ru_RU.UTF-8

nano /etc/locale.conf
LANG=ru_RU.UTF-8

nano /etc/vconsole.conf
KEYMAP="ru"
FONT="cyr-sun16"

locale-gen

nano /etc/mkinitcpio.conf

MODULES="<modules> <modules>" #example: MODULES="i915 tun bridge fuse kvm kvm-intel pci-stub pci-hotplug virtio-pci virtio-blk virtio-net"

mkinitpcio -p linux

nano /etc/modprobe.d/modprobe.conf
#example:
blacklist nouveau
blacklist radeon
blacklist snd-hda-codec-hdmi

nano /etc/default/grub
#example:
GRUB_CMDLINE_LINUX_DEFAULT="quiet ipv6.disable=1 intel_iommu=on"
GRUB_GFXMODE=800x600
#GRUB_GFXPAYLOAD_LINUX=keep
GRUB_COLOR_NORMAL="green/black"
GRUB_COLOR_HIGHLIGHT="black/green"

grub-mkconfig -o /boot/grub/grub.cfg

nano /boot/grub/grub/.cfg
set lang=ru

grub-install /dev/sdX

passwd

useradd -m -g users -s /bin/bash -G audio,video,optical,network,lp,scanner,storage,uucp,wheel <username>

passwd <username>

systemctl enable gpm.service

cp /etc/network.d/examples/bridge /etc/network.d/bridge
nano /etc/network.d/bridge
#example:
BRIDGE_INTERFACES="enp5s0"

systemctl enable netcfg@bridge.service

nano /etc/ssh/ssh_config
ForwardX11 yes
ForwardX11Trusted yes

nano /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

systemctl enable sshd.service

exit

umount /mnt

reboot


------BOOT FROM HDD------

nano /etc/pacman.conf

[archlinuxfr]
Server = http://repo.archlinux.fr/$arch

[mate}
Server = http://repo.mate-desktop.org/archlinux/$arch

pacman -Syu

pacman -S xorg

#example: 1,2,3... or 1-100

cd /etc/fonts/conf.d
ln -s ../conf.avail/XX-foo.conf

pacman -S ttf-liberation xcursor-neutral

nano /etc/X11/xorg.conf.d/10-evdev.conf
Option "XkbLayout" "us,ru"
Option "XkbOptions" "grp:alt_shift_toggle"

nano /etc/X11/xorg.conf.d/50-joystick.conf
Option "StartKeysEnabled" "false"
Option "StartMouseEnabled" "false"

su <user>
nano .xinitrc
exec <name-of-the-session>

#example: exec mate-session

pacman -S slim mate mate-extra

systemctl enable slim.service

mkdir /usr/share/icons/default
nano /usr/share/icons/default/index.theme
[Icon Theme]
Inherits=Neutral


------Intel SNA------
nano /etc/X11/xorg.conf.d/20-intel.conf
Section "Device"
   Identifier  "Intel Graphics"
   Driver      "intel"
   Option      "AccelMethod"  "sna"
EndSection

------MATE Compiz------
mateconf-editor
/desktop/mate/session/required_components/windowmanager
marco -> compiz

pacman -S compiz-core compiz-fusion-plugins-main compiz-fusion-plugins-extra ccsm emerald emerald-themes

ccsm:
Common Settings: Virtual Desktop Size 1x1
Effects: Window Decorations command: emerald
Shift Switcher X
Change window size X
Move Window X

nano /usr/share/applications/compiz.desktop
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Compiz
Exec=/usr/bin/compiz ccp  #Make sure ccp is included so that Compiz loads your previous settings.
NoDisplay=true
# name of loadable control center module
X-GNOME-WMSettingsModule=compiz
# autostart phase
##-> the folloing line cause gnome-session warning and slow startup, so try not to enable this
# X-GNOME-Autostart-Phase=WindowManager
X-GNOME-Provides=windowmanager
# name we put on the WM spec check window
X-GNOME-WMName=Compiz
# back compat only
X-GnomeWMSettingsLibrary=compiz

chmod a+x /usr/share/applications/compiz.desktop


------x11vnc------
pacman -S x11vnc
mkdir ~/.x11vnc
$ x11vnc -storepasswd <password> ~/.x11vnc/passwd
$ x11vnc -display :0 -many -rfbauth ~/.x11vnc/passwd

вторник, 29 января 2013 г.

Виртуальная машина Qemu-KVM с OSX Mountain Lion 10.8.2

Сегодня хочу поделиться с вами способом создания Qemu-KVM виртуальной машины с OSX 10.8.2 в качестве гостевой операционной системы.

Итак приступим!

Нам понадобится CPU и материнская плата c поддержкой VT-x и VT-d. В моем случае - это ASRock Z77 Exreme 6 с процессором Intel Core i5 3470. Так же для работы с qemu-kvm необходим установленный дистрибутив Linux (например я использую Arch Linux).

Так как у меня не получилось запустить OSX с помощью штатного пакета qemu-kvm в составе Arch Linux, я решил попробовать собрать самостоятельно более новую версию Qemu версии 1.3.1.

yaourt -S celt spice cegui-0.6 texi2html

cegui-0.6 - для успешной сборки необходимо добавить в PKBUILD lua51 в зависимости сборки

wget http://wiki.qemu.org/download/qemu-1.3.1.tar.bz2

(md5: 5dbc6c22f47efca71dfaae0dd80dcf9e)

tar -jxvf qemu-1.3.1.tar.bz2 qemu

cd qemu

./configure --python=/usr/bin/python2 --sysconfdir=/etc --enable-kvm --audio-drv-list=pa,alsa,sdl --audio-card-list=ac97,sb16,es1370,hda --enable-spice --enable-vhost-net --enable-guest-agent --enable-mixemu --libexecdir=/usr/lib/qemu --target-list=i386-softmmu,x86_64-softmmu,arm-softmmu,i386-linux-user,x86_64-linux-user,arm-linux-user,armeb-linux-user --enable-docs

make

make install

Далее мы соберем seabios из git для устранения бага с крахом окна "about this mac":

yaourt -S iasl git wget

export LANG=en_US.UTF-8

git clone git://git.seabios.org/seabios.git

wget http://www.contrib.andrew.cmu.edu/~somlo/OSXKVM/seabios-mac-20121206.patch

nano seabios-mac-20121206.patch #Тут нам понадобится немного отредактировать содержимое файла, удалив все до 60 строки.

cd seabios

patch -p1 < ../seabios-mac-20121206.patch

make #у меня появилась необходимость сделать ln -s /usr/bin/python2 /usr/bin/python

su -c 'cp out/bios.bin /usr/share/qemu' #удалите или создайте резервную копию оригинального bios.bin, если это необходимо

(готовый PKGBUILD qemu.install seabios.bin qemu-1.3.1.pkg.tar.xz)


https://docs.google.com/file/d/0B6OXm8m4bGkWSDI0YlhjV0tOUTA/edit
https://docs.google.com/file/d/0B6OXm8m4bGkWMFZva04wR214LTQ/edit
https://docs.google.com/file/d/0B6OXm8m4bGkWYjJmbFdvOF9sNVE/edit
https://docs.google.com/file/d/0B6OXm8m4bGkWejc1ay1VV0VwOXc/edit





Теперь установим libvirt и вспомогательные утилиты для удобства управления нашими виртуальными машинами:

yaourt -S libvirt

systemctl enable libvirtd.service

yaourt -S spice-gtk gtk-vnc-git gnome-common automake-1.12

во время сборки gtk-vnc-git вы можете отредактировать PKGBUILD и удалить все зависимости
 gtk3, если есть такая необходимость

yaourt -S virt-viewer #LANG=en_US.UTF-8 в PKGBUILD

для включения поддержки IOMMU в /etc/default/grub добавить
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on"

grub-mkconfig -o /boot/grub/grub.cfg

nano /etc/mkinitcpio.conf
MODULES="tun bridge kvm kvm-intel pci-hotplug pci-stub"

mkinitcpio -p linux

nano /etc/modprobe.d/modprobe.conf
blacklist radeon/nouveau/snd-hda-codec-hdmi... #(здесь вам необходимо заблокировать загрузку модулей ядра тех устройств, которые вы планируете пробрасывать в виртуальную машину)

Перезагрузите компьютер

На этом настройка хост-системы закончена.
-----------------------------------------------------------------------------------------------------------
Для создания установочного образа с OSX 10.8.2 нам понадобится оригинальный образ OSX и Chameleon.pkg.

http://www.insanelymac.com/forum/topic/277015-guide-installing-mountain-lion/
http://forum.appleinsider.ru/topic/1634-sozdaem-ustanovochnii-disk-s-os-x-lion/

------------------------------------------------------------------------------------------------------------

 Содержимое папки /Extra/Extensions у меня получилось следующим:

ACHIPortInjector.kext
AppleACPIPS2Nub.kext
ApplePS2Controller.kext
ApplePS2Keyboard.kext
ApplePS2Mouse.kext
ATAPortInjector.kext
FakeSMC.kext
IOACHIBlockStorageInjector.kext
NullCPUPowerManagement.kext
SuperIOFamily.kext
virtio-net.kext

Профиль smbios: MacPro3,1

Параметры загрузки Chameleon:

CSTUsingSystemIO=Yes
EnableC3State=Yes
EthernetBuiltIn=Yes
ForceHPET=Yes
GUI=No
GenerateCStates=Yes
GeneratePStates=Yes
Graphics Mode=1280x800x32
Kernel Flags npci=0x2000 darkwake=0
Legacy Logo=Yes
PciRoot=1
QuietBoot=Yes
RestartFix=No
SystemType=1
USBBusFix=Yes

Дополнительные используемые мной утилиты в /Extra/Utils:
Chameleon Wizard
Chameleon-2.1svn-2069.pkg
Kext Utility
lspci V1.1
Multibeast 5.1.3-1
ShowHiddenFiles

https://docs.google.com/file/d/0B6OXm8m4bGkWd3dpSkVZbzIybms/edit - все необходимое ~ 30Mb
------------------------------------------------------------------------------------------------------------
yaourt -S dmg2img #сконвертируем установочный образ OSX в .img (dmg2img in.dmg out.img)
qemu-img create -f raw "/путь/до/*.img" 20G
------------------------------------------------------------------------------------------------------------
Сейчас мы создадим .xml файл с конфигурацией нашей виртуальной машины с OSX:


<domain type='kvm'>
  <name>osx</name>
  <uuid>91848507-02ce-7d89-1ef4-40039265bbf9</uuid>
  <memory unit='KiB'>1048576</memory>
  <currentMemory unit='KiB'>1048576</currentMemory>
  <vcpu placement='static'>2</vcpu>
  <os>
    <type arch='x86_64' machine='pc-1.3'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <cpu mode='custom' match='exact'>
    <model fallback='allow'>core2duo</model>
    <vendor>Intel</vendor>
    <topology sockets='1' cores='2' threads='2'/>
  </cpu>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/qemu/osx/osx-install.img'/>  #путь до установочного образа!
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/qemu/osx/osx.img'/> #путь до образа виртуального диска ВМ!
      <target dev='hdb' bus='ide'/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </controller>
    <controller type='usb' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:bf:39:f3'/>
      <source bridge='virbr0'/> #Можно так же создать bridge через netcfg (br0)
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <channel type='spicevmc'>
      <target type='virtio' name='com.redhat.spice.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='mouse' bus='ps2'/>
    <graphics type='spice' autoport='yes'/>
    <sound model='ich6'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </sound>
    <video>
      <model type='qxl' vram='65536' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </memballoon>
  </devices>
</domain>

------------------------------------------------------------------------------------------------------------


теперь от суперпользователя выполним:
virsh define '</путь/до/.xml>'

virsh start osx
virt-viewer osx

------------------------------------------------------------------------------------------------------------
Далее выполняем установку OSX, подготовив жесткий диск Дисковой Утилитой установщика

После установки не отмонтируя установочный образ загружаем OSX в виртуальной машине и копируем содержимое папки Extra в корень установленной системы и выполняем установку Chameleon.pkg c опциями по-умолчанию. Далее приводим файлы smbios.plist и org.chameleon.Boot.plist в должный вид с помощью Chameleon Wizard.

ВНИМАНИЕ! В данный момент виртуальная машина с OSX не может получить IP-адрес и не поддерживается аудио-кодек, так же иногда при выключении - машина не останавливается, в этом случае следует использовать команду virsh destroy osx от супер-пользователя.

------------------------------------------------------------------------------------------------------------
После описанных выше действий мы можете отмонтировать установочный образ через EDITOR=nano virsh edit osx и удалить


    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/qemu/osx/osx-install.img'/>  #путь до установочного образа!
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>

Система должна загрузиться как положено (используйте флаг -v для вывода подробной информации или -s для загрузки в однопользовательский режим).
------------------------------------------------------------------------------------------------------------

Проброс GPU в виртуальную машину:
В данный момент хорошо пробрасываются только GPU производства AMD или Intel, в моем случае - это AMD Sapphire Radeon 6450 1024Mb (она хорошо поддерживается OSX). Желательно иметь для такого эксперимента монитор с 2 видео-входами - т.к. вы сможете переключаться с реального компьютера на виртуальный нажатием кнопки на мониторе и выбором соответствующего входа.

На хосте: lspci | grep VGA
Смотрим адрес шины нашего GPU (в моем случае - это 01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Caicos [Radeon HD 6450])

EDITOR=nano virsh edit osx

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0' multifunction='on'/>
    </hostdev>

virsh start osx
virt-viewer osx

Опции Chameleon Wizard для включения поддержки нашего GPU:
AtiConfig=Duckweed
Graphics Enabler=No

После установки этих значений загрузчика необходимо запустить Kext Utility для исправления всех прав в /S/L/E и перезагрузить ВМ.

Признаком удачного проброса должен стать стандартный серый фон экрана входа пользователя в OSX и появившееся изображение на втором входе вашего монитора или втором мониторе, подключенном к ВМ)

http://savepic.org/2678452.png - вот такой, 

ну и полупрозрачная верхняя панель.
Так же можно проверить доступность проброшенного GPU через "Об этом Mac" или "Информацию о системе"

Ну вот и всё! Желаю вам удачного эксперимента и жду замечаний и подсказок по улучшению данной статьи! :-)