URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 60579
[ Назад ]

Исходное сообщение
"FreeBSD + speaker - раздражает при загрузке"

Отправлено Dorlas , 03-Окт-05 12:47 
Столкнулся с такой вещью - совсем не понятно, как отключать пищалку FreeBSD при появлении меню загрузчика FreeBSD. (F1, F2 и т.д.).

Система: FreeBSD 4.x, 5.x, 6.x.
Железо: Ноутбук Iru Novia 3221W

Как меню появляется, раздается громоподобный сигнал из Speaker-а.

Искал в форуме и по Интернету - ничего похожего.

Можно ли вообще это сделать?


Содержание

Сообщения в этом обсуждении
"FreeBSD + speaker - раздражает при загрузке"
Отправлено lavr , 03-Окт-05 17:13 
>Столкнулся с такой вещью - совсем не понятно, как отключать пищалку FreeBSD
>при появлении меню загрузчика FreeBSD. (F1, F2 и т.д.).
>
>Система: FreeBSD 4.x, 5.x, 6.x.
>Железо: Ноутбук Iru Novia 3221W
>
>Как меню появляется, раздается громоподобный сигнал из Speaker-а.
>
>Искал в форуме и по Интернету - ничего похожего.
>
>Можно ли вообще это сделать?

что ЭТО? оборви один контакт у динамика или приделай размыкатель on/off
ну или ищи в /sys/boot printf и mov в порт спикера


"FreeBSD + speaker - раздражает при загрузке"
Отправлено Dorlas , 03-Окт-05 17:31 
Ну у ноутбука контакт не больно-то оторвешь :)

То есть такая возможность не предусмотрена.


"FreeBSD + speaker - раздражает при загрузке"
Отправлено lavr , 03-Окт-05 18:29 
>Ну у ноутбука контакт не больно-то оторвешь :)
>
>То есть такая возможность не предусмотрена.

на этапе загрузки не предусмотрена и логика этого понятна.
как вариант, можно внимательно разобрать работу меню и как loader
его парсит, возможно там можно убрать beep:

# ls -la /boot/*.4th

можно из /boot/loader.rc убрать запуск менюшки beastia и использовать
как раньше лишь loader.4th, а все необходимые ядреные переменные
прописать в /boot/loader.conf.local, возможно бипать не будет


"FreeBSD + speaker - раздражает при загрузке"
Отправлено Dorlas , 03-Окт-05 22:13 
Lavr - спасибо за толчок (без него не стал бы разбираться, так как я не программист).

После часового ковыряния в носу проблему решил (оставляю для потомков и просто интересующихся) :)

Задача: Отключить Beep при появлении меню стандартного загрузчика FreeBSD
(который достал меня по самое не балуйся)...

1. Заходим по следующему пути: /usr/src/sys/boot/i386/boot0
2. Правим файл: boot0.S
3. Находим строки:

main.10:    movb $ASCII_BEL,%al        # Signal
        callw putchr            #  beep!
        xorb %ah,%ah            # BIOS: Get
        int $0x1a            #  system time
        movw %dx,%di            # Ticks when
        addw _TICKS(%bp),%di        #  timeout

4. Убираем первые 2, получаем:

main.10:    xorb %ah,%ah            # BIOS: Get
        int $0x1a            #  system time
        movw %dx,%di            # Ticks when
        addw _TICKS(%bp),%di        #  timeout

5. Выполняем: make depend && make all && make install
6. Заходим в /boot, проверяем, что файл boot0 изменился: ls -l /boot/boot0
7. Если поменялся, то все ок - инсталлируем (далее по ману FreeBSD):

8. fdisk -B -b /boot/boot0 /dev/ad0

Перезагружаемся...наслаждаемся тишиной (а то меня за эти Beep-ы чуть сегодня на работе не убили...) :)

Отдельное спасибо разработчикам FreeBSD (без строк Signal Beep черта с два у меня бы чего получилось) :) :) :)


"FreeBSD + speaker - раздражает при загрузке"
Отправлено lavr , 04-Окт-05 12:10 
>Lavr - спасибо за толчок (без него не стал бы разбираться, так
>как я не программист).
>
>После часового ковыряния в носу проблему решил (оставляю для потомков и просто
>интересующихся) :)
>
>Задача: Отключить Beep при появлении меню стандартного загрузчика FreeBSD
>(который достал меня по самое не балуйся)...
>
>1. Заходим по следующему пути: /usr/src/sys/boot/i386/boot0
>2. Правим файл: boot0.S
>3. Находим строки:
>
>main.10: movb $ASCII_BEL,%al  # Signal
>  callw putchr   #  beep!
>  xorb %ah,%ah   # BIOS: Get
>  int $0x1a   #  system time
>  movw %dx,%di   # Ticks when
>  addw _TICKS(%bp),%di  #  timeout
>
>4. Убираем первые 2, получаем:
>
>main.10: xorb %ah,%ah   # BIOS: Get
>  int $0x1a   #  system time
>  movw %dx,%di   # Ticks when
>  addw _TICKS(%bp),%di  #  timeout
>
>5. Выполняем: make depend && make all && make install
>6. Заходим в /boot, проверяем, что файл boot0 изменился: ls -l /boot/boot0
>
>7. Если поменялся, то все ок - инсталлируем (далее по ману FreeBSD):
>
>
>8. fdisk -B -b /boot/boot0 /dev/ad0
>
>Перезагружаемся...наслаждаемся тишиной (а то меня за эти Beep-ы чуть сегодня на работе
>не убили...) :)
>
>Отдельное спасибо разработчикам FreeBSD (без строк Signal Beep черта с два у
>меня бы чего получилось) :) :) :)

я побоялся про это написать, думалка у всех по разному заточена, еще
наворотят... У многих она на правильном месте и когда при чтении это
видишь - очень приятно.


"FreeBSD + speaker - раздражает при загрузке"
Отправлено Dorlas , 04-Окт-05 13:24 
>я побоялся про это написать, думалка у всех по разному заточена, еще
>наворотят... У многих она на правильном месте и когда при чтении это
>видишь - очень приятно.

Если интересно, расскажу, как я дошел до такой потребности :)

На ноуте была следующая конфигурация: /dev/ad0

/dev/ad0s1 - Windows XP Home Edition (30 Гб)
/dev/ad0s2 - FreeBSD 5.4-Stable      (5 Гб)
/dev/ad0s5 - партиция для разворачивания какой-либо ОС для тестирования ПО (в основном Windows и Linux)

Вообще по жизни привык пользоваться загрузчиком от Windows XP, прописывая туда другие ОС (Free, Linux и т.д).

Если же кто-то перезаписывал MBR, то восстанавливал загрузочным CD с XP через fixmbr.

В выходные скачал нахаляву (что бывает редко) через cvs исходники RELENG_6, решил таки посмотреть, что там изменилось. Основную FreeBSD стало жалко (там и Xorg, и куча программ, все руссифицировано, SpeedStep и.т.д.) - решил FreeBSD поставить на 3-ю партицию.
Навернул FreeBSD 5.4, закачал новые исходники, make world - и т.д.
Все круто, все классно (наконец-то завелась моя WIFI, да и GEOM GELI впечатлила :) ).

Но загрузчик (который тогда успешно грузил и Windows и обе Free) нещадно пищал.

Гружусь с CD XP, fixmbr...
reboot... и...

Сразу грузится FreeBSD 5.4-Stable (которая у меня на /dev/ad0s2).

Далее свои действия подробно описывать не буду - признаюсь, немного растерялся и наделал ошибок (с кем не бывает) :) Короче сделал fixboot, которая (я потом вспомнил) записалась на disk E, якобы там FAT.

После чего кроме строк NTLDR is missing никого не наблюдалось :)

Гружусь с Frenzy (все живы, никто не умер)...
fixboot, fixmbr (уже с чтением help :) ). Не помогает.

В конце концов взял из коробки XP Home Recovery CD, запустил установку, и после первого ребута все вернулось (загрузчик ожил).

Удалил папку windows.0, снес из boot.ini лишнее (про новую XP).

Обе мои Free не грузятся.

Гружусь с Frenzy, оказалось, что fixboot грохнул таблицу разделов /dev/ad0s2 (где у меня много чего нужного).

Ввожу help, читаю...читаю...Ага: scan_ffs.

1. fdisk /dev/ad0 (записываю стартовый блок, и конечный блок второй партиции).
2. scan_ffs -l -b xxx -e xxx /dev/ad0
3. Scan_ffs неоднозначного мнения о партициях /tmp и /usr.
4. bsdlabel -e /dev/ad0s2 - нифига, ее там вообще нет :)
5. bsdlabel -w /dev/ad0s2 - создал чистую, самое главное - c:
6. Начинаю записывать a:, b:, ...
7. Корень восстановил с первой попытки (и сразу скинул /etc, /root, /boot на флешку) :)
8. А вот со всем остальным плясал часа 3 - в конце концов все восстановил (калькулятор нашел, без него труба) - фря грузится через boot.ini - и функционирует как ни в чем не бывало.

Возник баг: Через boot.ini не грузится FreeBSD 6.0-BETA5 (которая последней стоит) - вместо нее начинает грузится FreeBSD 5.4-STABLE.

Долго искал, читал ман. Плюнул, fdisk -B -b /boot/boot0 /dev/ad0 - из 3-й Free, делал из Frenzy.

Итог: Загрузчик FreeBSD (F1: Dos, F2: FreeBSD, F3: FreeBSD), 1-й и 3-й вариант работают, 2-й - нет.
Выбирая F1, появляется меню загрузчика XP, там выбираю FreeBSD-5.4 - все грузится :)

А так как первый загрузчик сильно beep-ал (уже нет), то решил это дело отключить.

Вот такая история :)