Недавно я произвел чистку личинки в своей Системе EFI (перед выяснением: Мне просто не нравится он). Теперь настройки Nvidia и главный выбор бросают ошибку, когда я пытаюсь изменить GPU (который перестал работать из-за этой 'глупой' ошибки):
Info: selecting the intel profile
Traceback (most recent call last):
File "/usr/bin/prime-select", line 298, in <module>
switcher.enable_profile(arg)
File "/usr/bin/prime-select", line 120, in enable_profile
self._disable_nvidia()
File "/usr/bin/prime-select", line 138, in _disable_nvidia
self._update_grub()
File "/usr/bin/prime-select", line 264, in _update_grub
subprocess.call(['update-grub'])
File "/usr/lib/python3.6/subprocess.py", line 267, in call
with Popen(*popenargs, **kwargs) as p:
File "/usr/lib/python3.6/subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.6/subprocess.py", line 1344, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'update-grub': 'update-grub'
Действительно ли это верно они (Nvidia) hardcoded существование личинки в их сценарии? Строки 127-159 из/usr/bin/prime-select:
def _disable_nvidia(self):
boot_params = {}
# Get the VGA connectors to disable on card1
# in the form of boot parameters
vga_params = self._get_boot_params_from_phantom_vga_connectors()
for elem in vga_params:
elems = elem.split('=')
boot_params[elems[0]] = elems[1]
boot_params['nouveau.runpm'] = '0'
self._add_boot_params(self._grub_cmdline_start, self._grub_path, boot_params)
self._update_grub()
self._blacklist_nvidia()
self._update_initramfs()
self._enable_prime_service()
def _enable_nvidia(self):
self._remove_boot_params(self._grub_cmdline_start,
self._grub_path, ['nouveau.runpm', 'video=VGA'])
self._update_grub()
try:
os.unlink(self._blacklist_file)
except:
pass
self._update_initramfs()
self._disable_prime_service()
def _blacklist_nvidia(self):
...
Я не понимаю точно, что сценарий делает подробно и хочет спросить, прежде чем я обвиню Nvidia непосредственно.
С другой стороны, я был бы благодарен, если кто-то мог бы сказать мой который строки прокомментировать (в/usr/bin/prime-select), чтобы просто пропустить материал личинки.Спасибо!
Ну, вы используете дистрибутив Linux, который по умолчанию использует grub
, и многие сценарии предполагают, что инструменты grub
доступны для внесения изменений, которые просты в использовании для обычных пользователей.
Теперь, если вы измените что-то вроде загрузчика, который является неотъемлемой частью дистрибутива, виноват только вы.
Простой способ решить вашу проблему - закомментировать subprocess.call(['update-grub'])
и заменить его на pass
, чтобы функция _update_grub
ничего не делала.
def _update_grub(self):
#subprocess.call(['update-grub'])
pass
Но вы также можете обменяться этой функцией, чтобы обновить загрузчик, который вы используете, чтобы получить возможный вновь созданный начальный виртуальный диск.
Решение состоит в том, чтобы просто добавить пустой файл:/etc/default/grub
Теперь это работает