[
] Первое, что нужно сделать: ваш файл [] hostname.urtwn0[
] выглядит хорошо, и если бы вы там ошиблись, то получили бы совершенно другие сообщения об ошибках. [
] [
]Сообщение []urtwn0: неудачная загрузка прошивки файла urtwn-rt18192cfwT (ошибка 2)[
] указывает на то, что прошивка установлена не в том месте: [
] [
]Как объяснено в [][]loadfirmware(9)[
][], эта функция возвращает коды ошибок стиля []errno[
]: и [][]errno(2)[
][] объясняет:[
] [
2 ENOENT No such file or directory.
A component of a specified pathname did not exist, or the pathname
was an empty string.
] [
]Для загрузки драйвера должен быть файл []/etc/firmware/urtwn-rt18192cfwT[
]. []1[] Скорее всего, вы не найдете этот файл в дереве.[
] [
][][]1[]Смотрите конец ответа для получения более подробной информации[][
] [
] [
][]Предположим, у вас есть []какой-то [] способ подключения вашего ящика к интернету:[][
] [
]Попробуйте запустить []fw_update -v[
] для установки прошивки и убедитесь, что файлы находятся в правильном месте и не повреждены. Если повезёт, то это всё, что вам нужно сделать.[
] [
]Если это не удаётся, вы можете попробовать установить прошивку из пакетов или портов []-v[] (сначала прочтите этот FAQ!). На моём локальном зеркале нет пакетов []urtwn[
]-связанных с [], так что вам, вероятно, нужно использовать дерево портов.[
] [
]Установите дерево портов, как описано в []FAQ[], затем запустите []сделайте install[
] корневой из []/usr/ports/sysutils/firmware/urtwn[
]. [
] [
] [
][]Если вы не можете подключить свой бокс к Интернету:[][
] [
]Прошивку можно загрузить вручную с [][]http://firmware.openbsd.org/firmware-dist/urtwn-1.1p0.tgz[
][]. Возьмите ее оттуда, бросьте на USB-флешку и скопируйте в вашу коробку OpenBSD. Распакуйте архив и переместите файлы []urtwn-*[
] в []/etc/firmware/[
].[
] [
] Если это сработает, рекомендуется запустить []fw_update -v[
], как только у вас появится сетевое соединение. Таким образом, прошивка будет отслеживаться и при необходимости обновляться сценариями обслуживания системы.[
] [
] [
]Если всё это не помогает, то, вероятно, вам следует обратиться к спискам рассылки [][]. Люди там в основном дружелюбные и полезные, если вы сделали домашнее задание[]2[].[
] [
][][]2[] Драйвер упоминается несколько раз на []misc@openbsd.org[]. Например, были проблемы с USB, проверьте, не связано ли что-нибудь с тем, что вы видите перед отправкой.[][
] [
] [
][]Added:[][
] [
]Я посмотрел на исходный код, и единственный способ получить это сообщение об ошибке - из функции []urtwn_load_firmware()[
], в []sys/dev/usb/if_urtwn. c[
] в строке []2194[
]:[
] [
/* Read firmware image from the filesystem. */
if ((sc->chip & (URTWN_CHIP_UMC_A_CUT | URTWN_CHIP_92C)) ==
URTWN_CHIP_UMC_A_CUT)
name = "urtwn-rtl8192cfwU";
else
name = "urtwn-rtl8192cfwT";
if ((error = loadfirmware(name, &fw, &len)) != 0) {
printf("%s: failed loadfirmware of file %s (error %d)\n",
sc->sc_dev.dv_xname, name, error);
return (error);
}
] [
]Функция []loadfirmware()[
] (в []sys/dev/firmload.c[
]) генерирует путь []/etc/firmware/urtwn-rtl8192cfwT[
] и пытается загрузить этот файл в память адаптера USB. Так как он не может найти файл, вы получаете сообщение об ошибке.[
].
Если вы хотите заменить текст в файле на GNU sed
, вы можете сделать:
sed -i 's/code_0*\([0-9]\)/code_\1/g' file.txt
или
perl -i -pe 's/code_0+(\d+)/code_$1/g' file.txt
Это изменит исходный файл, удалит -i
, чтобы файл оставался неизменным, или даст аргумент -i
для создания файла резервной копии (это создаст копию оригинала с именем file.txt.bak
):
perl -i.bak -pe 's/code_0+(\d+)/code_$1/g' file.txt
Самый простой способ - использовать sed:
for file in code_*; do
newname=$(echo $file | sed 's/_0*/_/')
mv "$file" "$newname" #you may want to use -i to avoid accidents
done
Я обычно записываю это в одну строку.
Внешний цикл может быть любым: цикл for с глобусом, как указано выше, список файлов или даже команда поиска, переданная по конвейеру при чтении;