ruX's mind

Live is a challenge ;-)

Ноябрь-23-11

Grub: загрузить ОС с флешки

posted by ruX

Есть задача: требуется загрузить ось с флешки. Компьютер не умеет сам по себе стартовать с pendrive и/или отсутствует boot-flag на разделе с системой. На компьютере установлен grub2

Read the rest of this entry »

Май-1-10

Debian: установка из asplinux

posted by ruX

После долгих раздумий решил поменять древнющий ASPLinux 9, который честно отработал на протяжении почти пяти лет, на дебиан на домашнем сервере. На то было куча причин – бОльшая часть программ и библиотек собранны руками, софт морально устарел, многих новых фишек не хватает очень сильно, большие сомнения в безопасности – а сервер смотрит в интернет, дефолтная кодировка в то время для ASP была win-1251, да и вообще.. это моя первая нормальная установка линукса)..

0. Начало

Подключать монитор к нему – последнее дело, он находится в очень труднодоступном месте. Вся установка будет происходить через интернет – я физически не дома в момент написания поста и установки.

Из этого следует, что установка будет прямо из живой системы – с помощью утилиты, которая помогает создавать окружение установщика debian – debootstrap. Учтите, что должен быть установлен chroot.

Прежде всего, нужно её установить, для этого скачаем её и её библиотеки от которых она зависит и распакуем эти пакеты прямо в корень живой asplinux:

# cd /tmp
# wget http://mirrors.kernel.org/debian/pool/main/c/cdebootstrap/cdebootstrap_0.5.4_i386.deb
# wget http://ftp.cl.debian.org/debian/pool/main/libd/libdebian-installer/libdebian-installer-extra4_0.61_i386.deb
# wget http://ftp.egr.msu.edu/debian/pool/main/libd/libdebian-installer/libdebian-installer4_0.61_i386.deb
# wget http://ftp-mirror.internap.com/pub/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2009.01.31_all.deb
# cd /
# ar p /tmp/cdebootstrap_0.5.4_i386.deb data.tar.gz | tar xz
# ar p /tmp/libdebian-installer-extra4_0.61_i386.deb | tar xz
# ar p /tmp/libdebian-installer4_0.61_i386.deb | tar xz
# ar p /tmp/debian-archive-keyring_2009.01.31_all.deb data.tar.gz | tar zx

1. Разбивка дисков

Установка будет происходить на тихий внешний жёсткий диск, в моём случае на раздел /dev/sda2, с файловой системой ext3, который я предварительно подмонтировал в /media/debian/. Места выделил аж 22Гб, зачем то много так..

Форматирование в ext3 (БУДЬТЕ ВНИМАТЕЛЬНЫ – смотрите что выполняете!):

/sbin/mkfs.ext3 -m 2 /dev/sda2

Ах да, сервер на столько старый, что его биос не умеет хочет загружаться с “большой флешки”, поэтому в моём случае отсутствует /boot раздел, ну и соответственно настройка загрузчика. Файлы ядра новой системы лежат на /boot жёсткого диска системы(старой), при этом root в аргументах ядра указывает на раздел внешнего диска(по имени раздела). Это выглядит так:

title Debian on usb-hard drive, kernel on hd0
kernel /boot/vmlinuz-2.6.26-2-686 root=LABEL=boX
initrd /boot/initrd.img-2.6.26-2-686
boot

2. Бутстрепимся. Установка базовой системы

# cdebootstrap lenny /media/debian/  --allow-unauthenticated
P: Retrieving Release
P: Retrieving Release.gpg
P: Validating Release
W: Couldn't validate Release!
P: Parsing Release
P: Retrieving Packages.gz
. . . .

Пошло вообщем :) Можно идти долго чай пить

. . . .
P: Deconfiguring helper cdebootstrap-helper-makedev
P: Writing apt sources.list
P: Writing hosts
P: Writing resolv.conf

На этом установку базовой системы можно считать завершённой.

3. Chroot

Теперь в /media/debian есть система.. но этого мало, нам необходимо её настроить до перезагрузки в неё. Для этого воспользуемся chroot.

Перед тем, как чрутится нужно для дебиана подготовить окружение – подмонтировать в него файловую систему ядра и устройств:

# cd /media/debian/
# mount -t proc proc proc
# mount -o bind /dev/ dev

После этого заклинания можно идти в новоиспечённый деби.

# chroot /media/debian
boX:/#

Вот и промт виден, уже от дебиана.
Теперь важно не запутаться в системах. Лучше всего разнести консоли реальной системы и устанавливаемой в разные окна. Или разные скрины. Или сделать кастомные промты. Кому как нравиться. Я же для наглядности буду указывать в промте систему.

4. Настройка базовой системы

В установленной системе нет даже fstab. Создадим его, каждый по своему вкусу

debian# nano /etc/fstab

У меня вот так получилось, для начала:

/dev/sda2        /      ext3    defaults        0       1
proc             /proc         proc    defaults                 0    0

Вдаваться в подробности тут не буду – тем, кто устанавливает систему из чрута наверняка понятно, как нужно заполнять этот файл. А кто не знает – гугл на разных языках расскажет как.

5. Настройка сети

Тут всё стандартно для дебиана. Процетирую что у меня, как пример.

debian# cat /etc/network/interfaces
auto eth0
iface eth0 inet static
    address 192.168.0.11
    network 192.168.0.0
    netmask 255.255.255.0
    broadcast 192.168.0.255
    gateway 192.168.0.53

auto lo
iface lo inet loopback

DNS скопировал бутстрэп:

boX:/# cat /etc/resolv.conf
search boX
nameserver 127.0.0.1
nameserver 192.168.0.53
nameserver 212.44.94.254

(Для ясности – в том числе у меня и днс форвардер с локальной зоной)

Указываем репозитарии и обновляем их и сразу же то, что у нас уже есть:

debian# cat /etc/apt/sources.list
deb http://ftp.debian.org/debian lenny main contrib non-free

deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main
debian# apt-get update
debian# apt-get upgrade

И конечно же не забываем установить пароль рута в новой системе, а так же добавить пользователей по вкусу.

debian# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

6. Установка софта

Тут сам каждый решает, что нужно. По мне вот так:

debian# apt-get install apache2 php5 php5-cli php5-gd php5-mysql \
         php5-xmlrpc phpmyadmin mysql-server bind9 dhcp3-server watch \
         sun-java6-jre openssh-server bridge-utils openvpn iodine eggdrop  \
         rtorrent ziproxy dvbtune dvbstream dvb-apps ppp subversion \
         sunversion-tools psmisc ddns3-client links2  nmap mrtg hdparm \
         screen

7. Грабли

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

Как я писал выше – мне требуется загрузить систему с внешнего жёстого диска. На то, чтоб отладить этот механизм пришлось несколько раз перезагрузится.

Автоматическое поднятие интерфейса lo помогло мне сохранить много времени – с этим я сталкивался ранее в другой системе, когда сложно понять почему демоны вроде и поднимаются а вроде и не работают, причём не всегда очевидно что не может прибинтится к хосту

8. Итого

Постарался описать многое, разумеется не всё охватил. Самые основные моменты только, идею.

UPD:
Всё нормально работет, внутренний(старый) принудительно ставлю в режим сна, т.к. он излишне шумит и не используется практически. В /etc/crontab добавить:

# remove hdd noise :)
0,30 23,0-8 * * * root /sbin/hdparm -S 2 /dev/hdc
0,30 9-22 * * * root /sbin/hdparm -S 10 /dev/hdc
Март-4-10

CPU load indicator

posted by ruX

Что это?

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

Собственно это очень простое устройство, плавно показывающее текущую нагрузку процессора меняя яркость светодиода(ну или по желанию можно использовать другую нагрузку). Людям, которые занимаются моддингом особо думаю понравится – нужно только приложить фантазию :) Работает через USB, причём программный, реализованный с помощью прооекта V-USB. В качестве мк выбран Atmega8

Read the rest of this entry »

Мне дали попользоваться в кампусе программатором avr910 с USB интерфейсом. Он мне был просто необходим для сборки своего программатора(USBAsp).

Проблемма

Простая комманда для чтения флеш памяти:

 avrdude -P /dev/ttyACM0 -p m8 -c avr910 -U flash:r:flash.hex:i

Неожиданно выдала:

avrdude: ser_send(): write error: Invalid argument

Cудя по lsusb программатор определился: Bus 004 Device 002: ID 16c0:05e1 VOTI.
Появился соответствующий файл устройства /dev/ttyACM0. Права rw также есть.
Всё казалось бы хорошо..

Read the rest of this entry »