Вопрос
Можно ли при загрузке Linux добавить параметр в строку «vmlinuz…», который запретит ОС когда-либо (по крайней мере в этом сеансе) видеть или получать доступ к твердотельным накопителям NVMe, при этом все остальное оборудование останется обнаруживаемым и монтируемым?
Контекст
Я довольно новичок в Linux и все еще учусь. Я хочу создать мультизагрузочную установку (с разных дисков, а не с разных разделов), где каждый экземпляр ОС фактически «изолирован» от другого. Затем я могу выбрать, с какого диска загружаться в BIOS при запуске, и какой бы диск ни загружался, эта ОС не сможет увидеть другой диск.
Я использую ноутбук, на котором физически менять диски нецелесообразно (по крайней мере, нечасто), и я хочу запускать Win 10 Pro с моего диска NVMe (при этом диск SATA будет отключен в диспетчере устройств) и экспериментировать с различными дистрибутивами Linux, запуская их с моего диска SATA или Live CD (при этом диск NVMe будет для них невидимым), при этом сохраняя данные на моем диске NVMe в безопасности.
Некоторая системная информация
- BIOS
AMI Aptio 2.18.126
Прошивка версии 1.05.03 - Чипсет
Intel Z170 - Семейство процессоров
Skylake - NVMe-накопитель
Samsung 950 Pro - SATA-диск
Samsung 850 Pro
Большое спасибо @EugenRieck, @davidgo, @TwistyImpersonator, @dirkt, @KamilMaciorowski и всем, кто нашел время ответить.
В ответ на вопрос Дирка. Я стремился к мультизагрузочной настройке, где «диск a» с его данными и ОС был бы изолирован от всего, что работало на «диске b». В идеале было бы удобно отключить выбранный диск (или порт диска) в BIOS или, что еще лучше, через аппаратный переключатель, но в моей системе такой возможности нет. Я видел некоторые вещи, ссылающиеся на настройку параметров ядра Linux при загрузке через командную строку, поэтому я задался вопросом, могу ли я отключить диск таким образом. Такой подход показался мне удобным, поскольку его было бы легче применить к чему-то вроде предварительно настроенного Live CD, а также ко всему, что я мог бы установить и настроить на «диске b». (Еще раз спасибо Eugen за подробности о том, как это сделать). Из того, что Дэвид сказал в своем посте, похоже, что такие команды ядра не переопределяют, и при таком подходе все равно будет довольно тривиально, если вредоносная программа попадет на мой диск NVMe, если я, скажем, неправильно настрою IPTables или неправильно настрою виртуальную машину, или установлю пакет, который выглядел так, будто у него есть некоторые уникальные творческие функции, но на самом деле был поврежден. Это верно?
решение1
Это довольно просто: modprobe.blacklist=nvme
для этого достаточно параметра командной строки загрузки.
РЕДАКТИРОВАТЬ
Как и просили в комментариях, вот некоторая предыстория:
modprobe
это механизм, с помощью которого драйверы автоматически загружаются при обнаружении устройства. Поэтому, когда ваш диск NVMe обнаруживается на шине PCIe, он будет вызван для попытки загрузить драйверы.- Поскольку существуют некоторые ситуации, когда вы не хотите, чтобы драйвер загружался автоматически (канонический пример —
nouveau
двоичный драйвер nvidia от поставщика), этот механизм содержит функцию «черного списка», которая остановит автозагрузку драйвера. - Этот черный список можно включить либо редактированием файла,
/etc/modprobe.d
либо через командную строку ядра. Я использовал последний вариант, поскольку в вашем вопросе явно указана командная строка загрузки. - Драйвер (модуль ядра), который делает накопители NVMe доступными как блочные устройства, неудивительно называется «nvme».
Собрав все это вместе, мы получаем упомянутую командную строку - совершенно не редкость использовать такой параметр, особенно с необычными ноутбуками. По сути, это точный аналог отключения драйверов SATA в диспетчере устройств Windows.