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

Устанавливаем Debian на DNS-313

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

Потому сегодня мы будем ставить на DNS-313 настоящую операционную систему Debian Lenny!

Делается это не просто, а очень просто:

1. Скачиваем проверенный и протестированный архив с системой Lenny for DNS-313
2. Устанавливаем в DNS-313 жесткий диск и подключаем к компьютеру через USB.
3. Теперь необходимо разбить жесткий диск на разделы. В моей системе (Ubuntu 10.04) он определился как sdb. Запускаем fdisk /dev/sdb (cfdisk, etc...) и размечаем примерно по следующей схеме:

sdb1:   Swap-partition 1GB
sdb2:   data-partition ext2 or better ext3 (Volume_1), size as you like.
sdb3:   root-partition ext2 recommendet size 3-5 GB
sda3:   *active

Вы можете воспользоваться Live-CD дистрибутивом линукс для этой операции, если в повседневной жизни используете альтернативные ОС.

Распакованная система займет на жестком диске примерно 250-300Mb, но я планирую установить несколько дополнительный паккаджей, потому размер sdb3 выбрал 5Gb.

Далее, создаем сами файловые системы:

mkswap /dev/sdb1
mkfs.ext3 /dev/sdb2   (придется подождать некоторое время, зависящее от размера раздела...)
mkfs.ext2 -I 128 /dev/sdb3 (указываем размер inode в 128 байт для совместимости с загрузчиком)

Далее распаковываем скачанный архив в корень DNS-313:

cd [download-directory]
mkdir /mnt/etchdisk3
mount -t ext2 /dev/sdb3 /mnt/etchdisk3
tar -xzf DNS-313_lenny_09212008.tgz -C /mnt/etchdisk3

Готово! Система установлена и после перезагрузки устройства мы получим на нем нативный Линукс!

Пока не отсоединились, можно сделать еще несколько вещей:
1. Посмотреть, что у нас с сетевым интерфейсом в /etc/network/interfaces. Так как я предпочитаю серверам и активному оборудованию выдавать статические IP-адреса, то прописываю необходимое:

auto lo
iface lo inet loopback

auto egiga0
iface egiga0 inet static
    address 192.168.0.50
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    gateway 192.168.0.1

2. Заодно пропишу nameserver в /etc/resolv.conf:

nameserver 192.168.0.1
Теперь можно выключить устройство кнопкой питания и снова включить его. Через некоторое количество времени девайс начнет пинговаться, а потом и ответит на telnet-сессию. Логин у нас будет стандартный root, а пароль - passwd, после входа мы его обязательно первым делом сменим такой же командой на более сложный.

Кстати, не переживайте, что после перезагрузки устройства лампочка индикации жесткого диска будет гореть зеленым цветом. Это не баг, это фича (с)

Возможные проблемы:

В некоторых случаях при коннекте telnet'ом будет ошибка:
....
Connected to xxx.xxx.xxx.
Escape character is '^]'.
Debian GNU/Linux lenny/sid
telnetd: /usr/lib/telnetlogin: Permission denied
.
Connection closed by foreign host.

но команда "ls -ln telnetlogin" покажет:

-rwsr-sr-- 1 0 102 5844 Jul 22 18:57 /usr/lib/telnetlogin
              
Не переживайте, все верно. Сделаем:

chown 0:102 usr/lib/telnetlogin
chmod 4754 usr/lib/telnetlogin

и будем радоваться жизни!
Итак, после недолгих процедур мы имеем на девайсе не ущербное ПО, а полноценную ОС, в которой можно делать все что угодно. Я пока поднял на нем самбу и фтп-сервер, в планах установить torrent-качалку и веб-хостинг для отработки движков фотогалереи и блога.

14 комментариев:

Unknown комментирует...

А есть ли смысл ставить все это?
процессор слишком слабый, сможет ли он отдавать по самбе быстрее 10 магабайт в секунду?

Иваныч комментирует...

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

b15h0p комментирует...

а можно по-подробней (нажали эту кнопочку, появилось это, нажали ту - появилось то) про созднаие разделов на жестком диске, просто в linux ноль полный!!!
заранее спасибо.

Иваныч комментирует...

Команды fdisk:

m - Помощь
p - Показать разделы жесткого диска
n - Создать новый раздел
d - Удалить раздел
q - Выйти без сохранения
w - Записать изменения и выйти

Пробуйте, обязательно получится!

b15h0p комментирует...

собственно вот:
b15h0p@b15h0p-R4-7529:~$ sudo fdisk /dev/sdb1
[sudo] password for b15h0p:

Команда (m для справки): m
Действие команды
a переключение флага загрузки
b редактирование метки диска bsd
c переключение флага dos-совместимости
d удаление раздела
l список известных типов файловых систем
m вывод этого меню
n добавление нового раздела
o создание новой пустой таблицы разделов DOS
p вывод таблицы разделов
q выход без сохранения изменений
s создание новой чистой метки диска Sun
t изменение id системы раздела
u изменение единиц измерения экрана/содержимого
v проверка таблицы разделов
w запись таблицы разделов на диск и выход
x дополнительная функциональность (только для экспертов)

Команда (m для справки): p

Диск /dev/sdb1: 500.1 Гб, 500106788864 байт
255 головок, 63 секторов/треков, 60801 цилиндров, всего 976771072 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x2052474d

Это не похоже на таблицу разделов
Возможно, вы выбрали неверное устройство.

Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb1p1 ? 6579571 1924427647 958924038+ 70 DiskSecure Multi-Boot
/dev/sdb1p2 ? 1953251627 3771827541 909287957+ 43 Неизвестный
/dev/sdb1p3 ? 225735265 225735274 5 72 Неизвестный
/dev/sdb1p4 2642411520 2642463409 25945 0 Пустой

Команда (m для справки): n
Действие команды
e расширенный
p основной раздел (1-4)
p 1
Все основные разделы уже были определены!

Команда (m для справки): sudo fdisk /dev/sdb1
Создается новая метка диска sun. Изменения будут оставаться
только в памяти до тех пор, пока вы не решите записать их.
После этого, конечно, предыдущее содержимое нельзя будет
восстановить.


Команда (m для справки): n
Номер раздела (1-8): 1
Раздел 1 уже определен. Удалите его перед тем, как снова добавить его.



Команда (m для справки): d
Номер раздела (1-8): 1

Команда (m для справки): n
Номер раздела (1-8): 1
Первый сектор (0-976671675): 0
Последний сектор или +size или +sizeM или +sizeK (0-976671675, по умолчанию 976671675): +1000M

Команда (m для справки): n
Номер раздела (1-8): 2
Раздел 2 уже определен. Удалите его перед тем, как снова добавить его.

Команда (m для справки): d
Номер раздела (1-8): 2

Команда (m для справки): n
Номер раздела (1-8): 2
Первый сектор (2048000-976768065): 2048000
Последний сектор или +size или +sizeM или +sizeK (2056320-976768065, по умолчанию 976768065): +400000M

Команда (m для справки): n
Номер раздела (1-8): 3
Раздел 3 уже определен. Удалите его перед тем, как снова добавить его.

b15h0p комментирует...

Команда (m для справки): d
Номер раздела (1-8): 3
Если вы хотите использовать совместимость с SunOS/Solaris, постарайтесь
оставить этот раздел как весь disk (5), начиная с 0, с 976768065 секторами

Команда (m для справки): p

Disk /dev/sdb1 (Sun disk label): 255 heads, 63 sectors, 60801 cylinders
Units = секторы of 1 * 512 bytes

Устр-во Флаг Начало Конец Блоки Id Система
/dev/sdb1p1 0 2048000 1024000 83 Linux собствен.
/dev/sdb1p2 2056320 821256320 409600000 83 Linux собствен.

Команда (m для справки): n
Номер раздела (1-8): 4
Первый сектор (2048000-976768065): 821256320
Последний сектор или +size или +sizeM или +sizeK (821258865-976768065, по умолчанию 976768065): +5000M


Команда (m для справки): p

Disk /dev/sdb1 (Sun disk label): 255 heads, 63 sectors, 60801 cylinders
Units = секторы of 1 * 512 bytes

Устр-во Флаг Начало Конец Блоки Id Система
/dev/sdb1p1 0 2048000 1024000 83 Linux собствен.
/dev/sdb1p2 2056320 821256320 409600000 83 Linux собствен.
/dev/sdb1p4 821258865 831498865 5120000 83 Linux собствен.

Команда (m для справки): n
Номер раздела (1-8): 5
Первый сектор (2048000-976768065): 831498865
Последний сектор или +size или +sizeM или +sizeK (831508335-976768065, по умолчанию 976768065): +6000M

Команда (m для справки): p

Disk /dev/sdb1 (Sun disk label): 255 heads, 63 sectors, 60801 cylinders
Units = секторы of 1 * 512 bytes

Устр-во Флаг Начало Конец Блоки Id Система
/dev/sdb1p1 0 2048000 1024000 83 Linux собствен.
/dev/sdb1p2 2056320 821256320 409600000 83 Linux собствен.
/dev/sdb1p4 821258865 831498865 5120000 83 Linux собствен.
/dev/sdb1p5 831508335 843796335 6144000 83 Linux собствен.

Команда (m для справки): l

0 Unassigned 4 SunOS usr 8 SunOS home 82 Linux своп
1 Загрузочный 5 Whole disk 9 SunOS alt secto 83 Linux собствен.
2 SunOS root 6 SunOS stand a SunOS cachefs 8e Linux LVM
3 SunOS swap 7 SunOS var b SunOS reserved fd Автоопределение

Команда (m для справки): t
Номер раздела (1-8): 1
Шестнадцатеричный код (введите L для получения списка кодов): 82
Настоятельно рекомендуется, чтобы раздел со
смещением 0 был с файловой системой UFS,
EXT2FS или свопом SunOS. Размещение на нем свопа
Linux может разрушить вашу таблицу разделов
и загрузочный блок. Введите ДА, если вы полностью
уверены, что хотите пометить этот раздел как 82
82 (Linux своп): ДА
System type of partition 1 is unchanged: 82 (Linux своп)

Команда (m для справки): p

Disk /dev/sdb1 (Sun disk label): 255 heads, 63 sectors, 60801 cylinders
Units = секторы of 1 * 512 bytes

Устр-во Флаг Начало Конец Блоки Id Система
/dev/sdb1p1 0 2048000 1024000 83 Linux собствен.
/dev/sdb1p2 2056320 821256320 409600000 83 Linux собствен.
/dev/sdb1p4 821258865 831498865 5120000 83 Linux собствен.
/dev/sdb1p5 831508335 843796335 6144000 83 Linux собствен.

Команда (m для справки): w
Таблица разделов была изменена!

Вызывается ioctl() для перечитывания таблицы разделов.

ВНИМАНИЕ: Попытка перечитать таблицу разделов завершилась ошибкой 22: Недопустимый аргумент.
Ядро всё ещё использует старую таблицу. Новая будет использована
при следующей перезагрузке, или при запуске partprobe(8) или kpartx(8)
Синхронизируются диски.

b15h0p@b15h0p-R4-7529:~$ reboot
reboot: Необходимо быть суперпользователем
b15h0p@b15h0p-R4-7529:~$ sudo reboot
что сделал не так???

Иваныч комментирует...

я так понимаю, что у вас уже есть какие-то разделы на диске? Удалите их все и заново переразбейте.

b15h0p комментирует...

разбил на разделы с помощью Paragon (на windows 7). установил Lenny как написано в данном FAQ. Теперь необходимо правильно настроить файлы
interfaces и resolv.conf
DNS 313 подключается к сети через роутер.
Вот настройки роутера:
IP Address: 192.168.1.1
Subnet Mask: 255.255.255.0
Enable DHCP Server
Start IP Address: 192.168.1.2
End IP Address: 192.168.1.254
Subnet Mask: 255.255.255.0

что писать в файлы interfaces и resolv.conf?????

Иваныч комментирует...

в resolv.conf:
nameserver 192.168.1.1

в interfaces:

auto lo
iface lo inet loopback

auto egiga0
iface egiga0 inet static
address 192.168.1.свободный адрес в вашей сети
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

либо вообще оставить iface egiga0 inet DHCP, чтобы адрес выдался автоматически.
Это элементарные знания в линукс. Если вы уже не понимаете, что и как делаете - дальше будет еще сложнее.

b15h0p комментирует...

че-то не фурычит через разметку paragon'ом
стал читать этот FAQ и гуглить.
что у нас получилось.
жескткий диск определяется как sdb
запускаем команду fdisk: sudo fdisk /dev/sdb
размечаем его. Что у нас получается после команды p:
Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb1 2048 2050047 1024000 83 Linux
/dev/sdb2 2050048 821250047 409600000 83 Linux
/dev/sdb3 821250048 831490047 5120000 83 Linux
/dev/sdb4 831490048 976773167 72641560 83 Linux
Теперь нам надо задать файловые системы
начнем с swap раздела - команда mkswap /dev/sdb1 ни к чему не приводит. Немного погуглив нашел еще такую команду: t . Пишем ее в терминале, просит задать номер раздела - пишем 1. Просит ввести Hex код - вводим 82
получаем:
Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb1 2048 2050047 1024000 82 Linux своп / Solaris
/dev/sdb2 2050048 821250047 409600000 83 Linux
/dev/sdb3 821250048 831490047 5120000 83 Linux
/dev/sdb4 831490048 976773167 72641560 83 Linux

команда mkfs. ext3 /dev/sdb2 опять ни к чему не приводит. Что делать??????

Anthony+ комментирует...

sdb1: Swap-partition 1GB
sdb2: data-partition ext2 or better ext3 (Volume_1), size as you like.
sdb3: root-partition ext2 recommendet size 3-5 GB
sda3: *active

при чем тут последняя строчка? сделал все пунк в пункт, и все равно не запускается линукс, не пингуеться, ай пи не присваивается, если присвоить через интрерфейс, то по этому айпи не достучатся

Иваныч комментирует...

ну конечно же sdb3 в актив, а не sda3

Unknown комментирует...

А не можете ли вы выложить архив, который прикреплен в первом сообщении?

Иваныч комментирует...

к сожалению, уже нет - после недавних событий (http://solovkov.blogspot.ru/2012/08/d-link-d-link.html) с д-линком дружбу больше не веду.