четверг, 18 ноября 2010 г.

Корень FreeBSD на почве ZFS или триумфальное возвращение чертей! :)

Да, да да! Это снова очередная статья о личном опыте использования ОС FreeBSD на основе  файловой системы ZFS. Но лучше много информации чем ее отсутствие :)
Лирическое...
Если вы периодически просматривали этот блог по диагонали, то очевидно заметили что FreeBSD в нем периодически мелькала (то как прокси для деления инета с другом, то сваливалась в десктоп ОС) и вот теперь я решил создать NAS на ее основе. Вы скажите ведь есть FreeNAS, зачем нам заморачиваться с FreeBSD? В ответ возражу что я просто люблю эту ОС, поэтому и обожаю копаться в ней. Вот и все. :)

Техническое...
О прекрасной файловой системе (не лишенной конечно недостатков как и все в нашем мире) ZFS вы и без меня в wikipedia прочитаете. Перебрав множество руководств в сети я остановился на официальном по адресу: wiki.freebsd.org/RootOnZFS/GPTZFSBoot/Mirror. В данном случае я ставил в конфигурации зеркала из 2 дисков по 640Гб.

Итак первым делом нам понадобиться DVD-диск с FreeBSD. У меня был диск 8.1-REALESE. Далее после автозапуска исталятора и выбора страны и языка выбираем Fixit. После чего запуститься sh.

1.  Создаем GPT-схему (в терминологии windows это ближе к понятию том) разбивки жестких дисков.
Fixit# gpart create -s gpt ad4
Fixit# gpart create -s gpt ad6
ad4 и ad6 это имена моих дисков. Посмотреть ваши вы можете выполнив:
Fixit# dmesg| grep SATA
Fixit# dmesg| grep IDE 
2. Создаем партиции (что-то вроде разделов) на них. Мы как и в рекомендации создадим 3 партиции:
- загрузочную в 64кб,
- подкачки на 4Гб,
- корень системы все оставшееся место (в данном случае 590Гб).

Своп партицию создали отдельно, т.к. в случае аварии на ZFS свопе краш-дамп не создаться. 
Fixit# gpart add -b 34 -s 128 -t freebsd-boot ad4
Fixit# gpart add -b 162 -s 8388608 -t freebsd-swap -l swap0 ad4
Fixit# gpart add -b 8388770 -s 590G -t freebsd-zfs -l disk0 ad4
Fixit# gpart add -b 34 -s 128 -t freebsd-boot ad6
Fixit# gpart add -b 162 -s 8388608 -t freebsd-swap -l swap1 ad6
Fixit# gpart add -b 8388770 -s 590G -t freebsd-zfs -l disk1 ad6
 Вот тут первая засада! Если не указывать параметр "-s" при создании последних партиций, то будет использовано все доступное место. Чего ж тут плохого спросите вы. А то что в зеркале 2 и более винчестера и реальные емкости у них тоже разные. На моих винчестерах WD серии Green на 640Гб "маркетинговой емкости" доступно реально 596Гб. А расхождение между винчестерами составило 528,25Мб! А это означает что если "упадет" больший диск, то зеркало не восстановиться.

Именно поэтому размер последней партиции = общая реальная емкость - 2 * расхождение в размере - своп - загрузочная - 2*17кб(GPT-таблица)

Расхождение в размере берем удвоенное, т.к. страхуемся вдруг третий винчестер, который когда нибудь придет на замену, будет содержать большее расхождение в емкости. Двойной размер GPT-таблиц обеспечен их двойным хранением в начале и конце диска. Я не стал заморачиваться и заложил на эти расходы 2.2Гб (да, наверно больше чем нужно, но я собираю NAS и данные на нем мои проекты мне чрезвычайно важны).

Реальный размер диска легко узнать выполнив:
Fixit# gpart list имя_диска
В разделе  Consumer параметр Mediasize.

Кстати в параметрах -b (смещение) и -s (длинна) применяется следующий вид аргументов:
- 0-9 =  LBA-блоки (1 блок 512Б)
- 0-9k = размер в килобайтах
- 0-9M = размер в мегабайтах
- 0-9G = размер в гигабайтах

Проверить корректность "разбивки диска" можно выполнив:
Fixit# gpart show имя_диска 
Если вы ошиблись при разметке, то вам помогут следующие команды:
- удаление партиции
Fixit# gpart delete -i номер_партиции имя_диска 
-удаление схемы (предварительно удалив все партиции)
Fixit# gpart destroy имя_диска 
Номер партиции можно увидеть либо через команду gpart list (параметр index), либо gpart show (3-й столбик).  Ну чтоже пойдем далее.

3. Установим защитный MBR-сектор и gptzfs-загрузчик:
Fixit# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad4
Fixit# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad6
В случае ошибки "operation not permitted" выполните:
Fixit# sysctl kern.geom.debugflags=0x10 
4. Загрузим модули поддержки ZFS:
Fixit# kldload /mnt2/boot/kernel/opensolaris.ko
Fixit# kldload /mnt2/boot/kernel/zfs.ko
5. Создадим ZFS-пул под названием zroot (название может быть любым):
Fixit# mkdir /boot/zfs
Fixit# zpool create zroot mirror /dev/gpt/disk0 /dev/gpt/disk1
Fixit# zpool set bootfs=zroot zroot
6. Создадим файловые системы в ZFS-пуле:
Сначала установим нужный нам механизм расчета контрольных сумм. В мануале рекомендован fletcher4. Я же установил sha256, т.к. он более устойчив, но и более "тяжелый" для процессора.
Fixit# zfs set checksum=fletcher4 zroot
Файловые системы оставим пока по умолчанию, ZFS тем и славиться что можно в любой момент что-то добавить не останавливая компьютер. 
Fixit# zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
Fixit# chmod 1777 /zroot/tmp
Fixit# zfs create zroot/usr
Fixit# zfs create zroot/usr/home
Fixit# cd /zroot ; ln -s /usr/home home
Fixit# zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
Fixit# zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
Fixit# zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src
Fixit# zfs create zroot/var
Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
Fixit# zfs create -o exec=off -o setuid=off zroot/var/db
Fixit# zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
Fixit# zfs create -o exec=off -o setuid=off zroot/var/empty
Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
Fixit# zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
Fixit# zfs create -o exec=off -o setuid=off zroot/var/run
Fixit# zfs create -o compression=lzjb -o exec=on -o setuid=off
Fixit# chmod 1777 /zroot/var/tmp
7. Установим систему FreeBSD на диск:
Fixit# cd /dist/8.0-*
Fixit# export DESTDIR=/zroot
Fixit# for dir in base catpages dict doc games info lib32 manpages ports;do (cd $dir ; ./install.sh) ; done
Fixit# cd src ; ./install.sh all
Fixit# cd ../kernels ; ./install.sh generic
Fixit# cd /zroot/boot ; cp -Rlp GENERIC/* /zroot/boot/kernel/
8. Переключаем партицию /var/empty в readonly:
Fixit# zfs set readonly=on zroot/var/empty 
9. Перемонтируем корень системы: 
Fixit# chroot /zroot 
10. Создадим основной конфигурационный файл /etc/rc.conf.
Сначала скажем что наши тома используют ZFS: 
Fixit# echo 'zfs_enable="YES"' > /etc/rc.conf
Потом сообщим система ее имя:
 Fixit# echo 'hostname="nas.mydomain.local"' >> /etc/rc.conf
А за одно пропишем это в файл hosts (особенно если ваш домен, как например .local не может быть разрешен доступными DNS-серверами):
Fixit# echo '127.0.0.1     nas.mydomain.local' >> /etc/hosts
Именно с отсутствием этой записи (а вернее с невозможностью разрезолвить свое DNS-имя) были связаны и долгая загрузка самой системы на строке "configuring syscons: blanktime" и долгий старт mc.
Далее установим конфигурацию сетевой карты:
 Fixit# echo 'ifconfig_nfe0="DHCP"' >> /etc/rc.conf
Можно и по другому (статический адрес):
Fixit# echo 'ifconfig_nfe0="inet 192.168.0.3 netmask 255.255.255.0"' >> /etc/rc.conf
Fixit# echo 'defaultrouter="192.168.0.1"' >> /etc/rc.conf
во всех командах nfe0 - имя моей карты, узнать вашу вы можете так:
Fixit# dmesg | grep Network
или так
Fixit# ifconfig
При этом последняя команда покажет и псевдо-устройство lo0 (интерфейс локальной петли)

11.  Создадим конфигурационный файл загрузчика:
Fixit# echo 'zfs_load="YES"' > /boot/loader.conf
Fixit# echo 'vfs.root.mountfrom="zfs:zroot"' >> /boot/loader.conf
12. Установим загрузчик ZFS:
Fixit# echo 'LOADER_ZFS_SUPPORT=YES' > /etc/src.conf
Fixit# mount -t devfs devfs /dev
Fixit# export DESTDIR=""
Fixit# cd /usr/src/sys/boot/
Fixit# make obj
Fixit# make depend
Fixit# make
Fixit# cd i386/loader
Fixit# make install
13. Ставим пароль на root'a:
Fixit# passwd
14. Выбираем часовой пояс:
Fixit# tzsetup
15. Создаем базу alias'ов /etc/mail/aliases.db:
Fixit# cd /etc/mail
Fixit# make aliases
16. Отключаем текущий корень системы:
Fixit# umount /dev
Fixit# exit
17. Сохраняем файл конфигурации ZFS в каталоге корневой установленной системы (это один из важных файлов ZFS сохраните его потом в надежном месте):
Fixit# cp /boot/zfs/zpool.cache /zroot/boot/zfs/zpool.cache
18. Подключаем своп:
18.1 Вариант 1 - это использование всех партиций свопа как независимых. Для этого создаем файл fstab, описывающий конфигурацию файловых систем:
Fixit# cat << EOF > /zroot/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/gpt/swap0 none swap sw 0 0
/dev/gpt/swap1 none swap sw 0 0
EOF
18.2 Вариант 2 - использование зеркалированного свопа (RAID-1)
18.2.1 Для второго варианта (а я использую его как самый устойчивый и просто интересный) нужно подгрузить модуль поддержки зеркала:
Fixit# kldload /mnt2/boot/kernel/geom_mirror.ko
18.2.2 Собрать зеркало:
Fixit# gmirror label -b prefer swap gpt/swap0 gpt/swap1
Вот тут тоже иногда ошибка скачет. Бывает пишет что не видит swap0 и в каталоге /dev/gpt/ файлы устройств swap0 и swap1 пропадают, то смотрим собралось ли зеркало:
Fixit# gmirror status
В случае успеха переходим далее.

18.2.3 Создаем файл fstab, описывающий конфигурацию файловых систем:
Fixit# cat << EOF > /zroot/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/swap none swap sw 0 0
EOF
18.2.4 Добавляем в загрузчик модуль поддержки зеркала:
Fixit# echo 'geom_mirror_load="YES"' >> /zroot/boot/loader.conf
19. Выставим корректный путь к библиотекам:
Fixit# export LD_LIBRARY_PATH=/mnt2/lib 
20. Демонтируем все файловые системы ZFS:
Fixit# zfs unmount -a
Бывает и тут ошибка "device busy", тогда пишем:
Fixit# cd /
и повторяем предыдущую команду.

21. Установим точки загрузки для ZFS-пула:
Fixit# zfs set mountpoint=legacy zroot
Fixit# zfs set mountpoint=/tmp zroot/tmp
Fixit# zfs set mountpoint=/usr zroot/usr
Fixit# zfs set mountpoint=/var zroot/var

Все, готово! Выполняем exit и выходим из sysinstall с перезагрузкой.


четверг, 11 ноября 2010 г.

NVIDIA 8800GT и умелые ручки :)

(В статье приводиться личный опыт автора. За испорченное оборудование автор ответственности не несет. Все действия делаются на свой страх и риск. Кроме того данные действия лишают вас гарантии на устройство.)

Досталась мне тут плата NVIDIA 8800GT почти даром, со сломаной системой охлаждения. 

 
А поскольку хотелось собрать еще один комп, а покупать видеокарту совсем не хотелось, то решил я ее восстановить. Пробежавшись по магазинам заводской системы не нашлось по разумной цене, поэтому решил "слепить из того что было".

А был кулер Igloo под  CPU Socket. Достав инструменты (напильник, шуруповер/дрель, комплект сверл, относительно прямые руки) я принялся за работу.

Снял систему охлаждения (с обратной стороны карты отстегиваем пружинки с крючков).

Удалил остатки старой термопасты (она тут иногда присыхает, будьте осторожны при отделении радиатора от ядра микросхемы). В данном случае, термопаста хорошо растворясь спиртом.


После чего были отвинчены обе крепежные скобки с крючками от радиатора.


Потом берем линейку и снимаем размеры с радиатора. А точнее кординаты ответстий под резьбу шурупов и расположение углублений в радиаторе под крепежные скобки. Наносим все это хозяйство на радиатор от Socket'a примеряем и снимаем лишний аллюминий напильником для создания углублений под крепежные скобки. Величина глубины их равна толшине металла скобки. 




Сверлим отверстия чуть меньшего диаметра чем винты и вбиваем винты (как гвозди молотком) в металл. Аллюминий металл мягкий поэтому винты хорошо войдут и закрепятся.


Скотчем изолируем скобки от коротких замыканий на деталях. И так как одной стороной радиатор ложиться на PCI-порты я ее тоже заизолировал скотчем (на всякий).

После прикручиваем/приклеиваем к радиатору вентилятор (я использовал крепление проволкой).


Примеряем, наносим термопасту и устанавливаем на карту. Получаем монстра :)


Ремонт занял примерно 2 часа, из которых 1,5 я вытачивал углубления и сверлил отверстия добиваясь точности и мучаясь без тисков. Если вы как и я промахнулись с первого раза с отверстием, то возмите кусочек аллюминевой проволки  и забейте его в отверстие, сняв напильником лишний металл.

Монстр был установлен в компьютер и работает уже 2 меясяца без нареканий. 



Температура по показанию драйвера от Nvidia X Server Setting под Linux составляет 54-60 градусов С.



суббота, 2 октября 2010 г.

QMMP - Music Player

Мне давно не нравилось использовать монстроидальные Rhythmbox и Amarok, особенно когда я вспоминал об XMMS2 который был в FreeBSD5.6. И вот недавно решил поискать аналог в Linux.
Самого XMMS я не нашел, но был найден Qmmp. Ставиться он из штатного репозитария. Поддерживает скины от WinAmp версии 2.x, расширение файлов .wsz (их большая коллекция тут: http://www.customize.org/winamp2/skins?page=1), которые надо просто положить в папку ~/.qmmp/skins   (то есть /home//.qmmp/skins).
Проблему с кодировкой кирилицы (если ваша коллекция пришла еще с windows времен) можно решить так, идем в Настройки (QMMP) - Модули - Модуль mpeg - Кодировка IDv2 и там ставим CP1251.

воскресенье, 26 сентября 2010 г.

LVM2 в ubuntu 10.04

Это очередная заметка из цикла "Пляски с бубном или очередной глюк Ubuntu 10.04.01". Все началось из-за необходимости перенести с HDD занятого Fedora необходимые данные. HDD содержал два раздела boot (etx4) и LVM (внутри которого сидели / и /home, оба в ext4).

Согласно статье было проделанно следующее:
1-установленна поддержка lvm
sudo apt-get install lvm2
2-загружен модуль ядра
sudo modprobe dm-mod
3-производим поиск LVM-разделов (lvm_group)
sudo vgscan
4-активируем LVM-раздел
sudo vgchange name_your_lvm_group
5-производим поиск логических разделов на активированном LVM
sudo lvs
6-монтируем нужные логические разделы из числа найденных
sudo mount /dev/name_your_lvm_group/name_logic_partition /mnt

Это конечно все хорошо, но после перезагрузки система вас обматерит из-за ошибки автомонтирования LVM. Чтобы этого не произошло надо согласно bug-report'у создать udev правило.

Для этого создаем файл /etc/udev/rules.d/85-lvm2.rules со следующим содержимым:
SUBSYSTEM=="block", ACTION=="add|change", ENV{ID_FS_TYPE}=="lvm*|LVM*", \
        RUN+="watershed sh -c '/sbin/lvm vgscan; /sbin/lvm vgchange -a y'"

В теории все. Помогло лично мне на системе Ubuntu 10.04.01 (2.6.32-24-generic)

суббота, 24 июля 2010 г.

Debian и FireFox

Как известно по умолчанию в Debian нет огнелиса, а есть его "аналог" Icewease. Но мне очень не нравился, поэтому погуглив я нашел как поставить любимою лисичку.

Все просто идем на mozilla.org и скачиваем последнюю версию браузера, после даем команды из каталога загрузки:

$ tar xjf firefox-*.tar.bz2

после чего переходим в режим rootа и от туда:

# mkdir /urs/local/applications
# cp firefox /usr/local/applications
# chmod /usr/local/applications
# cd /usr/local/applications
# find ./* | xargs chmod 0777
# ln -s /usr/local/applications/firefox/firefox /usr/bin/firefox

Теперь при вводе в консоле команды firefoх будет запущен браузер.

P.S.> Долго искал папку приложений в системе... Так и не нашел, поэтому плюнул и создал applications

четверг, 22 июля 2010 г.

Debian и Flash

Ну кучка браузеров у нас уже стоит... Надо бы еще и Flash прикрутить. Ну что же и это решаемо. Согласно ресурсу wiki.debian.org/FlashPlayer ставим репозитарий:

#deb http://www.backports.org/debian lenny-backports main contrib non-free

потом снова ключи:

#wget -O - http://backports.org/debian/archive.key | apt-key add -

обновляемся и ставим:

#apt-get update
#apt-get install flashplugin-nonfree
#/usr/sbin/update-flashplugin-nonfree --install

Все, теперь во всех браузерах flash работает.

среда, 21 июля 2010 г.

Debian и браузеры

Как известно по умолчанию Debian использует в качестве браузера Epiphany, а когда его вам не хватает, то в системе притаился клон FireFox'a браузер Iceweasel. Но моя работа связана иногда и с web-дизайном, поэтому мне их было мало. Да и не очень я жалую выше перечисленных. Поэтому решил поставить Google Chrome и Opera. Любимый же FireFox отложил пока...

Ставиться все просто. Для Opera согласно deb.opera.com подключаем репозитарий:

#deb http://deb.opera.com/opera/ lenny non-free

далее ставим его ключи:

#wget -O - http://deb.opera.com/archive.key | apt-key add -

после чего даем команду на установку:

#apt-get update
#apt-get install opera

Все... Opera стоит... :)
Приступим к установке Chrome. Согласно ресурсу www.google.com/linuxrepositories/apt.html установим репозитарий:

#deb http://dl.google.com/linux/deb/ stable non-free main

как всегда ключи:

#wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -

ну все ставим:

#apt-get update
#apt-get install google-chrome-stable

Все теперь у нас и Chrome есть...

вторник, 20 июля 2010 г.

Debian и NOKIA 6720c

Смартфон Nokia 6720c имеет хорошую функцию подключения к ПК в качестве стандартной флешки. И это прекрасно работает на Windows, но вот на Linux почему-то монтирование происходило в read-only. Чтобы это исправить я сделал следующее:

Дал команду:

#blkid

Она отобразит список устройств хранения данных, их файловых систем и идентификаторов.

/dev/sda1: TYPE="swap"
/dev/sda2: UUID="93f8bd62-b864-4b31-98bb-49434954be11" TYPE="reiserfs"
/dev/sda3: UUID="44ddd93c-ab44-4640-b306-3ff8aa5785ba" TYPE="reiserfs"
/dev/sdb1: LABEL="Memory card" UUID="EFED-4B1B" TYPE="vfat"

Вот он то (идентификатор) нам и нужен UUID="EFED-4B1B". Идем в /etc/fstab и добавляем строку:

UUID="EFED-4B1B"    /media/nokia    msdos    rw,utf8,noauto    0    0

Теперь в каталоге /media создаем каталог nokia с правами 0777. И все :)
Когда к ПК присоединиться смартфон, то он его опознает по идентификатору и присоединит в каталог nokia в режиме read-write.

P.S.> Так же моя личная рекомендация в fstab заменить все записи устройств (например /dev/sda1) на их идентификаторы. Плюс в том что если вы изменити порядок подключения винчестеров (ну мало ли при очередной чистке, отвлекетесь и поменяете местами шлейфы) загрузчик всеравно найдет нужный раздел.

понедельник, 19 июля 2010 г.

Debian и Nvidia

Поставил я тут недавно вместо Ubuntu Debian и теперь хотел установить видеокарту от Nvidia, которая недавно у меня появилась. Карта была старой GF5500FX, но мне должно было ее хватить, тем более нравилось ее пассивное охлаждение. Почистив ее от пыли и поменяв термопасту я установил ее. 

После загружки система "порадовала" меня режимом 800х600 24d 60Hz, что мне явно было не подуше (особенно из-за моего ЭЛТ монитора). Ладно подумал я и начал вводить команды:

user@pc$ su root
pc:# aptitude install module-assistant
pc:# module-assistant prepare
pc:# module-assistant update
pc:# module-assistant auto-install nvidia-kernel-source

Module-assistant сам выкачал нужные для установки пакеты (исходники и заголовочные файлы ядра) После устанавливаем следующие пакеты:

pc:# aptitude install nvidia-glx nvidia-settings nvidia-xconfig

и запустил автоматическую настройку X:
pc:# nvidia-xconfig

Перезапускаем X, либо перезагружаемся, и все должно заработать. Для более тонкой настройки можете набрать команду

pc:# nvidia-settings

Все... Осталось поправить /etc/X11/xorg.conf чтобы снова работала русская клавиатура:

Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us, ru"
Option "XkbOptions" "grp:alt_shift_toogle"
EndSection

Вот теперь все... Итог работы режим 1024x768 24d 85Hz :)

воскресенье, 11 июля 2010 г.

Проблема при формировании путей в Joomla

При переезде с одного хостинга на другой возникла такая ситуация. CMS Joomla неверно формировала пути, в частности это выражалось в неверных путях до изображений и неверном формировании тега base.

В интернете при этой ошибке часто рекомендуется исправить в файле head.php строку 66. А точнее заменить в ней $document->getbase() на JURL::base(). Но у меня это не сработало.

На одном забугорном сайте нашел что ситуация может возникать если параметр в php.ini cgi.fix_pathinfo = 1. Посмотрел в phpinfo() и правда. Т.к. была возможность сбросил его в 0. Теперь все работает.

info:
cgi.fix_pathinfo = boolean
Обеспечивает поддержку правильных PATH_INFO/PATH_TRANSLATED в CGI. Раньше PHP просто устанавливал PATH_TRANSLATED в SCRIPT_FILENAME и не обращал внимания на PATH_INFO. Для получения дополнительной информации о PATH_INFO, обратитесь к спецификации CGI. Установка этого значения в 1 заставит PHP CGI исправлять свой путь в соответствии со спецификацией. Значение 0 соответствует предыдущему поведению. По умолчанию установлен 0. Вы должны исправить свои скрипты так, чтобы они использовали SCRIPT_FILENAME вместо PATH_TRANSLATED.

суббота, 26 июня 2010 г.

Один жаркий день

Вот и закончился этот жаркий день. Он начался с очередного крестового похода на вирусы, а закончился весьма приятным подарком от руководства... :) В пользование мне был выделен смартфон Nokia 6720c, поэтому очень скоро будет обзор... Я конечно и без него хорошо к руководству относился, но все-таки очень приятно когда руководство тебя ценит, это придает новые силы... особенно сейчас когда я ослаблен после сессии...

воскресенье, 20 июня 2010 г.

Привет Черти!

Привет мой читатель... выкраивая время между работой и сессией, я напишу эту новость... Примерно в конце мая Linux-дистрибутив Ubuntu перешел на версию 10.04. Скажу честно я её ждал и думал что система станет лучше... Но корпорация сохранила "интернет-социальное" направление взятое в 9.10 и сделала еще больший закос под MacOSX...
Ни фига не поменялось - подумал я, когда обновил свой рабочий ноутбук - но жить все еще можно. Хотя на то чтобы привыкнуть к другому расположению кнопок управления окном потребовалось время. Решил обновить (а куда деваться) домашнюю станцию. И вот тут началось... Добрая половина программ стала давать сбои: FireFox перестал открываться вообще, VirtualBox - после переустановки потерял все машины, а после ручного их подключения стал потреблять 100% по процессору и вешать напрочь интерфейс хост-системы... и многое, многое другое...
Понятно что чистая установка решила бы часть или все возникшие проблемы, но простите, где же хваленая стабильность *nix-систем? И что где гарантии что при переходе на 10.10 не придется снова все переустанавливать? 
Поэтому я решил найти более подходящую мне платформу и основное мое требование: стабильность + безопасность. Ведь по сути совсем не важно на какой ОС вы сидите, важно что с помощью ее вы можете работать, а не вечно ее ремонтировать.
Именно поэтому были выбраны дистрибутивы FreeBSD, Debian, CentOS, Slackware, Gentoo и ее сын Calculate.
Debian имел неоспоримые плюсы в лице "близкого родства" к Ubuntu и общирной пакетной базы. Но все это сошло на нет после его установки... их полная ориентированность на OpenSource надоедает.
CentOS это RedHat и этим все сказано... Хоть исторически и сложилось так что их дистрибутивы наиболее распространены в России, но мне они не нравятся... :) 
Slackware самый консервативный дистрибутив чем он мог мне прекрасно подойти, но так как время поджимало и руки до не не дошли :(
Gentoo прекрасная система для сборки Linux под себя... но временной фактор и тут сыграл против как и с предыдущим кандидатом...

FreeBSD это чистый консервативный Unix. О какой либо дружественности к пользователю нет и речи. Но ее существенный плюс центролизированная система разработки.К тому же я уже был поверхностно знаком с системой и имел опыт 1 гола жизни под ней... К тому именно с нее начался мой путь мир Unix. Так что записав ее 8 версию на DVD я проинсталировал ее и как не странно "доволен как слон"... :)

P.S.:Так ведь и пришлось соскочить с FreeBSD. Все в ней хорошо, только встала тут проблема витуализации, а с этим на BDS не очень дело обстоит. Есть тут только VirtualBox, а он уже имеет  ряд косяков на моей памяти... Поэтому временно переходим на Debian.

воскресенье, 13 июня 2010 г.

Пакетная обработка файлов

Довольно часто надо сменить права или владельца у кучи файлов, в этом вам помогут следующие команды:

Меняем владельца
find ./* | sudo xargs chown user:group

Найдет только файлы и сменит владельца
find ./* -type f | sudo xargs chown user:group

Найдет только файлы и сменит права
find ./* -type d | sudo xargs chmod 0755

воскресенье, 9 мая 2010 г.

VirtualBox Service

Привет всем, сегодня я расскажу как заставить VirtualBox стартовать в качестве службы на Windows и корректно запускать и останавливать виртуальные машины без входа пользователя в систему.

Для этого нам понадобиться скачать и установить последний Virtual Box (выше 3.х), установка производиться по умолчанию (т.е. полная конфигурация).

Создать на диске С: (вообще можно на любом диске все это творить, просто исправьте потом пути) папки vbox\vdi и vbox\machines.

Теперь запустим VitualBox и настроим его. Файл - Настройка  там правим пути Папка для жестких дисков C:\vbox\vdi, Папка для машин C:\vbox\machines. Сохраняем, ставим обычным образом виртуальные машины или импортируем их. Закрываем VirtualBox.

Скачиваем проект http://sourceforge.net/projects/vboxvmservice/ и распаковать его файлы в папку C:\vbox\vms.

Для своей работы проект запрашивает:
- Microsoft Windows 2003 Resource Kit Tools
- Microsoft Visual C++ Runtime (version 2005 or later)
- Microsoft Dotnet Framework 2.0
поэтому их придется поставить после этого надо изменить файл конфигурации C:\vbox\vms\VBoxVmService.ini

[Settings]
ServiceName=VBoxVmService
PathToVBoxSDL=C:\Program Files\Sun\VirtualBox\VBoxSDL.exe
PathToVBoxHeadless=C:\Program Files\Sun\VirtualBox\VBoxHeadless.exe
PathToVBoxManage=C:\Program Files\Sun\VirtualBox\VBoxManage.exe
VBOX_USER_HOME=C:\WINDOWS\system32\config\systemprofile\.VirtualBox
[Vm0]
VmName=UbuntuServer
CommandLineUp=E:\vbox\vms\startup.exe 0 BRUTEFORCE
CommandLineDown=E:\vbox\vms\shutdown.exe 0
WorkingDir=E:\vbox\vms
StartupMethod=vrdp
ShutdownMethod=savestate
VrdpPort=3001

имена машин можно узнать дав в консоле команду:
"C:\Program Files\Sun\VirtualBox\VBoxManage.exe" -list vms

Далее необходимо создать жесткую ссыдку на xml-файл с конфигурацией машин:
fsutil hardlink create "%windir%\System32\config\systemprofile\.VirtualBox\VirtualBox.xml" "%userprofile%\.VirtualBox\VirtualBox.xml"

Все, теперь ставим службу VBoxVmService:
 C:\vbox\vms\VBoxVmService.exe -i

(удалить службу можно ключом -u)

Теперь  идем в Пуск - Администрирование - Службы и ставим тип запуска нашей службы в Авто.

Собственно все. Теперь машины будут подниматься автоматом до входа пользователя.

Добавлено 11.05.2010:
При разворачивании службы на Windows 2003 стокнулся с проблемами:
1. Не удается  создать папки начинающиеся на ".", решилось копированием папки ".VirtualBox" из профиля пользователя в нужную папку, с последующей ее очисткой и созданием ссылки.
2. Служба не находила VirtualBox.xml, поэтому не могла запустить виртуальную машину. Решил созданием жесткой ссылки в "C:\Document and Settings\Default User\.VirtualBox".
3. И самое обидное VirtualBox некорректно работает на сетевых картах в тиминге.

среда, 28 апреля 2010 г.

Samba + Active Directory как член домена (часть 1)

Вот недавно поставил себе на рабочую машину Ubuntu 9.10 и решил ввести ее в домен.



Установить пакеты:
apt-get install krb5-user, libpam-krb5

Коннфигурируем Kerberos:
/etc/krb5.conf
#---------------------------------------
[libdefaults]
default_realm = NB.DOMAIN
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
[realms]
NB.DOMAIN = {
kdc = 192.168.0.10
admin_server = 192.168.0.10
dafault_domain = nb.domain
}
[domain_realm]
.nb.domain = NB.DOMAIN
nb.domain = NB.DOMAIN
[login]
krb4_convert = true
krb4_get_tickets = false
[pam]
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
clock_skew = 300
[logging]
default = FILE:/var/log/krb5.log
[kdc]
profile = /var/lib/kerberos/krb5kdc/kdc.conf
#---------------------------------------
Получаем билет:
kinit domainadmin@NB.DOMAIN

Проверяем наличие билета:
klist

Конфигурируем hosts:
/etc/hosts
#---------------------------------------
192.168.0.10 pdc.nb.domain
#---------------------------------------

Ставим Samba:
apt-get install samba, winbind, smbfs

Конфигурируем Samba:
/etc/samba/smb.conf
#---------------------------------------
[global]
workgroup = NB
netbios name = CLIENT
server string = Client
password server = pdc.nb.domain
realm = NB.DOMAIN
security = ads
local master = no
domain master = no
preferred master = no
os level = 0
socket options = SO_RCVBUF=65535 SO_SNDBUF=65535 TCP_NODELAY

log file = /var/log/samba/log.%m
debug level = 2
max log size = 50

#interfaces = 192.168.0.10/255.255.255.0
#hosts allow = 192.168.0. 127.0.0.1
encrypt passwords = yes
null passwords = no
idmap uid = 10000-20000
idmap gid = 10000-20000

wins proxy = no
wins server = 192.168.0.10
dns proxy = no
auth methods = winbind
winbind uid = 10000-20000
winbind use default domain =yes
winbind enum groups = yes
winbind enum users = yes
winbind gid = 10000-20000
winbind use default domain = yes
name resolve order = hosts wins bcast lmhosts
case sensitive = no
client use spnego = yes
use spnego = yes
client signing = yes

template homedir = /home/%D/%U
template shell = /bin/bash

# Charset settings
display charset = utf-8
unix charset = utf-8
dos charset = cp866

# Use extended attributes to store file modes
store dos attributes = yes
map hidden = yes
map system = yes
map archive = yes

# Use inherited ACLs for directories
nt acl support = yes
inherit acls = yes
map acl inherit = yes
#---------------------------------------

Проверяем конфиг
testparm

Перезапускаем службы:
service samba restart
service winbind restart

Подключаемся к домену
net ads join -S pdc.nb.domain -U domainadmin

Просмотр групп домена
wbinfo -g

Просмотр пользователей домена
wbinfo -u

понедельник, 12 апреля 2010 г.

(Не)поддельный мир...

Сегодня решил все-таки залезть в свои наушники DEFENDER HN875 и посмотреть что там не так и из-за чего звук идет только из левого динамика. И не поверил своим глазам, когда увидел там изоляцию из куска малярного скотча, который предохранял от КЗ линию микрофона. Да и сами динамики это вообще отдельная песня... их диаметр примерно 30 мм без опознавательных знаков, да и по внешнему виду ватт на 0,5... В общем г*, а не наушники. Брать не советую...

четверг, 8 апреля 2010 г.

Пакетное изменение размеров изображений в Linux

Часто при работе с web сайтами возникает задача массированной загрузки изображений в определенном разрешении. Для конвертации N файлов в нужное разрешение вам может помочь утилита convert из пакета ImageMagic (http://www.imagemagick.org). Для исполнения пакетного задания наберите команду:

find ./ -name "*.JPG" -exec convert {} -quality 85 -resize 450\>x350\> {} \;

 что означает перевести все изображения (точнее все файлы с расширением .JPG) в текущей директории в разрешение 450 пикселов по ширине и 350 пикселов в высоту, с качеством 85 от исходного. При выполнении команды утилита пропорционально изменит изображение.

пятница, 19 марта 2010 г.

Долой iFolder!...

17 марта 2010 года в помещении дата-центра, находящегося по адресу 2-ая ул. Энтузиастов д. 5, появились следователи из 3-й СЧ ГСУ при ГУВД Москвы. Они предъявили постановление о необходимости проведения оперативно-розыскных мероприятий с целью поиска улик, размещенных на сайте iFolder.ru
Администрация сервиса предложила сотрудникам оказать максимальное содействие в поиске и получении нужной информации, а также в установлении личности пользователя, который ее разместил. Однако сотрудники милиции отказались от любой помощи и попытались вывезти ВСЕ оборудование Агавы, размещенное в этом дата-центре, для проведения собственной экспертизы. В результате переговоров вывоз оборудования удалось предотвратить, но, к сожалению, в качестве «альтернативы» сотрудники МВД выключили и опечатали все сервера проекта iFolder, а также ряд серверов, которые не имели отношения к iFolder и использовались компанией для внутренних нужд.


Все остальные сервисы компании, в том числе виртуальный хостинг, функционируют в обычном режиме.
Компания Агава считает произошедшее беспрецедентным событием, которое ставит под угрозу существование и развитие любого бизнеса в Рунете. Мы намерены отстаивать интересы сервиса и его клиентов, а также заранее благодарим клиентов за информационную или любую другую помощь в этом деле.

Источник: http://agava.ru/press/143.shtml 

четверг, 11 марта 2010 г.

Кремневый язык или ассемблер i8080

В микропроцессоре КР580ИК80А программно-доступными являются 8-битовые регистры A,B,C,D,E,H,L; 16-битовые - слово состояния PSW (регистры А и F), пары регистров B,D,H, обозначаемые по первому регистру пары BC,DE,HL соответственно, указатель стека SP и программный счетчик РС, а также отдельные признаки рeгистра F (см.рис.5).
Система команд микропроцессора содержит 78 команд и может быть разбита на следующие группы:
  1. группа команд пересылки, осуществляющих передачу информации между регистрами (11 команд);
  2. группа арифметических команд (14 команд);
  3. группа логических команд (15 команд);
  4. группа команд передачи управления (29 команд);
  5. группа команд работы со стеком, ввода-вывода и управления регистрами процессора (9 команд);
Список всех команд процессора приведен в следующих таблицах:




В этих таблицах точно есть опечаки будьте осторожны, однако именно эти таблицы самые информативные. Я засек следующие опечатки:
MOV D, B  58 вместо 50
MOV D, C 59 вместо 51
MOV D, D  5A вместо 52
MOV D, E  5B вместо 53
MOV D, H  5C вместо 54
MOV D, L  5D вместо 55

В дополнение к посту вот ссылки на:
Описание Ассемблера КР580ВМ80А:  assembler.rar
Описание ЦПУ КР580ВМ80А и i8080: processor8080.rar
                                                                 KP580BM80A.pdf


вторник, 2 марта 2010 г.

Сердце Спеца

Не много разобравшись с делами решил написать еще пост о ПК Специалист.

Итак давайте подробнее присмотримся к сердцу ПК Специалист. В базовой конструкции там стоит КР580ВМ80А (i8080 made in USSR).  Штатная тактовая частота для процессора К580ИК80А — 2 МГц, для КР580ИК80А и КР580ВМ80А — до 2,5 МГц (теоретически позволял работать на более высокой частоте). Каждая команда выполняется за 1..5 машинных циклов, каждый из которых состоит из 3..5 тактов. Таким образом средняя производительность оценивается на уровне 200..300 тыс. оп/c на частоте 2 МГц.

Микропроцессор имел раздельные 16-разрядную шину адреса и 8-разрядную шину данных. 16-разрядная шина адреса обеспечивает прямую адресацию внешней памяти объёмом до 64 Кбайт и 256 устройств ввода/вывода.


 Условное графическое обозначение микросхемы 
процессора КР850ВМ80А



 Восьмиразрядное арифметико-логическое устройство микропроцессора выполняет арифметические и логические операции над двоичными числами, представленными в дополнительном коде, а также обработку двоично-десятичных упакованных чисел.
     В состав блока регистров входят:
  • 16-разрядный регистр адреса команды (IP),
  • 16-разрядный регистр указателя стека (SP),
  • 16-разрядный регистр временного хранения (WZ) програмно недоступный,
  • 16-разрядная схема инкремента-декремента,
  • шесть 8-разрядных регистров общего назначения (В, С, D, Е, Н, L), которые могут использоваться и как три 16-разрядных регистра (ВС, DE, HL).
 Структурная схема микропроцессора 
КР850ВМ80А

Микропроцессор выполняет команды по машинным циклам. Число циклов, необходимое для выполнения команды, зависит от ее типа и может быть от одного до пяти. Машинные циклы выполняются по машинным тактам. Число тактов в цикле определяется кодом выполняемой команды и может быть от трех до пяти. Длительность такта равна периоду тактовой частоты и при частоте 2,0 МГц составляет 500 наносекунд.

Диаграмма состояний типичного машинного цикла


В начале каждого машинного цикла микропроцессор вырабатывает сигнал синхронизации SYN, который в сочетании с другими сигналами может быть использован для организации различных режимов работы процессора.
     На рисунке 3 показана диаграмма состояний типичного машинного цикла, показывающая последовательность перехода от такта к такту в машинном цикле и влияние внешних сигналов RDY, HLD и INТ на его выполнение. После подачи на вывод SR сигнала высокого уровня микропроцессор устанавливается в исходное состояние.
     В такте Т1 микропроцессор выдает на адресный канал адрес ячейки, в которой хранится команда программы, а через канал данных - информацию состояния. В такте Т2 анализируются состояния сигналов на входе RDY, "Подтверждение останова", и в зависимости от состояния этих сигналов микропроцессор переходит в состояние ожидания, останова или приступает к выполнению такта Т3. В такте Т3 при наличии сигнала высокого уровня на входе RDV микропроцессор принимает информацию по каналу данных, анализирует состояние сигнала на входе HLD, и если этот сигнал высокого уровня, то после окончания такта Т3 переходит в состояние захвата. В зависимости от кода выполняемой команды машинный цикл завершается после выполнения тактов Т3, Т4 или Т5.
     В конце машинного цикла снова анализируется состояние сигнала на входе HLD. При низком уровне сигнала проверяется, окончено ли выполнение команды. Если команда не закончена, то микропроцессор выполняет следующий машинный цикл команды, начиная с такта Т1. В конце каждой команды микропроцессор анализирует состояние сигнала на входе INT. Если сигнал высокого уровня и прерывание ранее было разрешено командой EI, то микропроцессор переходит к выполнению машинного цикла "Прерывание", начиная с такта Т1. В противном случае первый машинный цикл новой команды начинается с такта Т1.
     Действия, выполняемые микропроцессором в конкретном машинном цикле, определяются 8-разрядной информацией состояния, которая выдается через канал данных в такте Т1 каждого машинного цикла. Эта информация может использоваться для выработки сигналов обращения к микросхемам памяти, устройствам ввода/вывода и для организации различных режимов работы микропроцессора.
     В зависимости от сочетания сигналов состояния, выдаваемых в конкретном цикле, машинные циклы можно разделить на 10 типов:
     1. Цикл М1 - прием первого байта команды в регистр команд.
     2. Цикл чтения ЗУ (запоминающего устройства) по содержимому программного счетчика или содержимому одного из регистров ВС, DE, HL.
     3. Цикл записи в ЗУ - запись в ЗУ по содержимому одного из регистров ВС, DE, HL.
     4. Цикл чтения стека - чтение ЗУ по содержимому указателя стека.
     5. Цикл записи в стек - запись в ЗУ по содержимому указателя стека.
     6. Цикл ввода - ввод информации в регистр результата (аккумулятор) из внешнего устройства.
     7. Цикл вывода - вывод информации из регистра результата во внешнее устройство.
     8. Цикл прерывания - прием кода команды RST или CALL из контроллера прерываний.
     9. Цикл останова.
     10. Цикл прерывания при останове - прием кода команды RST или CALL при выводе микропроцессора из режима "Останов" по прерыванию.

     Наименования сигналов состояния, соответствие их разрядам канала данных и тактам машинных циклов приведены в таблице


При выполнении команд микропроцессор может переходить в одно из трех состояний: "ожидание", "захват" или "останов", длительность которых определяется внешними управляющими сигналами.
     Сигнал высокого уровня на входе RDY обеспечивает автоматическое выполнение команд программы микропроцессором с частотой тактовых сигналов. Если на выводе RDY установлен сигнал низкого уровня, то микропроцессор переходит в режим "Ожидание" и формирует выходной сигнал WI высокого уровня.
     Сигнал RDY может быть использован для согласования работы микропроцессора с работой медленно действующих устройств, если длительность их цикла обращения составляет более одного периода тактовой частоты, а также для организации пошагового (по циклам) выполнения команды или покомандного выполнения программы.
     При подаче на вход HLD сигнала высокого уровня микропроцессор переходит в состояние "захват" и подтверждает переход в это состояние формированием сигнала высокого уровня на выходе HLDA.
     Буферные схемы канала адреса и данных микропроцессора переключаются в высокоомное (высокоимпедансное) состояние, а выходные управляющие сигналы - в состояние низкого уровня (за исключением сигналов TR и HLDA). Микропроцессор переходит в состояние "захват" в такте Т3, если выполняется цикл чтения и на входе RDY сигнал высокого уровня, и в такте, следующем за Т3, если выполняется цикл записи. Сигналы HLD и HLDA позволяют организовать режим прямого доступа к памяти для любого внешнего устройства, формирующего сигнал HLD.
     При выполнении команды HLT микропроцессор переходит в состояние "останов" и переводит буферные схемы канала адреса и данных в высокоомное состояние. Из состояния "останов" микропроцессор выходит при наличии сигнала высокого уровня на одном из его входов:
  • на входе SR - микропроцессор начинает работать с такта Т1 цикла М1;
  • на входе HLD - микропроцессор переходит в состояние "захват", а после перехода сигнала HLD на низкий уровень возвращается в состояние "останов";
  • на входе INT - микропроцессор переходит к выполнению цикла прерывания при останове с такта Т1, если команде HLT предшествовала команда EI "разрешение прерывания", иначе он остается в состоянии "останов".
     Сигнал высокого уровня на выводе INT позволяет прерывать выполнение текущей программы и переводить микропроцессор на выполнение подпрограммы обслуживания устройства, выдавшего запрос прерывания (например, часов). При поступлении сигнала INT микропроцессор (после окончания текущей команды) переходит с такта Т1 к выполнению машинного цикла "Прерывание" в том случае, если прерывание было разрешено ранее командой EI. При выполнении цикла "Прерывание" в такте Т1 микропроцессор выдает по шине данных сигнал состояния "Подтверждение прерывания". По окончании подпрограммы прерывания происходит возврат к прерванной программе.
     Сигнал высокого уровня на входе SR (длительность которого должна быть не менее трех периодов тактовой частоты) устанавливает микропроцессор в исходное состояние: триггеры разрешения прерывания и захвата, регистры команд, признаков и адреса команды устанавливаются в нулевое состояние. После окончания действия сигнала SR микропроцессор производит первое обращение за чтением команды к ячейке памяти по адресу 0000Н.
     Система команд микропроцессора состоит из 78 базовых команд, которые можно разделить на пять групп:
  • команды передачи данных - используются для передачи данных из регистра в регистр, из регистра в память;
  • арифметические команды - используются для сложения, вычитания, инкремента или декремента содержимого регистров или ячейки памяти;
  • логические команды - И, ИЛИ, сравнение, сдвиги;
  • команды переходов - используются для условных или безусловных переходов, вызова подпрограмм и возврата из них;
  • команды управления, ввода/вывода и работы со стеком - используются для управления регистром признаков, ввода и вывода информации.
     В микропроцессоре КР580ВМ80А принят формат информационного слова, представляющего собой 8-разрядное двоичное слово (байт) Формат информационного слова (данных):
D7    D6    D5    D4    D3    D2    D1    DO,
где D7 - старший разряд слова, а D0 - младший. Отрицательные числа хранятся в памяти в дополнительном коде.

Формат команды зависит от типа операции - может быть одно-, двух- и трехбайтовым. Байты двух- и трехбайтовых команд должны храниться в ячейках памяти, следующих одна за другой. Операнды команд могут храниться в программно доступных регистрах микропроцессора или памяти. Для указания операнда в регистре используются регистровая и регистровая неявная адресации, для указания операнда в памяти - непосредственная, прямая, косвенная регистровая и стековая адресации.

Регистр признаков микропроцессора используется для хранения пяти битов признаков, которые вырабатываются в результате выполнения некоторых операций:
  • S - бит знака; равен 1, если старший значащий разряд результата операции равен 1 (то есть результат операции - отрицательное число);
  • Z - бит нуля; равен 1, если результат операции равен нулю;
  • АС - бит вспомогательного переноса; равен 1, если при выполнении операции был перенос из третьего разряда сумматора в четвертый;
  • С - бит переноса; равен 1, если при выполнении операции был перенос из седьмого разряда сумматора или заем в седьмой разряд сумматора;
  • Р - бит четности; равен 1, если число единиц результата четное.
     Распределение разрядов в регистре признаков следующее:
D7D6D5D4D3D2D1D0
SZ0АС0Р1С

Особенности KP580BM80A

Так же, как и предшественник 580ИК80, процессор требовал трех источников питания: −5В, +12В и +5В, но прекрасно работал от одного +5В при подаче +5В вместо +12В и земли вместо −5В. Для выработки тактовых сигналов по спецификации рекомендовалось применять внешнюю микросхему КР580ГФ24.

КР580ВМ80А имеет 12 недокументированных команд (аналогично 8080). Опкоды #08, #10, #18, #20, #28, #30, #38 являются аналогами операции NOP; опкод #CB является аналогом JMP; опкоды #DD, #ED, #FD являются аналогами CALL; опкод #D9 является аналогом RET. Существует информация, что КР580ВМ80А отличался от зарубежного оригинала i8080 наличием двух дополнительных недокументированных команд (тем не менее задействованных в некоторых компьютерах на базе этого чипа, в частности в ПК Вектор-06Ц). Однако, помимо перечисленных выше кодов операций, все остальные операции задокументированы, больше свободных кодов нет.


Подготовленно по материалам: http://ru.wikipedia.org и http://junetech.chat.ru

воскресенье, 21 февраля 2010 г.

Специалист придет...

Пока выдалась минутка отдыха, т.к. ставиться на виртуалку Delphi (как я его не люблю... ну почему в универе он нужен?..), напишу пост.
Так уж получается что к БК "Специалист" я все время возвращаюсь ближе к весне, вот и в этот раз так получается... :)

Итак мой проект "воскрешения" Специалиста выходит из стадии заморозки. Проект не является основным, поэтому сразу не обещаю быстрого прогресса. Первая моя задача будет создать эмулятор платформы i8080 под ОС Ubuntu, т.к. пока ничего не нашел.

Эмулятор планирую сделать модульным. Т.е. ЦПУ, ОЗУ и т.д. были разными модулями, тогда и проще разрабатывать будет и поддерживать. В свете сказанного скоро будет несколько постов о процессоре КР580ВМ80А.

пятница, 19 февраля 2010 г.

Русский man

Часто новичкам в Linux приходиться сталкиваться с справочной системой man. И если для англоговорящего пользователя система сразу открывает все тайны, то русскоговорящим приходиться дела дополнительные телодвижения для перевода информации.


Видимо таких лентяев, не желающих учить буржуйский язык, набралось не мало, поэтому и был создан пакет: manpages-ru. Он переводит часть системы man на родной и могучий :) 



четверг, 18 февраля 2010 г.

Восстановление меню Приложения

Эх давненько я сюда не писал... Все как-то навалилось в один миг... Но вот сегодня решил законспектировать один момент, чтобы самому по Google не лазить.

Часто после экспериментов с аплетом Система-Параметры-Главное меню у меня пропадает меню Приложения, для их восстановления можно применить команду.

rm -f ~/.config/menus/applications.menu

Ну на сегодня хватить сон меня сморил... В следующий раз будет интересней, готовиться статья про XMPP сервер OpenFire, VirtualBox Service и VboxWebConsole, а также win-mail сервер hMailServer.

среда, 6 января 2010 г.

P.S. года и планы на будущее....

Вот уже и заканчиваются все праздники и люди просыпаются, и убирают остатки салатов, и осыпавшиеся ели... Скоро снова наступят будни и в появившиеся время хочется подвести итоги года и помечтать о будущем.

Прошедший 2009 был... был... разным. В нем было много радости и слез, много побед и поражений. А что касается блога, то он как зеркало моей души также менялся вместе со мной. Из приятного хочется отметить то, что нам (блогу kosmoflyko.blogspot.com) исполнилось 2 года. И еще хочется сказать большое спасибо всем кто меня читал постоянно или изредка, кто забегал с поисковых запросов, и большое спасибо корпорации Google за платформу и прекрасную индексацию ресурсов.

Что касается планов на будущее... То что ресурс будет существовать и в преть это безусловно, т.к. он не раз и не два доказал свою полезность прежде всего для меня самого. Настраивая или исправляя проблемы с чем либо, я часто обращался к "своей электронной памяти" и она мне помогала.

Что будет публиковаться дальше? Все... все что интересно мне, но только в другой форме. В форме готовых советов и по возможности максимальных комментариях, того что и для чего "крутить". Если касаться тем, то скорее всего это будут:
- Windows и Windows Server (т.к. это связанно с текущей работой),
- Ubuntu Linux Desktop и Server (т.к. это связанно с домашними проектами),
- возможно будет затронуты BSD семейство: FreeBSD, OpenBSD...
- материалы по Web и программированию (т.к. это связанно с личными интересами),
- статьи по электронике и CAD (т.с. для души),
- различные идеи и мысли о технике,
- и конечно восстанет из пепла проект БК Специалист.
Также планируется перебор и чистка старых постов, особенно личных. Еще хотелось бы, чтобы "руки все-таки дошли" и была переделана структура блога и навигация в нем. Планов много, так что будет интересно заглядывайте иногда...

Всего хорошего Вам. С Новым Годом и Рождеством!
Администратор kosmoflyko.