Сделал систему загружаемую полностью в оперативную память. Плюсы:
- Неубиваемость, пока есть электричество.
- Всё очень быстро (быстрее чем SSD), ну это понятно, всё в оперативной памяти работает, к диску обращений нет (в том числе, просмотр онлайн-фильмов, youtube, да даже просто сайты открываются мгновенно).
- Неизменность системы, можно устанавливать что хочешь, пробовать какие угодно программы, а потом просто перезагрузиться (если ничего не нужно).
- Все изменения делаешь вручную, полностью контролируя систему.
Минусы:
- Нужные изменения приходится делать вручную (добавил закладку в браузере, копируешь изменённые файлы на диск), но так как полная копия системы находится на диске, это не сложно.
- Долгое время загрузки ОС. Для 8-9GB это 7 минут. Но привыкнуть можно, плюс можно предпринять необходимые шаги для уменьшения места занимаемого разделом (логи и тд.)…
- Нет решения для Calculate Linux.
Вот моё решение, основанное на заметках 2011 и 2015 годов, но для Debian-подобных дистрибутивов. Там для создания initrd используется mkinitrd, а в Calculate Linux для создания этого файла используется или dracut или genkernel. Куда вставлять и каким будет код, мне не ясно. Кто может помочь?
**Способ: **
1. В файле /usr/share/initramfs-tools/scripts/local ищем на строках 179-185 (предварительно сделав бэкап файла):
checkfs "${ROOT}" root "${FSTYPE}"
# Mount root
# shellcheck disable=SC2086
if ! mount ${roflag} ${FSTYPE:+-t "${FSTYPE}"} ${ROOTFLAGS} "${ROOT}" "${rootmnt?}"; then
panic "Failed to mount ${ROOT} as root file system."
fi
И меняем этот код на такой:
#checkfs "${ROOT}" root "${FSTYPE}"
# Mount root
# shellcheck disable=SC2086
mkdir /ramboottmp
mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} /ramboottmp
mount -t tmpfs -o size=100% none ${rootmnt}
cd ${rootmnt}
cp -rfa /ramboottmp/* ${rootmnt}
umount /ramboottmp
2. Сохраняем файл. И вводим команду в терминале от рута:
mkinitramfs -o /boot/initrd.img-ramboot
3. Проверяем, что файл создан в папке /boot и возращаем старый local в папке /usr/share/initramfs-tools/scripts/local на место (или удаляем все наши изменения, которые мы сделали в шаге 1).
4. Идём в папку /etc и находим файл fstab, сохраняем его копию и редактируем его, ищем в первых строках что-то вроде этого:
UUID=35378150-4a4b-4405-b856-c5f533a971e2 / ext4 defaults 1 1
и меняем на:
none / tmpfs defaults 0 0
5. Сохраняем и идём в папку /boot/grub, находим grub.cfg и изменяем (предварительно сохранив копию) эти строки 106-121:
menuentry 'MX 19.2 patito feo, with Linux 4.19.0-12-amd64' --class mx --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-12-amd64-advanced-35378250-4a4b-4405-b956-c5f546a970e2' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd2,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos3 --hint-efi=hd2,msdos3 --hint-baremetal=ahci2,msdos3 35378250-4a4b-4405-b956-c5f546a970e2
else
search --no-floppy --fs-uuid --set=root 35378250-4a4b-4405-b956-c5f546a970e2
fi
echo 'Loading Linux 4.19.0-12-amd64 ...'
linux /boot/vmlinuz-4.19.0-12-amd64 root=UUID=35378250-4a4b-4405-b956-c5f546a970e2 ro quiet hush
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.19.0-12-amd64
}
на тот код, что находится ниже, то есть, просто добавляем ещё одно меню, немного видоизменённое в названии и на строчке initrd (для других систем, этот код меню, естественно, будет другой, но те изменения, которые сделали мы, будут те же самые):
menuentry 'RAMBOOT' --class mx --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-12-amd64-advanced-35378250-4a4b-4405-b956-c5f546a970e2' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd2,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos3 --hint-efi=hd2,msdos3 --hint-baremetal=ahci2,msdos3 35378250-4a4b-4405-b956-c5f546a970e2
else
search --no-floppy --fs-uuid --set=root 35378250-4a4b-4405-b956-c5f546a970e2
fi
echo 'Loading Linux 4.19.0-12-amd64 ...'
linux /boot/vmlinuz-4.19.0-12-amd64 root=UUID=35378250-4a4b-4405-b956-c5f546a970e2 ro quiet hush
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-ramboot
}
menuentry 'MX 19.2 patito feo, with Linux 4.19.0-12-amd64' --class mx --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-12-amd64-advanced-35378250-4a4b-4405-b956-c5f546a970e2' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd2,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos3 --hint-efi=hd2,msdos3 --hint-baremetal=ahci2,msdos3 35378250-4a4b-4405-b956-c5f546a970e2
else
search --no-floppy --fs-uuid --set=root 35378250-4a4b-4405-b956-c5f546a970e2
fi
echo 'Loading Linux 4.19.0-12-amd64 ...'
linux /boot/vmlinuz-4.19.0-12-amd64 root=UUID=35378250-4a4b-4405-b956-c5f546a970e2 ro quiet hush
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.19.0-12-amd64
}
Также скажу, что решение меня полностью устраивает. Даже долгая загрузка не проблема. Главное, что всё быстро и всё под контролем. Только как это адаптировать под Calculate Linux?