Wi-Fi-ключ Realtek - Centos7

Вы можете использовать eval для установки параметра. Описание этой команды можно найти здесь. Следующее использование eval является неправильным:

wrong(){
  eval $1=$2
}

Что касается дополнительной оценки evalделает, вы должны использовать

assign(){
  eval $1='$2'
}

Проверьте результаты использования этих функций:

$ X1='$X2'
$ X2='$X3'
$ X3='xxx'
$ 
$ echo :$X1:
:$X2:
$ echo :$X2:
:$X3:
$ echo :$X3:
:xxx:
$ 
$ wrong Y $X1
$ echo :$Y:
:$X3:
$ 
$ assign Y $X1
$ echo :$Y:
:$X2:
$ 
$ assign Y "hallo world"
$echo :$Y:
:hallo world:
$ # the following may be unexpected
$ assign Z $Y
$ echo ":$Z:"
:hallo:
$ # so you have to quote the second argument if its a variable
$ assign Z "$Y"
$ echo ":$Z:"
:hallo world:

Но вы можете достичь своей цели без использования eval. Я предпочитаю этот способ, который более прост.

Следующая функция делает подстановку правильным способом (я надеюсь)

augment(){
  local CURRENT=$1
  local AUGMENT=$2
  local NEW
  if [[ -z $CURRENT ]]; then
    NEW=$AUGMENT
  elif [[ ! ( ( $CURRENT = $AUGMENT ) || ( $CURRENT = $AUGMENT:* ) || \
    ( $CURRENT = *:$AUGMENT ) || ( $CURRENT = *:$AUGMENT:* ) ) ]]; then
    NEW=$CURRENT:$AUGMENT
  else
    NEW=$CURRENT
    fi
  echo "$NEW"
}

Проверьте следующий результат

augment /usr/bin /bin
/usr/bin:/bin

augment /usr/bin:/bin /bin
/usr/bin:/bin

augment /usr/bin:/bin:/usr/local/bin /bin
/usr/bin:/bin:/usr/local/bin

augment /bin:/usr/bin /bin
/bin:/usr/bin

augment /bin /bin
/bin


augment /usr/bin: /bin
/usr/bin::/bin

augment /usr/bin:/bin: /bin
/usr/bin:/bin:

augment /usr/bin:/bin:/usr/local/bin: /bin
/usr/bin:/bin:/usr/local/bin:

augment /bin:/usr/bin: /bin
/bin:/usr/bin:

augment /bin: /bin
/bin:


augment : /bin
::/bin


augment "/usr lib" "/usr bin"
/usr lib:/usr bin

augment "/usr lib:/usr bin" "/usr bin"
/usr lib:/usr bin

Теперь вы можете использовать функцию augment следующим образом, чтобы установить переменную:

PATH=`augment PATH /bin`
CLASSPATH=`augment CLASSPATH /bin`
LD_LIBRARY_PATH=`augment LD_LIBRARY_PATH /usr/lib`

1
30.03.2019, 14:45
1 ответ

Поиск в Google по 0bda:0811показывает, что WiFi-чип в ключе — это Realtek RTL8812au.

Судя по всему, вам может потребоваться собрать драйвер 8812auиз исходного кода.

Здесь, кажется, Centos7 -специальные инструкции по компиляции:

$ yum install -y git gcc kernel-devel
[snip]
$ git clone git@github.com:gnab/rtl8812au.git
Cloning into 'rtl8812au'...
[snip]
$ cd rtl8812au
$ make
[snip]
  LD [M]  /home/steve/wifi/rtl8812au/8812au.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/steve/wifi/rtl8812au/8812au.mod.o
  LD [M]  /home/steve/wifi/rtl8812au/8812au.ko
make[1]: Leaving directory `/usr/src/kernels/3.10.0-514.6.2.el7.x86_64'

Если это удалось, теперь вы можете попробовать загрузить модуль:

$ sudo insmod 8812au.ko

Очевидно, имя адаптера WiFi может использовать префикс enвместо ожидаемого wl. Если ваша система не дает сбоев и, например. Команда ip addr(или виджет рабочего стола NetworkManager, если вы используете один из них ), указывает, что новый сетевой адаптер обнаружен после загрузки модуля, вы можете установить его на постоянной основе с помощью:

$ sudo cp 8812au.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless
$ sudo depmod

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

1
27.01.2020, 23:41

Теги

Похожие вопросы