Я один из тех неудачников, которые запускали скрипт как su, не читая его содержимого.
Я пытался установить Arduino. Итак, скачал и распаковал установку. Я нашел скрипты под названием install.sh
и arduino-linux-setup.sh
, запустили install.sh
, затем запустили arduino-linux-setup.sh
. install.sh
просто помещает необходимые файлы в необходимые каталоги и создает файлы .desktop. Это невинный сценарий.
Но arduino-linux-setup.sh
удалил мой модем-менеджер, даже не запрашивая разрешения. Результат выглядит следующим образом (изображение).
Вывод сценария arduino-linux-setup.sh:
Он удалил диспетчер модемов, запустив sudo apt-get -y remove modemmanager
Вывод также показал следующую строку.
Создана символическая ссылка /run/systemd/system/ModemManager.service -> / dev / null
Я включаю содержимое arduino-linux-setup.sh
ниже.
refreshudev () {
echo ""
echo "Restarting udev"
echo ""
sudo udevadm control --reload-rules
sudo udevadm trigger
if [ -d /lib/systemd/ ]
then
sudo systemctl restart systemd-udevd
else
sudo service udev restart
fi
}
groupsfunc () {
echo "Add User to dialout,tty, uucp, plugdev groups"
sudo groupadd plugdev
sudo groupadd dialout
sudo usermod -a -G tty $1
sudo usermod -a -G dialout $1
sudo usermod -a -G uucp $1
sudo usermod -a -G plugdev $1
}
acmrules () {
echo "# Setting serial port rules"
cat <<EOF
KERNEL=="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="$1"
KERNEL=="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="$1"
EOF
}
openocdrules () {
echo "# Adding Arduino M0/M0 Pro, Primo UDEV Rules for CMSIS-DAP port"
cat <<EOF
ACTION!="add|change", GOTO="openocd_rules_end"
SUBSYSTEM!="usb|tty|hidraw", GOTO="openocd_rules_end"
#Please keep this list sorted by VID:PID
#CMSIS-DAP compatible adapters
ATTRS{product}=="*CMSIS-DAP*", MODE="664", GROUP="plugdev"
LABEL="openocd_rules_end"
EOF
}
avrisprules () {
echo "# Adding AVRisp UDEV rules"
cat <<EOF
SUBSYSTEM!="usb_device", ACTION!="add", GOTO="avrisp_end"
# Atmel Corp. JTAG ICE mkII
ATTR{idVendor}=="03eb", ATTRS{idProduct}=="2103", MODE="660", GROUP="dialout"
# Atmel Corp. AVRISP mkII
ATTR{idVendor}=="03eb", ATTRS{idProduct}=="2104", MODE="660", GROUP="dialout"
# Atmel Corp. Dragon
ATTR{idVendor}=="03eb", ATTRS{idProduct}=="2107", MODE="660", GROUP="dialout"
LABEL="avrisp_end"
EOF
}
dfustm32rules () {
echo "# Adding STM32 bootloader mode UDEV rules"
cat <<EOF
# Example udev rules (usually placed in /etc/udev/rules.d)
# Makes STM32 DfuSe device writeable for the "plugdev" group
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="664", GROUP="plugdev", TAG+="uaccess"
EOF
}
dfuarduino101rules (){
# Arduino 101 in DFU Mode"
cat <<EOF
SUBSYSTEM=="tty", ENV{ID_REVISION}=="8087", ENV{ID_MODEL_ID}=="0ab6", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_CANDIDATE}="0"
SUBSYSTEM=="usb", ATTR{idVendor}=="8087", ATTR{idProduct}=="0aba", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
EOF
}
removemm () {
# Removing modem manager
sudo apt-get -y remove modemmanager
}
if [ "$1" = "" ]
then
echo ""
echo "Run the script with command ./arduino-linux-setup.sh \$USER"
echo ""
else
[ `whoami` != $1 ] && echo "" && echo "The user name is not the right one, please double-check it !" && echo "" && exit 1
groupsfunc $1
removemm
acmrules $1 > /tmp/90-extraacl.rules
openocdrules > /tmp/98-openocd.rules
avrisprules > /tmp/avrisp.rules
dfustm32rules > /tmp/40-dfuse.rules
dfuarduino101rules > /tmp/99-arduino-101.rules
sudo mv /tmp/*.rules /etc/udev/rules.d/
refreshudev
echo "*********** Please Reboot your system ************"
fi
После запуска скрипта я не смог использовать свой ключ использования.
Как мне отменить то, что скрипт arduino сделал с моей системой, и заставить мой USB-ключ снова работать. Я переустановил модем-менеджер, но он все еще не работает. Есть ли какое-то отношение к созданной символической ссылке? В настоящее время я не могу подключиться к Интернету со своего ноутбука.
Похоже, что это сделает это.
rm /etc/udev/rules.d/90-extraacl.rules
rm /etc/udev/rules.d/98-openocd.rules
rm /etc/udev/rules.d/avrisp.rules
rm /etc/udev/rules.d/40-dfuse.rules
rm /etc/udev/rules.d/99-arduino-101.rules
rm /run/systemd/system/ModemManager.service
Тогда попробуйте это.
systemctl enable ModemManager.service
Чтобы посмотреть, воссоздает ли он правильную ссылку к нему, он должен увидеть ничего, что показывает, что он удалил файл сервиса только с новой ссылкой на / dev / null
в каталоге, что символическая ссылка Предполагается начать с. Затем перезагрузитесь и надеюсь, что он вернулся к нормальному. Редактируйте все команды, работающие с sudo в передней части них, если вы этого не знаете.