Если решение bcmwl-kernel-source
вам не помогло, и вы хотите оставить включенной безопасную загрузку, попробуйте следующее:
Создать набор ключей для подписи:
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive common name/"
Импортируйте ключ. Здесь вам будет предложено ввести пароль, который вам нужно запомнить. Ваш BIOS должен запросить пароль после перезагрузки.
sudo mokutil --import MOK.der
Перезапуск:
reboot
BIOS должен был запросить пароль. Предполагая, что это сработало, вы захотите проверить, успешно ли зарегистрирован ваш MOK.
mokutil --test-key MOK.der
Ваш MOK зарегистрирован. Вам нужно будет установить драйверы для вашего Wi-Fi.
git clone https://github.com/lwfinger/rtlwifi_new.git
cd rtlwifi_new
git checkout extended
sudo make install
Ваши драйверы доступны для добавления в ядро, но перед добавлением их необходимо подписать, поскольку у вас включена безопасная загрузка. Поэтому используйте сгенерированные ранее ключи для подписи драйверов.
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256./MOK.priv./MOK.der $(modinfo -n rtlwifi)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256./MOK.priv./MOK.der $(modinfo -n rtl_pci)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256./MOK.priv./MOK.der $(modinfo -n btcoexist)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256./MOK.priv./MOK.der $(modinfo -n rtl8723-common)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256./MOK.priv./MOK.der $(modinfo -n phydm_mod)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256./MOK.priv./MOK.der $(modinfo -n rtl8723de)
Наконец, добавьте драйверы rtl8723de
в ядро в следующем порядке
sudo modprobe -r rtlwifi
sudo modprobe rtlwifi
sudo modprobe -r rtl_pci
sudo modprobe rtl_pci
sudo modprobe -r btcoexist
sudo modprobe btcoexist
sudo modprobe -r rtl8723-common
sudo modprobe rtl8723-common
sudo modprobe -r phydm_mod
sudo modprobe phydm_mod
sudo modprobe -r rtl8723de
sudo modprobe rtl8723de
В примечании :для последнего шага вы можете просто написать:
sudo modprobe -r rtl8723de
sudo modprobe rtl8723de
modprobe
знает, от каких драйверов зависит rtl8723de
, и поэтому должен иметь возможность добавлять все, от чего зависит rtl8723de
, вместе с rtl8723de
. Однако я не добавлял свои драйверы таким образом, поэтому не могу гарантировать, что эта опция будет работать.
Ответ на ваш вопрос в его нынешнем виде заключается в том, что Bash вызывает последнюю определенную версию функции.
Использование двух модифицированных версий вашего примера:
function1.sh
usage () { echo "Usage from function1.sh - No arguments are needed"; }
myfunction1 () {
if [[ $# -gt 0 ]] ;
then
usage
fi
echo "Hello World"
}
function2.sh
usage () { echo "Usage from function2.sh - No arguments are needed"; }
myfunction2 () {
if [[ $# -gt 0 ]] ;
then
usage
fi
echo "Hello World"
}
Затем работает
$ source function1.sh
$ source function2.sh
$ usage
даст результат
Usage from function2.sh - No arguments are needed
Обратите внимание, что в вашем скрипте:
-qt
должно быть -gt
, и; usage()
-вокругecho
Я не хочу лишать плаката надо мной правильного ответа, так как он прямо ответил на мой вопрос.
Тем не менее, я хочу опубликовать продолжение.
Вместо источника функции я добавил каталог, в котором находится function.sh, в PATH и переименовал файл в myfunction. В самой последней строке файла myfunction myfunction $@
.