Словарик компьютерного слэнга.

Офигенная штука, сделана еще в то время, когда Луркморья не было даже в проекте. Интерактивный словарик компьютерного и фидошного сленга.

Не буду расписывать, просто оставлю скриншоты и ссылку на скачивание.

Основной словарик:

На самом деле словарик очень прикольный и сделан по всем канонам демосцены. Меню, которое вы можете видеть слева — «глазками» смотрит за курсором мыши. В комплекте есть заставка (заскриншотить не получилось).

Словарик смайликов:

Словарик сокращений (акронимов):

Помощь:

About:

Скачать оригинальный словарик

Установка и настройка tor-ноды

Установка tor

1. Загружаем исходники tor отсюда я взял версию 0.4.2.4-rc посвежее.

2. Собираем пакет:
— Распаковываем из архива каталог tor-0.4.2.4-rc со всеми подкаталогами
— Переходим в этот каталог и выполняем последовательно:

./configure
make
checkinstall

checkinstall нас спросит, какой пакет хотим создать (Slackware [S], RPM [R] or Debian [D]?), отвечаем s, далее вводим описание пакета, например tor и нажимаем два раза ENTER, после чего подтверждаем, что все верно (нажав ENTER еще раз) и checkinstall создаст пакет.

3. Можно сразу его установить:

installpkg tor-0.4.2.4-rc-i386-1.tgz

Создаем пользователя для tor

Негоже запускать tor под обычным пользователем, а тем более под root‘ом, потому создадим для него отдельного пользователя. Пользователь будет неинтерактивный, т.е. войти в систему с терминала он не сможет.

1. Добавляем группу, например torgroup:

groupadd torgroup

2. Смотрим файл /etc/shells и проверяем, чтоб в файле была строка /bin/false, если ее нет — смело дописываем.

3. Создаем пользователя с именем, например, torusr:

useradd -g torgroup -m -d /home/torusr -s /bin/false torusr

где:
-g torgroup — группа пользователя (torgroup)
-m — создать домашний каталог
-d /home/torusr — путь к домашнему каталогу (/home/torusr)
-s /bin/false — установить пользователю оболочку, в данном случае фиктивную (/bin/false)
torusr — имя пользователя

4. Создаем каталог для данных tor:

cd /home/torusr
mkdir .tordata

и изменяем владельца созданного каталога на torusr

chown torusr:torgroup .tordata

Настройка tor-ноды

В каталоге /home/torusr создаем файл torrc и записываем в него следующие строки:

SocksPort 9050 — порт на localhost, где будет висеть tor, и принимать на него запросы. Проще говоря, это порт прокси-сервера, который надо будет прописать, чтоб соединиться с сетью tor с локальной машины. Порт 9050 является портом по умолчанию, и назначается на localhost (127.0.0.1), если строки SocksPort будут отсутствовать в конфигурации.

SocksPort 192.168.0.20:9660 — то же самое, только внутри локальной сети. Клиенты из локальной сети должны будут подключаться по адресу 192.168.0.20 и порту 9666, чтобы использовать сеть tor.

Tor организует только SOCKS5 прокси, как быть с браузерами, которым нужен HTTP, рассмотрим далее.

SocksPolicy accept 192.168.0.0/24
SocksPolicy accept 127.0.0.1
SocksPolicy reject *

Принимать запросы только из локальной сети и localhost’а.

Log notice file /home/torusr/notices.log — файл, куда будет писаться лог tor’а

RunAsDaemon 1 — запуск tor в режиме демона.

DataDirectory /home/torusr/.tordata — путь для данных tor

ORPort 9001 — порт, используемый для пересылки пакетов с других узлов.

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

Конечно, стоило бы облегчить жизнь пользователям, сидящим за сетевыми экранами и пустить трафик по портам 80 (8080) или 443, но я пока не стал. Впрочем, если вам будет надо — смотрите статью на Хабре (копия)

RelayBandwidthRate 1000 MB
RelayBandwidthBurst 2000 MB
— ограничение пропускной способности. Чем больше, тем лучше. Но настраивайте эти числа под свой канал, чтоб не загадить его трафиком tor совсем.

Nickname PersonalChaosRelay — имя вашего релея (ноды) в базе tor. Можете придумать любое, но советую сначала проверить придуманное имя здесь, введя его в поиске. Если ничего не найдется, проздрабляю, ваш релей будет уникальным.

ExitPolicy reject *:*
ExitPolicy reject6 *:*
— запрет использовать tor-ноду в качестве выходной. Для ГОРФ параметр строго обязательный.
Примечание: в /usr/local/etc/tor находится файл torrc.sample с подробным описанием конфигурации.
Пример файла конфигурации на PasteBin

Устанавливаем файлу правильного владельца:

chown torusr:torgroup torrc

Запуск ноды

Запуск осуществляется следующей командой:

sudo -u torusr tor -f /home/torusr/torrc

Если помещать запуск в автозагрузку, то желательно указать полный путь к файлу tor:

sudo -u torusr /usr/local/bin/tor -f /home/torusr/torrc

Запуск в отдельном network namespace (копия):

ip netns exec provns sudo -u torusr /usr/local/bin/tor -f /home/torusr/torrc

provns — имя network namespace

Проверка работоспособности

Минут через 15-20 после запуска можно заглянуть в /home/torusr/notices.log, если в последних строках файла написано что-то типа:

Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.
Tor has successfully opened a circuit. Looks like client functionality is working.
Self-testing indicates your DirPort is reachable from the outside. Excellent.
Performing bandwidth self-test...done.

значит порты ORPort и DirPort доступны извне, и нода нормально функционирует.

Если же в логе что-то типа:

Your server (x.x.x.x:9001) has not managed to confirm that its ORPort is reachable. Relays do not publish descriptors until their ORPort and DirPort are reachable. Please check your firewalls, ports, address, /etc/hosts file, etc.
Your server (x.x.x.x:9030) has not managed to confirm that its DirPort is reachable. Relays do not publish descriptors until their ORPort and DirPort are reachable. Please check your firewalls, ports, address, /etc/hosts file, etc.

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

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

Настройка для клиентов под катом

Network namespaces или несколько виртуальных сетевых карт (интерфейсов) с разными IP на одной машине.

С одной физической сетевой картой.

Для чего.

Например мы хотим организовать следующую схему:
1. После запуска сервер устанавливает соединение с VPN-провайдером, и весь трафик идет через VPN.
2. Некоторым программам VPN не нужен, пусть это например будут TOR, I2P (у них и так шифрование, плюс им бы желательно скорость работы повыше, а напрямую соединяться быстрее, чем через VPN). Плюс, например, мы хотим ходить на некоторые сайты в обход VPN, либо иметь возможность запускать в обход VPN какие-либо трафикоемкие программы, например торрент-клиент. Ну пусть еще будет отдельный локальный сервис, например FTP, также висящий на отдельном IP.

Как.

В Linux есть замечательный механизм network namespaces, который на одной машине позволяет создать несколько изолированных друг от друга сетевых подсистем, почти как сеть в виртуальной машине. Не бойтесь, все делается на уровне ядра, потому тормозов, характерных для виртуальных машин не будет. И пусть слово «изолированных» вас тоже не пугает, когда надо — изолированных, а когда надо — мы их свяжем.

Эмулируется полностью сетевой стек: сетевые интерфейсы, таблица маршрутизации, файрволл и т.д. Так, как это работает на уровне ядра и для определенных процессов, то вполне можно получить рабочую конфигурации, когда на одной машине есть несколько сетевых интерфейсов с одинаковыми IP-адресами и ничто не конфликтует.

Подготовка

Поскольку в процессе нам придется поднимать/опускать физические и виртуальные сетевые карты, настоятельно советую отключить Network Manager, а основную сеть настроить вручную. С включенным Network Manager может ничего не получиться, т.к. он в самый ответственный момент влезет и напоганит в конфигурации.

Как на Slackware отключить Network Manager и настроить сеть вручную (копия)

Создание и конфигурация network namespace.

Конфигурация namespace’ов производится с помощью iproute2.

1. Создаем новый неймспейс с именем provns:

ip netns add provns

2. Создаем две связанных между собой виртуальных сетевых карты (интерфейса)

ip link add veth0 type veth peer name veth1

3. Поднимаем интерфейс veth0:

ifconfig veth0 0.0.0.0 up

4. Ассоциируем вторую виртуальную карту с созданным нэймспейсом:

ip link set veth1 netns provns

Получился один дополнительный namespace, связанный с основным виртуальными сетевыми интерфейсами veth0 и veth1.

Теперь надо связать виртуальный интерфейс veth0 с физической сетевой картой (интерфейсом) eth0. Сделать это можно разными способами, например, присвоить интерфейсам разные IP-адреса из разных подсетей и сделать маскарадинг с помощью IPTABLES, а можно воспользоваться мостами.

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

Подробнее про мосты:
Linux Bridge
Виртуальные сетевые устройства в Linux: Linux Bridge
10 примеров команды brctl в Linux для сетевого Ethernet моста
Эти статьи в PDF

Итак:
5. Отключаем физический интерфейс eth0:

ifconfig eth0 down

6. Включаем его, но IP-адрес не присваиваем (IP-адрес будет присвоен мосту):

ifconfig eth0 0.0.0.0 up

7. Создаем мост br0:

brctl addbr br0

8. Соединяем (добавляем интерфейсы к мосту) eth0 и veth0:

brctl addif br0 eth0 veth0

9. Поднимаем (включаем) мост, присваивая ему IP-адрес и маску подсети:

ifconfig br0 192.168.0.15 netmask 255.255.255.0 up

Получилось как на схеме:

10. Устанавливаем маршрут по умолчанию в основном namespace:

ip route add default via 192.168.0.1 dev br0 src 192.168.0.15

Далее конфигурируем namespace:

Выполнение любых команд в указанном namespace производится командой

ip netns exec <имя_namespace> <команда> [параметры_команды]

Например, если мы хотим выполнить ifconfig в namespace с именем provns, то команда будет:

ip netns exec provns ifconfig

11. Поднимаем (включаем) сетевой интерфейс veth1 внутри нэймспейса provns, и присваиваем ему адрес 192.168.0.20:

ip netns exec provns ifconfig veth1 192.168.0.20 netmask 255.255.255.0

12. Прописываем внутри нэймспейса маршрут по умолчанию:

ip netns exec provns ip route add default via 192.168.0.1 dev veth1 src 192.168.0.20

13. Поднимаем внутри namespace’а loopback-интерфейс:

ip netns exec provns ifconfig lo 127.0.0.1

Скрипт для автоматизации настройки network namespace.

Под катом

Скрипт целиком на GitHub

Справочники по ассемблеру (assembler) для DOS

Набор интерактивных справочников (запускаются они тоже под DOS)

ASM-HELP — интерактивный справочник по Assembler (DOS)

TECHHELP — интерактивный справочник по прерываниям и структурам данных DOS/BIOS

NG — интерактивный резидентный справочник (вылезает по Shift-F1)
Базы данных:
ASSEMBLER (ENG) — ассемблер
BIOS (ENG) — прерывания BIOS
TC (RUS) — краткая справка по Turbo C
PASCAL (RUS) — справка по Turbo Pascal

Скачать

Питер Абель. Ассемблер и программирование для IBM PC

Скачать (TXT DOS, ZIP)

Настройка сети в Slackware Linux вручную.

Краткая заметка, как настроить сеть на Slackware вручную. Все делаем под root’ом или через sudo.

1. Отключаем Network Manager, если случайно включили его при установке системы.

Для этого идем в /etc/rc.d и снимаем права на выполнение у файла rc.networkmanager

chmod -x rc.networkmanager

2. Проверяем, что у скрипта rc.inet1 установлены права на исполнение.

3. Правим rc.inet1.conf:

— Раскомментируем строчки для нужного сетевого (ых) интерфейса (ов) и прописываем нужные данные. У меня только один интерфейс (сетевая карта) eth0, поэтому я раскомментировал строчки в начале конфигурационного файла и прописал нужные данные:

# Config information for eth0:
IPADDR[0]="192.168.0.15"
NETMASK[0]="255.255.255.0"
USE_DHCP[0]=""
DHCP_HOSTNAME[0]=""

IPADDR — адрес компьютера в локальной сети.
NETMASK — маска подсети

DHCP использовать не будем, настроим DNS вручную далее, поэтому USE_DHCP и DHCP_HOSTNAME оставляем, как было.

— Настраиваем основной шлюз. Ищем в rc.inet1.conf строчку GATEWAY и прописываем основной шлюз (обычно адрес роутера, в некоторых деревенско-колхозных случаях адрес шлюза надо спрашивать у провайдера):

GATEWAY="192.168.0.1"

4. Указываем адреса DNS-серверов.
В файл /etc/resolv.conf добавляем адреса DNS-серверов. Тут я указал публичные гуглевские DNS:

nameserver 8.8.8.8
nameserver 8.8.4.4

5. Перезагружаем систему.

Проверить можно в той же консоли, сделав ping до того же гуглевского DNS:

ping 8.8.8.8

И попробовать посетить какой-нибудь сайт:
lynx tolik-punkoff.com

C#, передача форме фокуса, если она открыта, и открытие, если ее нет.

Практически идентичное решение уже обсуждалось в заметке «C#, проверить, открыта ли форма» (копия).

Делается все примерно также. Для удобства вынесем проверку, открыта ли форма в отдельную функцию:

private bool IsFormOpen(string FormName)
{
    foreach (Form f in Application.OpenForms)
    {
        if (f.Name == FormName)
        {
            f.Focus();
            return true;
        }
    }
    return false;
}

Если форма открыта, устанавливаем ей фокус (f.Focus()) и возвращаем true. Если формы нет — возвращаем false.

В обработчике события, в котором будем вызывать форму, вызываем эту функцию, и если она вернула false, создаем и показываем форму, иначе выходим из обработчика:

private void btnChild1_Click(object sender, EventArgs e)
{
    if (IsFormOpen("frmChild1")) return;
    
    frmChild1 fChild1 = new frmChild1();
    fChild1.Show();
}

private void btnChild2_Click(object sender, EventArgs e)
{
    if (IsFormOpen("frmChild2")) return;

    frmChild2 fChild2 = new frmChild2();
    fChild2.Show();
}

Пример на GitHub

Пример конфига GRUB для загрузки сервера

# GRUB configuration file '/boot/grub/menu.lst'.
# generated by 'grubconfig'.

# Start GRUB global section
timeout 10
color light-gray/blue black/light-gray
# End GRUB global section

# Linux bootable partition
  title Slackware 14.2
  root (hd0,1)
  kernel /abs/vmlinuz root=/dev/mapper/sda1 ro video=VGA-1:640x480@75
  initrd /abs/initrx.gz
# Linux bootable partition ends

# Linux bootable partition test initrd
  title Slackware Test/Rescue initrd
  root (hd0,1)
  kernel /abs/vmlinuz root=/dev/sda1 ro video=VGA-1:640x480@75
  initrd /abs/initrd.gz
# Linux bootable partition nocryprt ends

# Puppy Slacko bootable partition config begins
  title Slacko Puppy Linux
  root (hd0,1)
  kernel /slacko/vmlinuz ro vga=normal
  initrd /slacko/initrd.gz
# Puppy Slacko bootable partition config ends

На Pasebin

Внимание! Названия устройств и путей могут не совпадать с описанными в мануале! Будьте внимательны и поправьте под свою конфигурацию!

Установка Linux и шифрование ее и всего содержимого жесткого диска. Часть IV

Этап #19
Восстановление системы на зашифрованный диск. Форматирование разделов

Сначала, как и на этапе 18, необходимо получить доступ к зашифрованному жесткому диску
tcplay --map=cryp_sdb --device=/dev/sdb --keyfile=/path/to/key/file

Далее, с помощью утилиты kpartx, доступ к разделам на жестком диске
kpartx -av /dev/mapper/cryp_sdb

где:
Опция a – подключить разделы, содержащиеся на зашифрованном устройстве
Опция v – отобразить, какие разделы были подключены.
/dev/mapper/cryp_sdb – подключенный с помощью tcplay зашифрованный диск.

Далее форматируем разделы. Главный:
mkfs –t ext2 /dev/mapper/cryp_sdb1
Дополнительный:
mkfs –t ext2 /dev/mapper/cryp_sdb5
И раздел подкачки:
mkswap /dev/mapper/cryp_sdb6

Отключаем подключенные разделы:
kpartx –dv /dev/mapper/cryp_sdb

Отключаем зашифрованный жесткий диск:
tcplay --unmap=cryp_sdb
Перезагружаемся обратно в консоль тестового initrd

Этап #20
Восстановление системы на зашифрованный диск. Восстановление файлов из ранее созданных бэкапов.

Как и в предыдущем этапе, сначала получаем доступ к зашифрованному жесткому диску:
tcplay --map=cryp_sdb --device=/dev/sdb --keyfile=/path/to/key/file

И его разделам:
kpartx -av /dev/mapper/cryp_sdb

Предположим, что бэкапы системы были сохранены на первый FAT32 раздел флешки sda1 и находятся по следующим путям:
/mnt/sdb1/bak/system.tar.gz и /mnt/sdb1/bak/home.tar.gz

Создаем точку монтирования для флешки (если не создана):
mkdir /mnt/sdb1
И монтируем ее (если не примонтирована)
mount –t vfat /dev/sdb1 /mnt/sdb1

Создаем точки монтирования для разделов жесткого диска:
mkdir /mnt/sda1
mkdir /mnt/sda5

Внимание! Точки монтирования для жестких дисков должны называться также, как назывались при создании бэкапов!

Монтируем разделы:
mount –t ext2 /dev/mapper/cryp_sdb1 /mnt/sda1
mount –t ext2 /dev/mapper/cryp_sdb5 /mnt/sda5

Распаковываем архивы:

tar –xvf /mnt/sda1/bak/home.tar.gz –C /
tar –xvf /mnt/sda1/bak/system.tar.gz –C /

где:
Опция x – распаковать архив
Опция v – отображать имена распаковываемых файлов
Опция f – архив находится в файле (а не направлен со STDIN)
/mnt/sda1/bak/home.tar.gz – путь к файлу архива
–C – указывает, в какой каталог распаковать архив (сам каталог указывается через пробел, и в данном случае это корень, т.е. / ).

Скопируем заранее исправленные fstab и mtab, предположим, они были сохранены в первый раздел загрузочной флешки, в каталог tabs и данный раздел смонтирован:

cp /mnt/sdb1/tabs/fstab /mnt/sda1/etc/fstab
cp /mnt/sdb1/tabs/fstab /mnt/sda1/etc/mtab

После копирования файлов отмонтируем разделы:
umount /mnt/sda1
umount /mnt/sda5

Отключаем подключенные разделы:
kpartx –dv /dev/mapper/cryp_sdb

Отключаем зашифрованный жесткий диск:
tcplay --unmap=cryp_sdb
Перезагружаемся уже с рабочим initrd.

Поздравляю! Если система успешно загрузилась с рабочим initrd, значит, задача выполнена!
После успешной загрузки можно подправить конфиг GRUB, так, чтоб сразу загружалась система с рабочим initrd.

Скачать мануал целиком в PDF

Установка Linux и шифрование ее и всего содержимого жесткого диска. Часть III

Этап #16
Подготовка конфигурационных файлов и рабочего initrd

На этом этапе первым делом определимся, под каким именем мы будем обращаться к нашему зашифрованному жесткому диску. Это имя будет использоваться в команде map утилиты tcplay. Для примера здесь и далее я буду использовать имя cryp_sdb.
Далее необходимо скопировать в отдельный каталог на загрузочной флешке (для примера пусть будет cfg) файлы /etc/fstab и /etc/mtab из основной ОС и отредактировать их, заменив /dev/sdaX на /dev/mapper/cryp_sdbX. Где X – номер конкретного раздела на жестком диске.
Далее под катом

Установка Linux и шифрование ее и всего содержимого жесткого диска. Часть II

Этап #11.
Добавление tcplay в образ initrd.

Для этого создаем какой-нибудь временный каталог и распаковываем туда из пакета (tc-play-2.0-i486-1.tgz в моем случае) полученного на этапе 8 файлы (дальнейшие пути внутри пакета)
usr/lib/libtcplay.so.2.0
usr/sbin/tcplay
Я просто воспользовался mc, зашел им в архив и нужное скопировал клавишей F5 в /tmp/tc-play, mc сам вызвал архиватор и распаковал все за меня.
Далее, выходим из архива и копируем во временный каталог (ну чтоб все нужные файлы были в одном месте и мы не запутались) файл
/lib/libdevmapper.so.1.02 (если при создании initrd, вы пользовались опцией –L, то эта библиотека уже на месте)
Теперь из временного каталога (да, можно было и сразу) скопируем файлы
libtcplay.so.2.0
libdevmapper.so.1.02
в /boot/initrd-tree/lib
(каталог библиотек файловой системы initrd)
а файл
tcplay
в /boot/initrd-tree/bin

Также tcplay во время своей работы, а конкретно подключения зашифрованных разделов вызывает из каталога /usr/sbin программу dmsetup. Соответственно, необходимо положить dmsetup в /boot/initrd-tree/usr/sbin

Чтобы dmsetup работал правильно, ему необходим каталог /dev/mapper, его тоже надо создать
mkdir /boot/initrd-tree/dev/mapper

Далее выходим из каталога initrd-tree, удаляем из директории /boot ранее созданный initrd.gz и запускаем mkinitrd без параметров, далее примонтируем нашу загрузочную флешку, заменяем файл /mnt/sda2/absolute/initrd.gz на пересозданный initrd.gz, перезагружаем компьютер и выбираем созданный на этапе 8 пункт для тестирования initrd.gz

Если все сделано правильно, то в конце загрузки будет выведено сообщение «Hello, world!» и приглашение оболочки, в котором мы введем команду tcplay. Программа должна выдать краткую справку по своим параметрам. После чего вводим команду exit и загружаемся в основную ОС.

Этап #12.
Генерация ключа для шифрования.

Для генерации ключа можно взять данные из /dev/urandom.
Если было несколько перезагрузок основной ОС и ОС некоторое время работала, то это должно быть довольно надежно. Хотя при написании данной статьи я и сомневался в этом, но мои сомнения были развеяны более опытными специалистами 🙂
Можно также воспользоваться генератором ключевых файлов, входящим в комплект Windows или Linux-версии Truecrypt, в таком случае следует использовать версию 7.1a, последнюю на момент закрытия проекта Truecrypt, скачать каковую можно, например отсюда.

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

Вот команда для генерации ключа с помощью /dev/random – стандартного устройства для получения псевдослучайных последовательностей
dd if=/dev/random of=/путь/к/файлу/имя_файла bs=1 count=256

Команда dd подробно описана, например, здесь

Далее под катом

Установка Linux и шифрование ее и всего содержимого жесткого диска.

Нам понадобятся:
1. Дистрибьютив Linux. Я здесь и далее использовал Slackware 14.2
2. Live CD Linux, я использовал Puppy Rus Slacko,

Идея в том, чтоб наша ОС и данные находились на надежно зашифрованных разделах, на жестком диске внешне не должно быть никакой разбивки, а система загружалась без ввода парольной фразы или ключа.
Как это можно реализовать
Загрузчик системы и ключ доступа будут храниться на небольшом(<50Mb) разделе флешки, при включении загрузчик разблокирует доступ к шифрованному винту, загружает ядро, далее происходит обычная загрузка системы.

Я не стал использовать LVM, а вместо LUKS выбрал клон truecrypt’а — tcplay

Этап #1. Разбиение диска на разделы

Итак, первым делом создаем нужные разделы на диске. Я сделал это в графической оболочке Puppy Rus с помощью имеющегося на диске gparted, но ничего не мешает вам сделать это с помощью другой программы.

Этап #2.
Подготовка загрузочной флешки.

Действуем как в вышеупомянутой статье – разбиваем флешку на 2 раздела, первый большой и видимый из Windows и других ОС, второй маленький – с загрузчиком операционной системы и ключами, отформатированный в Ext2. В статье рекомендуется сделать его приблизительно 50 Мб, и для загрузчика GRUB, ядра, хранения начальных настроек этого хватит. Я же сделал второй раздел побольше (1Гб) и перенес на него дополнительно Live дистрибутив Puppy Linux (чтоб в процессе настроек не грузиться с CD или другой флэшки).

Этап #3.
Установка загрузчика GRUB

Необходимо извлечь загрузочные флешки с которых ставили ОС, и/или с которых загружали Puppy Slacko, если таковые были использованы, и вставить нашу размеченную подготовленную загрузочную флешку.

Я воспользовался графической утилитой установки GRUB c LiveCD Puppy Slacko, доступ к которой можно получить из главного меню Puppy Slacko (оно по-умолчанию там же где и «Пуск» у Windows) «Система» — «Настройка загрузчика GRUB»
1. В первом диалоговом окне выбираем способ установки simple
2. Во втором предлагается выбрать разрешение экрана при загрузке, я выбрал standart, ибо для Slackware потом все равно необходимо перенастроить параметры разрешения экрана при загрузке в конфиге GRUB.
3. В следующем окне необходимо указать местоположение директории boot, это второй раздел нашей флешки, который у меня называется sdb2, соответственно указывается устройство /dev/sdb2
4. В следующем окне выбираем запись загрузчика в MBR
5. В следующем окне вводим устройство, в MBR которого будет записан загрузчик, в данном случае это наша флешка, которая обозначена как /dev/sdb (у меня)

Продолжение под катом

Поздравляю! Мы загрузились с помощью образа initrd до загрузки основной ОС.
Для продолжения загрузки надо ввести exit и нажать enter. Управление будет передано программе init из основной ОС и основная ОС загрузится.

Домашний сервер на базе Slackware Linux

Давно хотел собрать в кучу заметки про то, как можно организовать домашний сервер (или сервер для малого офиса) на базе Slackware Linux с VPN, I2P, Tor, файл-помойкой на локальном FTP, возможностью установки с сервера ПО и операционных систем, а возможно и с внутренними Web-сайтами, чатами и что там еще надо в зависимости от ваших задач. А еще и с полным шифрованием жесткого(-их) дисков.

Это пост-оглавление. Тут буду копить внутренние ссылки на заметки, относящиеся к организации сервера. Нумерация и последовательность также может меняться, т.к. я пишу как придется, а в содержании буду по мере накопления материала сортировать как надо.

Что примерно надо построить на начальном этапе. Сервер в локальной сети, позволяющий клиентам выходить в Интернет, как минимум через два различных IP (VPN и IP основного провайдера), поддерживающий локальный FTP и/или Samba (файловое хранилище), поддерживающий проходную ноду Tor и I2P-роутер, а также обеспечивающий локальным клиентам доcтуп в сети Tor и I2P.

Ремарка про железо. На самом деле, чем круче, тем круче, но изначально все делалось на старом Celeron с 500 Гб HDD и 512 Мб ОП, сейчас все вертится на Dual Core Intel Celeron E3200 (2400МГц) с гигабайтом встроенной памяти и встроенным видео, тоже не самая новая машина, но получше. А вообще хочу, чтоб оно на PIII-700 заработало. Сетевая карта одна (расскажу, как из одной реальной виртуальных наделать).

Оглавление

Установка Linux и шифрование жесткого диска:
Часть I Копия
Часть II Копия
Часть III Копия
Часть IV Копия
Пример конфига GRUB для загрузки сервера Копия
Эта часть целиком в PDF

Начальная настройка сети Копия
Network namespaces или несколько виртуальных сетевых карт (интерфейсов) с разными IP на одной машине. Копия
Настройка файерволла (IPTABLES) Копия

Локальный FTP Копия
Нода TOR Копия
Настройка доступа к I2P Копия
PXE (установка и запуск различных ОС со своего сервера на локальных машинах) Копия

Локальный прокси-сервер:
Запускающий скрипт Копия
Инструкция по установке Копия
Изменения в конфигурации последней версии Копия

Квест про панка Punk’s Not Dead V2.0

Нам, внезапно, прислали довольно милый квест про панка. Punk’s Not Dead V2.0, ажно 2005 года выпуска, написано на Flash, и, к сожалению, не дописано аффтарами, посему последний уровень, по сообщениям читателей, является непроходимым.

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

Сохранения тоже нет, при перезапуске игра начинается сначала, так что если кого вдруг попрет — играйте на виртуалке, там есть Save State.

Нате вам скриншотов из начала:



И ссылку на скачивание:
Скачать с Mega.nz

Как вручную распаковать пакет nuget.

И извлечь из него сборки (библиотеки).

Часто бывает, что нужная библиотека лежит на nuget.org. Если у вас современная Visual Studio, то проблем нет — инструментарий nuget доступен, во всяком случае, из командной строки. Можно установить nuget и отдельно, но что делать, если устанавливать ничего не хочется?

На самом деле пакет nuget (файл *.nuget) это обыкновенный ZIP-архив. Поэтому можно скачать пакет, переименовать его в *.zip и открыть любимым архиватором.

Например, нам нужен упомянутый в предыдущем посте HtmlAgilityPack, версии 1.11.15.

1. Переходим по ссылке https://www.nuget.org/packages/HtmlAgilityPack/1.11.15
2. Выбираем справа Download package
3. Сохраняем пакет
4. Меняем ему расширение на zip
5. Открываем любимым архиватором

В архиве в подкаталоге \lib находятся каталоги различных сборок:

Net20
Net35
Net40
Net40-client
Net45
NetCore45
netstandard1.3
netstandard1.6
netstandard2.0
portable-net45+netcore45+wp8+MonoAndroid+MonoTouch
portable-net45+netcore45+wpa81+wp8+MonoAndroid+MonoTouch
uap10.0

C# Парсер HTML (под .NET Framework 2.0).

Понадобился тут для одного проекта все-таки полноценный парсер HTML, да еще желательно чтоб под не очень свежий .NET Framework 2.0. Ну не хочу я ради небольшого проекта жертвовать совместимостью да и переходить на новый .NET вообще, потому что в старом все прекрасно работает.

В общем выбирал-выбирал и остановился на HtmlAgilityPack, который в версии 1.11.15 поддерживает в т.ч. и .NET 2.0. Версия 1.11.16 .NET 2.0 уже не поддерживает, все остальное, начиная с .NET 3.5 есть.

Скачать можно через NuGet. Как быть тем, у кого NuGet нет читать здесь.

Прямая ссылка
Обсуждение на StackOwerflow