Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Руководство криворукого установщика linux

Для начала настрою рабочий компьютер, чтобы он работал в качестве шлюза моего ноутбука. Сначала - правила udev, чтобы сетевые карты не "прыгали":
cat /etc/udev/rules.d/net.rules

KERNEL!="eth*", GOTO="end-of-file"
SUBSYSTEM=="net", ATTR{address}=="1c:6f:65:3e:9f:ab", NAME="eth0"
SUBSYSTEM=="net", ATTR{address}!="1c:6f:65:3e:9f:ab", NAME="eth1"
LABEL="end-of-file"

Вносим изменения: из rc.conf удаляем информацию о сетевом соединении. В секцию DAEMONS /etc/rc.conf добавляем net-profiles и удаляем network Добавляем в /etc/conf.d/netcfg строчку
NETWORKS=(lan0 lan1)

В /etc/network.d/interfaces создаем два файла, lan0:
CONNECTION='ethernet'
DESCRIPTION='Static IP LAN main'
INTERFACE='eth0'
SKIPNOCARRIER='yes'
IP='static'
ADDR='192.168.3.225'
NETMASK='255.255.254.0'
BROADCAST='192.168.3.255'
GATEWAY='192.168.2.11'
DNS=('192.168.2.111' '192.168.2.11' '8.8.8.8')
и lan1:
CONNECTION='ethernet'
DESCRIPTION='Static IP LAN'
INTERFACE='eth1'
SKIPNOCARRIER='yes'
IP='static'
ADDR='192.168.99.1'
NETMASK='255.255.255.0'
BROADCAST='192.168.99.255'

После этого бился я бился, но поднять не получалось. Перезагрузился. Получил:
ifconfig
eth0: flags=4163  mtu 1500
        inet 192.168.3.225  netmask 255.255.254.0  broadcast 192.168.3.255
        inet6 fe80::1e6f:65ff:fe3e:9fab  prefixlen 64  scopeid 0x20>link>
        ether 1c:6f:65:3e:9f:ab  txqueuelen 1000  (Ethernet)
        RX packets 4890  bytes 2857572 (2.7 MiB)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 155  bytes 30158 (29.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 16436
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
отсутствие eth1 и матюги при загрузке:
Interface eth1 does not exist

ОК, идем сюда и ищем vendor id своей карты:
lspci -n -s 05:04.0
05:04.0 0200: 10b7:9200 (rev 74)
(05:04.0 я узнал из выхлопа lspci без параметров). Видим по ссылочке строчку:
vendor: 10b7 ("3Com Corporation"), device: 9200 ("3c905C-TX/TX-M [Tornado]")
т.е. нужен модуль 3c59x, который и так загружен. Однако, lspci -k не показал, что карточка использует какой-то модуль ядра.
Сделал rmmod 3c59x && modprobe 3c59x, глянул lspci -k - опять фигвам. Зато dmesg показал:
[  897.156294] 3c59x: Donald Becker and others.
[  897.156307] 0000:05:04.0: 3Com PCI 3c905C Tornado at ffffc90005624000.
[  897.156318] 3c59x 0000:05:04.0: setting latency timer to 64
[  897.166991] *** EEPROM MAC address is invalid.
[  897.166994] 3c59x: vortex_probe1 fails.  Returns -22
[  897.167003] 3c59x: probe of 0000:05:04.0 failed with error -22

Здесь набрел на подобную проблему. Но это было давно. Значит, на баг забили совсем.
Заменил нерабочую из-за кривого (а уже ведь 7 лет прошло) модуля ядра сетевушку на dlink. После пляски с бубном (я менял правила udev в надежде, что карта заработает, а перед выключением забыл все восстановить, после загрузки карты поменялись местами и udevadm'ом я их "развернуть" не смог) сетевушки заработали, как надо.

Далее - настраиваем сеть.


Для начала - разрешаю проброс:
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
А теперь - попытаюсь при помощи гугла сделать проброс.
Разрешение прохода пакетов с "внутренней подсети" наружу:
iptables -t filter -A FORWARD -p all -s 192.168.99.0/24 -d 192.168.2.0/23 -j ACCEPT
Настраиваем подмену адреса отправителя (чтобы снаружи все было ОК):
iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -d 192.168.2.0/23 -j SNAT --to-source 192.168.3.225
Нормально ли все - узнаю позже.


Устанавливаем минимум gentoo


Для начала открываем учебник.
Качаем установочный образ:
wget http://distfiles.gentoo.org/releases/amd64/autobuilds/current-stage3/install-amd64-minimal-20121013.iso
Записываем на флешку:
dd if=install-amd64-minimal-20121013.iso of=/dev/sdb1 bs=10M

Включаем бук и по F10 заходим в биос и настраиваем загрузку с флешки. Фигвам. Не помогает. На ЛОРе обратили внимание на косяк, правильно сделать так:
dd if=install-amd64-minimal-20121013.iso of=/dev/sdb bs=10M

Сделал. Все равно фигвам. На ЛОРе узнал, что у gentoo не существует готовых установочных образов.
ОК, в жопу gentoo. Пытаемся ставить дебиан.


Ставим дебиан


Качаем:
wget http://http.us.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/netboot/mini.iso

Загружаю: сразу получаю меню, выбираю "установка", далее - язык и т.п. Потом дебиан попытался получить IP по dhcp. Что не вышло, понятное дело. Настраиваю вручную:
IP 192.168.99.2
mask 255.255.255.0
gate 192.168.99.1
DNS 192.168.3.111
далее - еще кое-какие настройки (сервер и т.п.), прокси...
Пошла проверка зеркала архива...
Сеть не пошла. Блин!
Идем в гугол... Добавляю:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
на всякий случай в настройках установщика дебиан меняю DNS на 192.168.99.1. Тоже ничего. Оказалось, что я забыл прописать этот интерфейс в настройках shorewall. Добавил просто
ACCEPT	loc	net
ACCEPT	net	loc
в /etc/shorewall/rules, и все заработало. Строчка
loc     eth1    detect
в interfaces уже была.

Итак, возвращаемся к установке дебиана. На стадии проверки все прошло нормально и пошла загрузка доп. компонентов. Далее был спрошен пароль рута и т.д., и т.п.
Потыкался, в общем, я в дебиане, и понял, что лучше ставить ту систему, к которой ты привык. А так - я даже не понял, как в этом дебиане снести всякую дрянь, вроде гнома, nouveau и прочего.


В общем, арч.


Установку я буду делать со старого образа, надеюсь, проблему с кривыми симлинками, удастся избежать легкой ценой. С нового грузиться не хочется, т.к. по слухам он сильно испоганился.
В процессе установки опять были ошибки конфликта пакетов. Установив загрузчик, я ничего хоршего не получил. Пришлось опять грузиться с флешки.
Пришлось воспользоваться в консоли pacman -Rsc, чтобы удалить практически все, что установил до этого - лишь бы не трогать уже сохраненные пакеты (форматирование бы убило все нафиг).
И опять какая-то фигня получилась, но система по идее установилась, поэтому после перезагрузки, когда я попал в меню груба, я ввел параметры из своего menu.lst и после ввода boot система загрузилась. Правда, система попыталась использовать сраный nouveau, который, естественно, упал, и я получил мелкие буковки и низкую яркость.
Логин рута был успешен (т.к. пароли-то я не задавал).
Далее мне понадобилось поставить sshfs, чтобы не качать уйму пакетов, а использовать пакеты с рабочего компьютера. Однако, оказалось, что в полученной системе даже rc.conf не было!
ОК, качаем на флешку, заодно туда же пихаем все пакеты, чтобы удобней было.
Сбрасываю все на бук, запускаю pacman -S mc и получаю ошибку, мол, надо ключи инициализировать. ОК:
pacman-key --init
(зависло) Ctrl^C
pacman -S mc
фигвам
ОК, смотрим pacman.conf - действительно, кривой. Правим (добавляем SigLevel = Never). Попутно материмся на долбаный vim.
После правки mc установился! О счастье! Теперь у меня есть mcedit!!!

Ставим еще sshfs, чтобы не забыть (правда, пока что она не нужна, но позже может пригодиться). Попутно выполняю установку кое-каких пакетов и настройку rc.conf.
Обнаружил, почему потускнел экран: функциональные клавиши работают задом наперед: если на нее просто нажмешь, она не работает, а если с FN, то работает. Вот такой идиотизм. Чего-нибудь вроде FNlock я не нашел, увы.
После установки initscripts и выполнения /etc/rc.d/network start, ноутбук почему-то завис. После перезагрузки отвалилась клавиатура. Возможно, перегрелся бедолага.
Подправил менюшку grub'а, заменил новоявленный пустой rc.conf на недавно правленный, поставил yaourt и еще кое что. Перезагрузился уже нормально, но сеть не полностью работает: надо подправить resolv.conf, wgetrc и воткнуть переменные прокси в /etc/profile.d/proxy.sh.
ОК, поковырялся - вуаля! yaourt -Syua заработал. Отлично. Теперь можно копировать все настройки с рабочего компьютера, доустанавливать нужные пакеты и, можно сказать, работа почти закончена. Почти - потому что мне еще надо настроить чертов bumblebee. Но я сегодня еще не завтракал, поэтому пора бы идти домой.
Tags: негодую, рукожопие, юмор
Subscribe

  • Хеши строковых команд для МК

    Долго я к этому шел, но, похоже, пора уже: однобуквенные команды сложно запоминать (особенно если команд толпа, и большая часть с этими буквами…

  • Задачка для студентов

    Я тут интересную (и, главное, актуальную: судя по скудной информации в интернете, если этим кто-то и занимался, то результаты закопаны под NDA)…

  • Контроллер управления новой железякой

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

promo eddy_em september 3, 12:13 8
Buy for 10 tokens
Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую сборку (как обычно, местами пришлось "доработать напильником"): Пока прибор без названия (да и как-то не лезет в голову ничего, у меня нет…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 9 comments