Category Archives: Uncategorized

simple progress bar in bash script

Example of a simple progress bar in bash script:

#!/bin/bash

PAGELOADS=30000;
PBAR_LEN=30;
PBAR_STEP=$[$PAGELOADS/$PBAR_LEN]

for i in `seq 1 $PAGELOADS`
do
fname="`date +%F-%T`.html"
time wget http://site/page -O $fname >> .log 2>>.log
cat $fname | grep NATURE > /dev/null && rm $fname
sleep 1

#simple progress bar for fun:
clear;
PBAR=$[$i/$PBAR_STEP]
echo -n "[";
for j in `seq 1 $PBAR_LEN`
do
if [ $j -gt $PBAR ]; then
echo -n ".";
else
echo -n "*";
fi
done
echo "] [$i/$PAGELOADS]";

done

update: Debian 5 (lenny) -> Debian 6 (squeeze)

0.
/etc/apt/apt.conf:
APT::Install-Recommends "false";

1. Create backup:
tar -vcpzf /home/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/home --exclude=/mnt --exclude=/sys --exclude /var/cache/apt/archives /

dpkg –get-selections “*” > /root/dpkg_list.txt

2.
apt-get purge splashy
aptitude
dpkg --audit; aptitude search "~ahold" | grep "^.h"; dpkg --get-selections | grep hold
dpkg -l | pager;

/etc/apt/sources.list:
deb http://ftp.ru.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.ru.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main non-free contrib
deb-src http://security.debian.org/ squeeze/updates main non-free contrib

script -t 2>~/upgrade-squeeze.time -a ~/upgrade-squeeze.script

3.
apt-get update
apt-get -o APT::Get::Trivial-Only=true dist-upgrade
# apt-get install proftpd-basic nginx postfix
# apt-get install apache2 apache2-mpm-prefork apache2.2-common apache2-suexec-custom
### update custom suexec
apt-get upgrade
### update /etc/suphp/suphp.conf
apt-get install linux-image-2.6-686-bigmem udev firmware-linux
apt-get dist-upgrade

### update /etc/conf.d:
### iptables.srv, nginx, apache2
### dpkg-reconfigure sysv-rc

update: Debian 4 etch -> 5 lenny

http://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.ru.html

0.
It is reccomended to mount disks by UUID.
Several ways to get UUID info.
$ ls -l /dev/disk/by-uuid
more trustworthy info:
$ blkid /dev/sda6
output example:
/dev/sda6: UUID="bdddb5e7-04d0-4ae1-86be-aef5ade3b6a6" SEC_TYPE="ext2" TYPE="ext3"
Edit /boot/grub/menu.lst:
# kopt=root=/dev/hda6 ro
should be changed to:
# kopt=root=UUID=bdddb5e7-04d0-4ae1-86be-aef5ade3b6a6 ro
update-grub
Edit /etc/fstab. Example:
/dev/hda6 / ext3 defaults,errors=remount-ro 0 1
should be changed to:
UUID=bdddb5e7-04d0-4ae1-86be-aef5ade3b6a6 / ext3 defaults,errors=remount-ro 0 1

Do not forget about possibility of nic rename by udev.
/etc/udev/rules.d/70_persistent-net.rules

1. Create backup:
tar -vcpzf /home/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/home --exclude=/mnt --exclude=/sys --exclude /var/cache/apt/archives /

2.
Make sure etch is updated.
Check for unfinished business: aptitude, g.
Check: /etc/apt/preferences/.
dpkg --audit
aptitude search "~ahold" | grep "^.h"
dpkg --get-selections | grep hold

edit /etc/apt/sources.list:
deb http://mirror.yandex.ru/debian/ lenny main
deb-src http://mirror.yandex.ru/debian/ lenny main
deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main
deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main

3.
script -t 2>~/upgrade-lenny.time -a ~/upgrade-lenny.script
aptitude update
aptitude -y -s -f --with-recommends dist-upgrade
aptitude install aptitude apt dpkg
aptitude search "?false"

optional step, specific for webhosting server:
aptitude install proftpd nginx
aptitude install postfix
aptitude install apache2 apache2-mpm-prefork apache2.2-common apache2-suexec-custom
update custom suexec
copy new cgi: php5.2.latest and php5.3.latest

aptitude safe-upgrade
aptitude dist-upgrade
dpkg -l "linux-image*" | grep ^ii

4.
Rebuild perl modules
cpan

php curl post example

#!/usr/bin/php
<?php

$login = “login:pass”;
$url = “http://url”;
$post_fields = array(‘param1’ => ‘value1’);

$useragent = “Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB7.1”;

$ch = curl_init();
$fp = fopen(“out.txt”, “w”);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_USERPWD, $login);
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>

Виртуализация Intel

Виртулизация без аппаратной поддержки

Что делает VMM
• Эмулирует аппаратную платформу каждой ВМ
• Распределяет ресурсы
• Изолирует выполнение кода каждой ВМ
Трудности программной виртуализации
• Сложность
– Требуется бинарная трансляция или паравиртуализация
– Программная эмуляция устройств ввода-вывода
• Производительность
– Цена за «промахи» и виртуализацию страниц памяти
– Требуется дополнительная память
– Операции ввода-вывода проходят через два стека
• Функциональность
– Паравиртуализация ограничивает гостевые ОС
– Гостевые ОС видят эмулированную платформу
• Надёжность
– Драйверы устройств являются частью хостовой ОС
– Нет защиты от ошибочных DMA

Описание Intel VT-x
• Создаёт привелегированное пространство VMM
• Позволяет сократить объём и сложность кода VMM
• Повышает эффективность за счёт снижения числа программных трансляций
• Гостевые ОС пользуются «живой» аппаратной платформой
• На рынке с 2005 года во всех сегментах

Intel® VT это
• Несколько поколений оптимизаций и новых технологий для виртуализации
• Дополнения к существующим программным решениям виртуализации
• Фундамент для будущих платформ
• Аппаратная поддержка решений
– Снижающая сложность и стоимость
– Повышающая эффективность и функциональность

Производительность
• Причина: выход из ОС в VMM
– Доступ к привелегированному состоянию ЦП
– Виртуализация прерываний
– Виртуализация страниц памяти
– Доступ к устройствам ввода/вывода
• Цена события
– Количество циклов ЦП
– Время, затраченное обработчиком события
– Специфика микроархитектуры (промахи кэша)
• Оптимизация
– Уменьшить число штрафных событий
– Уменьшить стоимость штрафных событий

Заключение
• Виртуализация – не абстрактная концепция, но реальность сегодняшнего дня
• Абсолютное большинство выпускаемых процессоров поддерживают аппаратную технологию виртуализации
• Виртуализация 2.0 на стадии внедрения
• Дальнейшее развитие в поле повышения гибкости и производительности в виртуализованной среде на уровне всей вычислительной платформы
• Новые концепции использования виртуализации в сегменте настольных компьютеров

Gentoo: installation process short info

-1. livecd (6.1) у меня не находил ‘cdrom’ из-за отсутствия поддержки jmicron’овского контроллера
solution: gentoo all-generic-ide

0. fdisk’ом бьём диск как нужно и если нужно

1. форматируем разделы:
mke2fs (на boot);
mkswap и затем swapon;
mke2fs -j, mkreiserfs;
затем маунтим их в /mnt/gentoo

2. настраиваем сеть
ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up
route add default gw ${GATEWAY}
прописываем “nameserver ${NAMESERVER1}” в /etc/resolv.conf

3. date в UTC

4.
tar xvjpf stage3-*.tar.bz2 в /mnt/gentoo
// wget http://gentoo.mirrors.easynews.com/linux/gentoo/snapshots/portage-latest.tar.bz2 -C /mnt/gentoo/usr
mount -t proc none /mnt/gentoo/proc && mount -o bind /dev /mnt/gentoo/dev
// cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile

5.
// mkdir -p /etc/portage
// echo “sys-libs/glibc nptl nptlonly” >> /etc/portage/package.use
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/… /etc/localtime
tzselect

6. поправить конфиги если нужно:
/etc/conf.d/hostname
/etc/conf.d/clock
/etc/locale.gen
/etc/conf.d/keymaps
/etc/rc.conf
/etc/hosts

7. правим /etc/make.conf
флаги для процессора берём отсюда http://gentoo-wiki.com/Safe_Cflags

// MAKEOPTS=”-j2″ для одноядирника j3 для core2duo
INPUT_DEVICES=”keyboard mouse evdev”
VIDEO_CARDS=”nvidia” // “fglrx, radeon” = ATI
FEATURES=”parallel-fetch ccache”
USE=”X bzip2 tk threads symlink” //для начала

mirrorselect -i -o >> /mnt/gentoo/etc/make.conf
mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf

8. обновляемся:
emerge –sync
emerge portage
emerge -epv world
emerge -uDN world

9.
собираем ядро, настраиваем grub, прописываем fstab;
ставим пароль на root, дбавляем основного пользователя
устаналиваем службы:
emerge dhcpcd vixie-cron syslog-ng reiserfsprogs
rc-update add net.eth0 default
rc-update add vixie-cron default
rc-update add syslog-ng boot
rc-update add sshd default

всё анмаунтим и перезагружаем систему