В v.11 загрузчик обновляется по-другому?

Аватар пользователя Radik

Собственно как было в десятке:
Загружаешься с первого диска ASP, выбираешь Recovery Console и набираешь поочередно:

modprobe ext3
mount -t ext3 /dev/раздел /mnt
chroot /mnt
mount -t proc none /proc
mount -t sysfs none /sys
/sbin/start_udev
/sbin/aspldr

Теперь же что-то новое...
Он находит корневые разделы: У меня нашел два (/dev/hda7 и /dev/hda9).
Я знаю что это верно и знаю что у меня корень ASP лежит на /dev/hda7.
Выбираю его, находится еше мой раздел /home и разделы винды.
Что дальше? Последовательность команд та-же?
Ввожу:
mount -t ext3 /dev/hda7 /mnt
chroot /mnt
mount -t proc none /proc
mount -t sysfs none /sys
/sbin/start_udev
и тут мне выдает:

Цитата:
udev: kernel too old for this udev v[сбой]

Пытаюсь поставить загрузчик и получаю:

Цитата:
/sbin/aspldr
Error: unable to get device name for devise 3,7!

Что же изменилось? :-?

Аватар пользователя Radik

Re: В v.11 загрузчик обновляется по-другому???

Проблему решил обходными путями (часа четыре обходил).
Но факт остается фактом.
Нужно спросить у разработчиков? :-?

Аватар пользователя DRVTiny

Re: В v.11 загрузчик обновляется по-другому???

Цитата:
Ввожу:
mount -t ext3 /dev/hda7 /mnt
chroot /mnt
mount -t proc none /proc
mount -t sysfs none /sys
/sbin/start_udev

Как-то это очень уж загогулисто...
Лично я поступаю намного проще (правда, из-под knoppix, а не из recovery console):

mkdir /mnt/chroot
modprobe ext3 && (mount -t ext3 /dev/hda7 /mnt/chroot;
mount /dev /mnt/chroot/dev -o bind
mount /sys /mnt/chroot/sys -o bind
chroot /mnt/chroot) 

А зачем, собственно, запускать udev на chroot-разделе, если можно просто подмонтировать к нему уже полностью инциированный dev?

Аватар пользователя Radik

Re: В v.11 загрузчик обновляется по-другому???

DRVTiny писал(а):
Как-то это очень уж загогулисто...

Застали в расплох... :-?
Такие команды написаны в официальном FAQ...
Да и проблема на форуме коммунити обсуждалась много раз и рекомендации были такими... :pardon:
Смотря на Ваши команды, они мне не кажутся менее загогулистее... ;-)

Цитата:
А зачем, собственно, запускать udev на chroot-разделе, если можно просто подмонтировать к нему уже полностью инциированный dev?

Еще раз в ступор... Простите меня
Не знаю... Не вырос еще наверное чтобы узнать... :pardon:

Аватар пользователя DRVTiny

Re: В v.11 загрузчик обновляется по-другому???

Цитата:
Да и проблема на форуме коммунити обсуждалась много раз и рекомендации были такими

Правильно, потому что там все одним и тем же FAQ'ом руководствуются Улыбка

Цитата:
Смотря на Ваши команды, они мне не кажутся менее загогулистее...

Сказывается привычка на все случаи жизни писать BASH-скрипты.
Вот, например:

#!/bin/bash
slf=${0##*/}
x_script () {
exec 1<&3; exit $1
}
exec 3<&1 1>&2
if [ "`whoami`" = "root" ]; then
echo "You must be root to run this script"; x_script 1
fi
if [ $# -eq 0 -o $# -gt 2 ]; then
echo "Usage: $slf "; x_script 1
fi
dev="$1"; shift
if echo $dev | egrep -q "hd[a-d][1-9][0-9]?"; then
echo "Hmm... Get $1 as a first parameter. But it does not look like name of special block device"; x_script 1
fi
fs=${1:-ext3}

[ -d /mnt/chroot ] || mkdir /mnt/chroot
lsmod | cut -f1 -d" " | egrep -q "^${fs}$" && modprobe $fs
mount -t $fs /dev/$dev /mnt/chroot >/dev/null; RETVAL=$?
if [ $RETVAL -eq 0 ]; then
mount /dev /mnt/chroot/dev -o bind &&\
mount /sys /mnt/chroot/sys -o bind &&\
chroot /mnt/chroot /sbin/aspldr
RETVAL=$?
fi
if [ $RETVAL -eq 0 ]; then
echo '[ OK ]'
else
echo '[ FAILURE ]'
fi
x_script $RETVAL

Скрипт вызывается либо так: script_name hda7 ext3, либо так: script_name hda7

Аватар пользователя DRVTiny

Re: В v.11 загрузчик обновляется по-другому???

Цитата:
Еще раз в ступор...
Не знаю... Не вырос еще наверное чтобы узнать...

Кстати, меня тут пытались убедить в том, что на самом деле даже mount /dev /chroot/dev -o bind не нужно (дескать, во всех статьях так сказано, умные люди в списках рассылки тоже так говорят и т.д.) и уж тем более ни к чему mount /sys /chroot/sys -o bind. Не знаю уж, что и сказать по этому поводу. Возможно, висящий в памяти udev просто постоянно просматривает /dev на предмет отустствия в нём файлов устройств, рельно присутствующих в системе и как только мы подсовываем udev'у пустой /dev в chroot-окружении он просто тупо пересоздаёт там все файлы устройств (возможно, по сигналу от
системного вызова chroot) и поэтому делать отображение dev действительно ни к чему (кстати, в этом случае /sbin/start_udev является полнейшей глупостью). Иначе я не понимаю, откуда в /chroot/dev может появиться хоть одно устройство... Само оно там отрастёт что ли?
Но вообщея как-то не склонен считать принципальным вопрос о том, нужно ли вводить эти две "лишние" команды или нет. Во всяком случае, хуже точно не будет, а вероятность получить от aspldr возмущённый окрик "no such device" всё-таки будет поменьше Улыбка

Аватар пользователя Radik

Re: В v.11 загрузчик обновляется по-другому???

DRVTiny писал(а):
Скрипт вызывается либо так: script_name hda7 ext3, либо так: script_name hda7

Я скрипты читать не умею, поэтому объясните мне, непутевому, что делает этот скрипт, устанавливает загрузчик?

DRVTiny писал(а):
Но вообщея как-то не склонен считать принципальным вопрос о том, нужно ли вводить эти две "лишние" команды или нет. Во всяком случае, хуже точно не будет, а вероятность получить от aspldr возмущённый окрик "no such device" всё-таки будет поменьше Улыбка

Как понимаю, много есть способов поставить загрузчик, но вот почему инструкции разработчиков не работают в одиннадцатой? :-?

Аватар пользователя DRVTiny

Re: В v.11 загрузчик обновляется по-другому???

Цитата:
Я скрипты читать не умею, поэтому объясните мне, непутевому, что делает этот скрипт, устанавливает загрузчик?

Да, именно это он и делает. Скопируйте его куда-нибудь на /dev/hda7, установите ему бит исполняемости в правах доступа (chmod a+x /путь/к/скрипту) и пользуйтесь на здоровье. Единственное, я бы пожалуй, ещё немного его поправил (иначе скрипт будет пытаться повторно смонтировать раздел):

#!/bin/bash
slf=${0##*/}
x_script () {
exec 1<&3; exit $1
}
exec 3<&1 1>&2
if [ "`whoami`" = "root" ]; then
echo "You must be root to run this script"; x_script 1
fi
if [ $# -eq 0 -o $# -gt 2 ]; then
echo "Usage: $slf "; x_script 1
fi
dev="$1"; shift
if echo $dev | egrep -q "hd[a-d][1-9][0-9]?"; then
echo "Hmm... Get $1 as a first parameter. But it does not look like name of special block device"; x_script 1
fi
fs=${1:-ext3}
lsmod | cut -f1 -d" " | egrep -q "^${fs}$" && modprobe $fs
pthChroot="`mount | sed -nr \"s%^/dev/$dev\s+on\s+((/[^/]+)+)\s+type.+$%\1%p\"`"
if [ -z "$pthChroot" ]; then
pthChroot=/mnt/chroot
[ -d /mnt/chroot ] || mkdir /mnt/chroot
fi
mount -t $fs /dev/$dev "$pthChroot" >/dev/null; RETVAL=$?
if [ $RETVAL -eq 0 ]; then
mount /dev "$pthChroot/dev" -o bind &&\
mount /sys "$pthChroot/sys" -o bind &&\
chroot "$pthChroot" /sbin/aspldr
RETVAL=$?
fi
if [ $RETVAL -eq 0 ]; then
echo '[ OK ]'
else
echo '[ FAILURE ]'
fi
x_script $RETVAL

Цитата:
Как понимаю, много есть способов поставить загрузчик, но вот почему инструкции разработчиков

Собственно, компания ASPLinux разработчиком GNU/Linux ни в коем разе не является, по сути они такие же пользователи свободной ОСи, как и мы с Вами, только их пользовательская деятельность, в отличие от нашей, поставлена на профессиональную основу.
Вообще для решения проблем, подобных Вашей, нужно в первую очередь понимать, как что в Linux работает, тогда и никакие FAQ'и не понадобятся. А уж если Вы и сами уже кое-что понимаете (а Вы, rrraD, понимаете), то уж и тем более надо поступать в меру своего разумения, пусть даже иногда ошибаясь в чём-то, но искать решение самостоятельно, а не пытаться слепо следовать чужим рекомендациям. Подходите ко всему критически: принимайте чужой опыт только как предмет для углубленного анализа и осмысления, но не как инструкцию по применению жизни ;-)

Аватар пользователя Radik

Re: В v.11 загрузчик обновляется по-другому???

DRVTiny писал(а):
А уж если Вы и сами уже кое-что понимаете (а Вы, rrraD, понимаете), то уж и тем более надо поступать в меру своего разумения, пусть даже иногда ошибаясь в чём-то, но искать решение самостоятельно, а не пытаться слепо следовать чужим рекомендациям. Подходите ко всему критически: принимайте чужой опыт только как предмет для углубленного анализа и осмысления, но не как инструкцию по применению жизни

Спасибо, DRVTiny. Как раз в меру своего понимания я и решил проблему, только совсем не тем способом, которым хотел решить сначала...
У меня получилось благоддаря некоторым знаниям, полученным в ходе общения с Членами клуба и просто пользователями.
Но цель топика была именно в том, чтобы знать решение проблемы имеено из Recovery Console, ведь скоро с этим будут проблемы у новичков, у которых знаний мало...
Если бы у меня не было параллельно установленного дистрибутива, то я бы не загрузил ASP (хотя с другой стороны, если бы у меня не было этого параллельного дистрибутива, я бы не снес загрузчик ASP-а... Катается от смеха )
То есть если бы поставил, к примеру, винду, которая снесла бы загрузчик ASP, то Ваш скрипт мне бы мало помог, потому что аварийный диск (правда он от десятки был) срывается в "кернель паник", а команды, рекомендованные разработчиками не помогут...
Вот хай-то поднимут...

Аватар пользователя DRVTiny

Re: В v.11 загрузчик обновляется по-другому???

Цитата:
То есть если бы поставил, к примеру, винду, которая снесла бы загрузчик ASP, то Ваш скрипт мне бы мало помог, потому что аварийный диск (правда он от десятки был) срывается в "кернель паник", а команды, рекомендованные разработчиками не помогут...

А в чём проблема со скриптом? Вы же всё равно монтируете корневой раздел, в который потом chroot'ом переходите. Вот и запишите туда скрипт. Если это не было сделано заблаговременно, можно и на дискетку скрипт сбросить: выделите этот кусок текста в браузере под Windows, перетащите на иконку флопика - и все дела. Потом можно из флопика запускать скрипт: идеологически это неверно, но практически этому ничто не мешает. То, что ядро впадает в панику, не мудрено совершенно: Вы пытаетесь относительно новый UDev запустить на морально устаревшем ядре. А проблема обратной совместимости касается всего Linux в целом, а далеко не только конкретного дистрибутива ASPLinux. К тому же, почему бы Вам не использовать для ASPLinux 11 консоль восстановления от этого же дистрибутива? Впрочем, я не понимаю, зачем Вам вообще нужно хоть что-то кроме собственно /sbin/aspldr на подмонтированном chroot'е запускать: Вы не пробовали сделать так: mount -t ext3 /dev/hda7 /mnt/chroot; chroot /mnt/chroot, а потом /sbin/aspldr?

Аватар пользователя Radik

Re: В v.11 загрузчик обновляется по-другому???

DRVTiny писал(а):
А в чём проблема со скриптом? Вы же всё равно монтируете корневой раздел, в который потом chroot'ом переходите. Вот и запишите туда скрипт. Если это не было сделано заблаговременно, можно и на дискетку скрипт сбросить: выделите этот кусок текста в браузере под Windows, перетащите на иконку флопика - и все дела. Потом можно из флопика запускать скрипт: идеологически это неверно, но практически этому ничто не мешает.

Хорошо. DRVTiny, попрошу Вашего времени и терпения. Давайте смоделируем ситуацию, когда загрузчик убит заново установленной Windows, а старые комманды не работают. Спросил человечек как решить проблему, увидел этот скрипт, прочитал что ему нужно, но, так же как и я уловил мысль, но фактически как реализовать не знает.
Помогите нам. Распишите что нужно делать от момента копирования скрипта до восстановления загрузчика... Какие комманды нужно вводить?
То что у меня ноут и дисковода для дискет в нем нет, я молчу...

Цитата:
То, что ядро впадает в панику, не мудрено совершенно: Вы пытаетесь относительно новый UDev запустить на морально устаревшем ядре.

Простите, Вы правы, я что-то сразу не сообразил... Простите меня

Цитата:
Вы не пробовали сделать так: mount -t ext3 /dev/hda7 /mnt/chroot; chroot /mnt/chroot, а потом /sbin/aspldr?

В следующий раз попробую обязательно! :good:

Аватар пользователя Shred

Re: В v.11 загрузчик обновляется по-другому???

Цитата:
Вообще для решения проблем, подобных Вашей, нужно в первую очередь понимать, как что в Linux работает, тогда и никакие FAQ'и не понадобятся. А уж если Вы и сами уже кое-что понимаете (а Вы, rrraD, понимаете), то уж и тем более надо поступать в меру своего разумения, пусть даже иногда ошибаясь в чём-то, но искать решение самостоятельно, а не пытаться слепо следовать чужим рекомендациям. Подходите ко всему критически: принимайте чужой опыт только как предмет для углубленного анализа и осмысления, но не как инструкцию по применению жизни ;-)

Сильно сказал, согласен с этой постановой ))

Аватар пользователя DRVTiny

Re: В v.11 загрузчик обновляется по-другому???

Цитата:
Помогите нам. Распишите что нужно делать от момента копирования скрипта до восстановления загрузчика...

Давайте пока без скрипта обойдёмся, коль уж с этим проблемы возникают.
Вот в некотором роде краткая инструкция, что нужно делать для восстановления загрузчика:
1) Грузитесь в консоль восстановления
2) Монтируете корневой раздел того дистрибутива, загрузчик от которого хотите восстановить:
Сначала подгружаем модуль поддержки (драйвер) ФС, в которой отформатирован корневой раздел:
Пример: modprobe ext3
Потом монтируем сам корень.Пример:

[ -d /mnt/chroot ] || mkdir /mnt/chroot
mount -t ext3 /dev/hda7 /mnt/chroot

3) Делаете виртуальное отображение перечня устройств в /dev на пространство будущего chroot-окружения (просто один и тот же /dev будет виден и доступен из 2-х разных каталогов):

mount /dev /mnt/chroot/dev -o bind

4) Переходите в chroot-окружение:

chroot /mnt/chroot

5) Выполняете команду /sbin/aspldr
6) Перезагружаетесь

В chroot-окружении: exit
Ctrl+Alt+Del

Проверьте на своём компьютере: если что-то не работает, могу внести соответствующие поправки и дополнения в "инструкцию" Улыбка

Аватар пользователя Radik

Re: В v.11 загрузчик обновляется по-другому???

Продолжим? ;-)
Все прекрасно до комманды /sbin/aspldr. Вылетает сообщение, мною уже цетированное:
Error: unable to get device name for devise 3,7!
А при наборе /sbin/grub-install hd0, ругается вот как:

/sbin/grub-install hd0: line 220: /dev/null: Permission denied
/dev/hda7: Not found or not a block device

То же самое и при /sbin/grub-install /dev/hda...
Какую же комманду нужно давать чтобы установить загрузчик? :-?

Аватар пользователя DRVTiny

Re: В v.11 загрузчик обновляется по-другому???

А на эту команду: mount /dev /mnt/chroot/dev -o bind ругани никакой не было? Точно? А что видно по команде ls /dev из chroot-окружения? Гм, пожалуй, сам попробую: Вы меня прямо заинтриговали... Улыбка

Аватар пользователя Radik

Re: В v.11 загрузчик обновляется по-другому???

DRVTiny писал(а):
А на эту команду: mount /dev /mnt/chroot/dev -o bind ругани никакой не было? Точно?

Нет, не было. Точно. :-?

Цитата:
А что видно по команде ls /dev из chroot-окружения?

Не знаю, не посмотрел... Простите меня

Цитата:
Гм, пожалуй, сам попробую: Вы меня прямо заинтриговали...

Жду результата! Пока не восстанавливаю загрузчик из-под самого ASP - а, надеясь поэксперементировать... ;-)

Аватар пользователя Armada

Re: В v.11 загрузчик обновляется по-другому???

Вот и у меня тоже самое. Только выглядит немного иначе:
Error: unable to get device name for devise 3,66!

А по команде
ls /dev

выводит
uhci usbmon

Аватар пользователя DRVTiny

Re: В v.11 загрузчик обновляется по-другому?

В chroot-окружении дайте команду /sbin/MAKEDEV и после этого снова ls /dev. Что-нибудь новое появилось?

Аватар пользователя Ali

Re: В v.11 загрузчик обновляется по-другому?

Armada,

Цитата:
* Please choose your root device. Enter -1 to exit *
1) /dev/hdb2
1
Mounting /dev/hdb2 to /mnt/sysimage
Mounting sysfs to /mnt/sysimage/sys
Mounting proc to /mnt/sysimage/proc
Mounting dev to /mnt/sysimage/dev
Your root file system on /dev/hdb2 was mounted to /mnt/sysimage
Please use 'chroot /mnt/sysimage' to change root fs on /dev/hdb2
To rebind loader under /mnt/sysimage, use:
- for GRUB: chroot /mnt/sysimage /sbin/grub-install , f.e. /dev/hdb
- for ASPLoader: chroot /mnt/sysimage /sbin/aspldr
- for LILO: chroot /mnt/sysimage /sbin/lilo
To unmount /mntsysimage, pls umount dev/, proc/ and sys/ folder under /mnt/sys image firstly
Entering Recovery Console
Please note that hardware detection was not automatically performed
To generate hardware list in /etc/devices file type 'detect probe'.

Вольный перевод : " Файловые системы смонтированы в /mnt/sysimage.
Пожалуйста выполните 'chroot /mnt/sysimage' для смены корневой ФС на /dev/hdb2.
Для переустановки загрузчика , выполните: "chroot /mnt/sysimage /sbin/aspldr"
Размонтируйте, exit, reboot.
Пожалуйста отметьте, что обнаружение аппаратных средств не было автоматически выполнено, чтобы сгенерировать список аппаратных средств в /etc/devices напечатайте 'detect probe'." .

Аватар пользователя DRVTiny

Re: В v.11 загрузчик обновляется по-другому???

Цитата:
Пожалуйста отметьте, что обнаружение аппаратных средств не было автоматически выполнено, чтобы сгенерировать список аппаратных средств в /etc/devices напечатайте 'detect probe'." .

Не в этом дело. После загрузки в recovery console в /dev есть все необходимые файлы блочных устройств. А вот после chroot в новом /dev уже нет ничего, при чём даже mount /dev /chroot/dev -o bind не помогает, хотя, например, в knoppix это работает стабильно.

Аватар пользователя Ali

Re: В v.11 загрузчик обновляется по-другому???

Цитата:
Не в этом дело.

Как раз в этом. Если выбрать 1 , т.е монтирование /mnt/sysco средствами recovery concole, то все необходимые ФС ( proc sys и чтото еще tmpfs pts кажется ) будут смонтированы автоматически в /dev устройства будут, но даже этого не достаточно .
Если :

        #chroot /mnt/sysimage /bin/bash
        #/sbin/lilio
        

то :

Цитата:
Error: unable to get device name for devise major,minor!

Иначе:

        #detect probe
        #chroot /mnt/sysimage /bin/bash
        #/sbin/lilio
        

то :

Цитата:
#

Это проверено! Работает.
В Вашем варианте монтирования ИХМО не нужно жать1 (нужно -1)
не нужно подгружать модули о чем свидетельствует вывод lsmod - ext3 и reiserfs точно есть ntsf нету.
Нужно после смены корня запустить udev " /sbin/udevstart для того, чтобы демон udevd связал /dev/sda1 с номерами устройства . Видимо detect probe делает тоже самое о чем и вилимо говорит вывод после нея.

RSS-материал