(Источник)

ОСы с неприступным носителем, т.е. с носителем, информацию на котором физически невозможно изменить, давно и широко известны — это так называемые “live CD” — точнее было бы называть их “live DVD”, т.к. iso-образы многих современных ОС для CD ROM слишком большие. Встречаются iso-образы, которые и на DVD ROM не влезут, но и это не проблема, т.к. файл iso-образа можно использовать и с жесткого диска, например, для установки ОС в виртуальную машину. Но это уже другой случай, а первоначальная идея была прожечь iso-образ на болванке CD или DVD ROM. С такой болванки можно загружать компьютер, и при этом никакие зловреды этому диску не страшны, т.к. он ROM. При этом для полного исключения заражения жестких дисков их вообще можно убрать. Это легко сделать, если HDD внешние, или если они съемные — установлены в Mobile Rack. Однако практическому использованию схемы “только один RO диск” мешают два серьезных неудобства: медленная загрузка (по сравнению с HDD) и невозможность изменять настройки, сохранять историю посещений сайтов, закладки и т.д. Эти неудобства преодолимы, во всяком случае, для простейшего web-серфинга.

Первое неудобство преодолимо использованием загрузочной флеш-карты (“флешки”) с RO форматом, второе — использованием второй флешки для сохранения текущих сохранений (но не для долговременного хранения какой-либо информации). Примером web-серфинга, о котором речь, может быть посещение Хабра: просмотреть информацию о новых публикациях, прочитать заинтересовавшие, прокомментировать, поставить плюсики понравившимся публикациям и комментариям и м.б. сделать собственную публикацию. Для чтения, комментирования и плюсования достаточно web-браузера, а для собственной публикации может пригодиться и простой графический редактор, чтобы подрезать найденную в сети картинку в заставку. Более серьезные графические и другие работы в понятие web-серфинга включать не будем. Эти работы можно делать на другом диске или компьютере, и без Интернета при этом зачастую можно обойтись. Конечно, есть много сложных работ, для которых Интернет совершенно необходим — в таком случае нужны другие решения.

В качестве исходной ОС я выбрал свободно распространяемый iso-образ live CD Knoppix 8.1. Это хорошо зарекомендовавшая себя ОС, в которой, кроме прочего, предусмотрено удобное средство установки ОС со сделанными изменениями на флешку, при этом ее можно сделать только для чтения. Скачав iso-образ, первым делом прожег DVD ROM: для коллекции и чтобы посмотреть скорость загрузки с DVD. (Склонность к коллекционированию CD и DVD здесь недавно обсуждалась и частично осуждалась — не будем возвращаться). Скорость загрузки с DVD ниже сравню со скоростью флешки. Но сначала опишу процесс установки ОС с изменениями на флешку. Этот процесс может быть многопроходным, т.к. трудно сразу все предусмотреть. Поэтому лучше использовать две флешки и два ридера к ним. Третья флешка понадобится для сохранения настроек, ридер к ней можно использовать от второй, если он подходит. Подойдут флешки и на 8 GB, но сейчас меньше 16 GB трудно найти в продаже, только если есть старые. Далее считаем, что система была загружена с флешки. В описании системный язык — английский, но при желании его можно сменить на русский, для этого в запросе “boot:” при загрузке надо набрать:

knoppix lang=ru

Общий вид десктопа после первой загрузки будет не совсем такой, как на приведенном снимке экрана:

Нужно добавить флаг переключения раскладки клавиатуры (русская-английская) в правом нижнем углу. Еще добавим два скрипта start.sh и stop.sh и ярлыки на них. Для этого нажимаем в линейке меню на Files (отмечено на рисунке стрелкой), нажимаем правую кнопку мыши (ПКМ, а левую кнопку будем называть ЛКМ) в окне домашней директории и выбираем в выпадающем меню создание текстового файла (Create NEW > Tex File). Этот файл называем start.sh, а повторив действия — stop.sh. Далее с помощью ПКМ открываем эти файлы (Open With > Text Editor) и копипастим следующее содержимое:

start.sh
# Стартовый скрипт start.sh
log=~/log.txt
echo 'start.sh'>$log
date>>$log

# находим флешку данных:
fdiskLine=`fdisk -l | grep FAT32 | grep -v '\*'`
echo 'fdisk error '$?>>$log
echo 'fdiskLine = '$fdiskLine>>$log
# - ожидаем что-то вроде: fdiskLine = /dev/sde1 8192 15759359 15751168 7.5G b W95 FAT32

saveDev=${fdiskLine:0:9}
echo 'saveDev = '$saveDev>>$log
# - ожидаем что-то вроде: saveDev = /dev/sde1

mount $saveDev
echo 'mount error '$?>>$log
saveDisk='/media'${fdiskLine:4:5}
echo 'saveDisk = '$saveDisk>>$log
# - ожидаем что-то вроде: saveDisk = /media/sde1

dat=$saveDisk'/KnoppixSave/mozilla'
echo 'dat= '$dat>>$log
# - ожидаем что-то вроде: dat = /media/sde1/KnoppixSave/mozilla

# если есть сохраненный профиль firefox,
if [ -d $dat ]; then
# то удаляем профиль firefox, загруженный по умолчанию
	rm -rf ~/.mozilla
	echo 'rm error '$?>>$log
# копируем на его место сохраненный профиль
	cp -r $dat ~/.mozilla
	echo 'cp error '$?>>$log
fi

# запускаем firefox
firefox
echo 'firefox error '$?>>$log



stop.sh
# Стоповый скрипт stop.sh
log=~/log.txt
echo 'stop.sh'>>$log
date>>$log

# находим флешку данных:
fdiskLine=`fdisk -l | grep FAT32 | grep -v '\*'`
echo 'fdisk error '$?>>$log
echo 'fdiskLine = '$fdiskLine>>$log
# - ожидаем что-то вроде: fdiskLine = /dev/sde1 8192 15759359 15751168 7.5G b W95 FAT32

saveDev=${fdiskLine:0:9}
echo 'saveDev = '$saveDev>>$log
# - ожидаем что-то вроде: saveDev = /dev/sde1

mount $saveDev
echo 'mount error '$?>>$log
saveDisk='/media'${fdiskLine:4:5}
echo 'saveDisk = '$saveDisk>>$log
# - ожидаем что-то вроде: saveDisk = /media/sde1

dat=$saveDisk'/KnoppixSave/mozilla'
echo 'dat = '$dat>>$log
# - ожидаем что-то вроде: dat = /media/sde1/KnoppixSave/mozilla

saveLog=$saveDisk'/KnoppixSave/log.txt'
echo 'saveLog = '$saveLog>>$log
# - ожидаем что-то вроде: saveLog = /media/sde1/KnoppixSave/log.txt


# если есть сохраненный профиль firefox,
if [ -d $dat ]; then
# то удаляем этот профиль firefox
	rm -rf $dat
	echo 'rm error '$?>>$log
fi

# сохраняем профиль
cp -r ~/.mozilla $dat
echo 'cp error '$?>>$log
cp $log $saveLog

# выключаем компьютер 
sudo poweroff



Можно сделать эти файлы в другой ОС и скопировать, а можно открыть Firefox и зайти на эту страницу Хабра. В любом случае хватаем файл ЛКМ, тянем его на десктоп, отпускаем ЛКМ, в выпавшем меню выбираем Link here. Еще нужно разрешить этим файлам исполняться. Для этого жмем ПКМ на start.sh и выбираем Properties в выпавшем меню. Откроется диалог, который нужно привести к следующему виду:

Аналогичные действия производим со stop.sh. О назначении скриптов будет рассказано ниже.

Проделав описанные действия, можем дополнительно изменить настройки системы. Например, кого-то могут раздражать анимации окон при закрытии. “Обои” десктопа тоже могут показаться слишком экстравагантными. Далее, не перегружая ОС, делаем ее клон на новой флешке. Для этого устанавливаем флешку во второй ридер — системную трогать нельзя (об этом высвечивается предупреждение в начале загрузки ОС). Нажимаем на пиктограмму дискеты (“Install KNOPPIX to ...”) в левом верхнем углу экрана. В раскрывшемся диалоге выбираем сменный носитель, а потом нашу флешку “куда”:

Соглашаемся на удаление с нее всей бывшей информации и выбираем RO формат:

Далее жмем Yes, в том числе и на переделку ОС:

Любуемся на “градусник”, но вот когда он дойдет до конца и пропадет — тут главное не торопиться вынимать флешку!

Если ридер с лампочкой/светодиодом, то будет видно мигание — процесс не закончился. Нужно дождаться заключительного сообщения (иначе флешка грузиться не будет):

Только теперь можно выбрать в меню Logout и Shutdown в открывшемся диалоге:

Весь процесс установки системы на флешку занимает на моем ПК около 9 минут — “около”, потому что процесс диалоговый и общее затраченное время зависит от скорости реакции пользователя. С DVD ROM система загружается 160 сек., а с флешки всего за 32 сек. Скрипт start.sh отрабатывает за 20 сек., а stop.sh за 25 сек. до полного выключения ПК.

В том, что полученная флешка read-only, легко убедиться — сделать какие-либо изменения и перегрузить систему — изменения исчезнут. Как уже сказали выше, для web-серфинга достаточно браузера. В Knoppix по умолчанию это Firefox. Его профиль (настройки, историю, закладки и т.д.) будем сохранять на флешке для сохранения. Казалось бы, для этого можно использовать менеджер профиля Firefox. Но, к сожалению, там прописывается фиксированный путь к папке с профилем, а флешка сохранения может смонтироваться под разными именами, например, sda1 и sde1 в зависимости от того, проводилась ли загрузка ОС в присутствии этой флешки или пользователь установил ее уже после загрузки. Не найдя папки профиля, Firefox сильно обижается. Поэтому и пришлось добавить скрипты start.sh и stop.sh. Загрузив ОС, жмем ЛКМ на ярлыке start.sh (флешка сохранения должна быть установлена и на флешке должна быть папка KnoppixSave). Скрипт отыскивает эту флешку и, если в папке KnoppixSave есть папка mozilla, то содержимое последней копируется на место удаленной папки .mozilla в домашней директории ОС. Это папка с профилем Firefox. Потом запускается Firefox. Закончив серфинг, закрываем Firefox и жмем ЛКМ на ярлыке stop.sh — происходят обратные действия по копированию профиля Firefox в папку KnoppixSave флешки сохранения. Потом следует команда на выключение ПК. Код ошибки каждой команды скрипты пишут в лог-файл.

Должен отметить, что никогда не работал системным программистом и писал скрипты по мере личной необходимости, т.е. нечасто, т.о. опыт в этом деле у меня небольшой, и те, кому приходится это делать каждый день, безусловно смогут предложить более элегантные решения — Welcome! Тем же, кто знает еще меньше меня, поясню, что знак решетки “#” обозначает начало комментария, что команды скрипта можно по одной копировать в Terminal (его пиктограмма справа от Files — см. снимок) и смотреть, какой будет результат выполнения. Чтобы получить справку о команде, надо в Terminal'e набрать эту команду, а потом “ --help”. Еще больше можно узнать, если погуглить на слово “bash” — в частности, на Хабре есть очень хорошие руководства.

Обозначим как $S$ все уязвимости ОС за исключением уязвимостей Firefox, связанных с профилем, которые обозначим как $F$, тогда при обычной установке на жесткий диск общая уязвимость ОС будет $S+F$, а в нашем случае только $F$. C большой долей вероятности можно предположить, что $S+F>F$. Для предотвращения проникновения зловредов через флешку сохранения на другие диски в случае, когда эта флешка используется вместе с ними под MS Windows, например, для перенесения скачанного из сети файла, на эту флешку стоит поставить защиту от autorun-вирусов, а в Windows отключить автозапуск. Конечно же, при этом Windows нужны и обычные системы охраны от зловредов.

К сожалению, флешки, как и всякие электронные устройства, иногда перегорают, причем делают это в самый неподходящий момент. Поэтому при достижении удобной конфигурации ОС систему стоит установить и на вторую флешку, которая будет запасной. По мере необходимости конфигурации можно обновлять, переписывая флешки.

Комментарии (4)


  1. Cheater
    19.12.2017 20:22

    флешка сохранения может смонтироваться под разными именами, например, sda1 и sde1 в зависимости от того, проводилась ли загрузка ОС в присутствии этой флешки или пользователь

    Это решается использованием UUID-ов разделов вместо имён разделов (/dev/sda1 ит.д.).

    флешки, как и всякие электронные устройства, иногда перегорают

    наверное всё-таки «отказывают» или «выходят из строя» :) «Перегорают» = «становятся жертвой перегрева/возгорания электротехники, короткого замыкания и тд.»

    start.sh, script.sh

    ИМХО вам нужен OverlayFS вместо самописных скриптов.

    Ещё одним недостатком этой системы является необходимость постоянно держать флешку №1 воткнутой.
    Я использую для этих же целей другой способ — initrd-only дистрибутив. Т.е. взял initrd из первого попавшегося линукса, добавил модули ядра, софт, менеджер пакетов, ит.д., запаковал обратно, и указал /dev/ram0 в качестве root в загрузчике. После загрузки софт доустанавливается при необходимости. Сейчас у компьютеров/ноутов оперативная память большая (4 Гб, 8 Гб, 16 Гб) и в неё легко помещается практически полноценный образ ОС. Бонусом получаем высокое быстродействие файловой системы (tmpfs).


    1. third112 Автор
      20.12.2017 05:41

      Спасибо за интересный комментарий — есть над чем подумать. По первому впечатлению возникли следующие сомнения. ИМХО это нормально и не означает «нет, никогда».

      Это решается использованием UUID-ов разделов вместо имён разделов (/dev/sda1 ит.д.).
      Предлагаете вручную записать в скрипт UUID флешки сохранения? Но это привязка к конкретной флешке. А если она переполнится? Нпр., подбираю линукс под конкретную задачу и качаю всё подряд (ну почти всё :) Сейчас я могу взять другую флешку, сделать на ней пустую папку KnoppixSave и продолжать качать линуксы. А в предложенном Вами подходе нужно будет менять UUID в стоповом скрипте, а возможно и в стартовом — зависит с какой флешкой буду работать в следующий раз. Т.о. путаница неизбежна.

      наверное всё-таки «отказывают» или «выходят из строя» :) «Перегорают» = «становятся жертвой перегрева/возгорания электротехники, короткого замыкания и тд.»
      Судя по публикациям многочисленных исследований причин отказа электроники очень часто в микросхемах случаются именно локальные микроперегревы. Причиной может быть скрытый дефект в проводнике или полупроводнике. Данная статья не вдается в такие подробности, и мне представлялось тут вполне допустимым разговорное слово «перегорают». Но в принципе Вы правы: «отказывают» или «выходят из строя» будет звучать строже.

      ИМХО вам нужен OverlayFS вместо самописных скриптов.
      Возможно. Но ИМХО для описания в Tutorial это будет более сложное решение. А сейчас получился Tutorial, которым может воспользоваться почти неподготовленный пользователь.

      Ещё одним недостатком этой системы является необходимость постоянно держать флешку №1 воткнутой.
      Я использую для этих же целей другой способ — initrd-only дистрибутив. Т.е. взял initrd из первого попавшегося линукса, добавил модули ядра, софт, менеджер пакетов, ит.д., запаковал обратно, и указал /dev/ram0 в качестве root в загрузчике. После загрузки софт доустанавливается при необходимости. Сейчас у компьютеров/ноутов оперативная память большая (4 Гб, 8 Гб, 16 Гб) и в неё легко помещается практически полноценный образ ОС. Бонусом получаем высокое быстродействие файловой системы (tmpfs).
      И Knippix можно грузить с параметром toram. Но на мой взгляд постоянно держать флешку №1 воткнутой не является недостатком. Наоборот, если я захочу перегрузить систему, а флешка вынута, то придется делать лишние движения по втыканию флешки :) Что касается бонуса быстродействия файловой системы, то ИМХО пользователь его не заметит и поэтому не оценит — и так работает быстро для простого серфинга.


      1. delvin-fil
        23.12.2017 10:15

        Предлагаете вручную записать в скрипт UUID флешки сохранения? Но это привязка к конкретной флешке.

        Можно и не UUID:
        cat /etc/fstab |grep -i flash
        LABEL="FLASH"   /mnt/flash	vfat    noauto,users,rw 0 0
        


  1. third112 Автор
    20.12.2017 05:39

    Не та ветка