Linux в оперативной памяти: способ дебирфа Хотите ли вы сегодня иметь абсолютную скорость диска, не так ли? Давайте рассмотрим, как это можно сделать с помощью управления версиями и автоматизацией в 2018 году.
От модератора: к нам в Песочницу пришла статья на английском языке.Мы прочитали это и решили опубликовать в качестве пятничного эксперимента.
Не судите строго, всем мира и счастливой пятницы! Давайте собираться вместе! Короче говоря, от всего сердца.
Список изменений:
- Язык статьи исправлен на английский
- образец репозитория представлен на github
- Добавлены параметры теста
- добавлен asciicast
Прежде чем запускать это руководство, вы должны знать:
- Linux необходим
- основная разница между bash и sh (дебирф написан на sh, поэтому рекомендую следовать стилю)
- как отформатировать флешку (любым способом)
- какие драйверы необходимы для вашего оборудования (или вы можете отладить их через dmesg|lspci)
- как достичь целей вашей задачи с помощью сценариев
вы можете заменить:
- USB-письмо от
/dev/sdb
/dev/sdd
) - рабочий каталог из
/root/Projects/debirf/
to your choice (/home/username/Documents/debirf
) - точка монтирования из
/media/root/8B46-1189
to/media/username/myflashdrive
Шаги по подготовке
Они (необязательно) включают несвободные компоненты для базовой установки.Кроме того, я думаю, вам понадобится несвободный репозиторий.
- открыть строку номер 107 файла
/usr/bin/debirf
likenano +107 $(which debirf)
- найти функцию
create_debootstrap
- найти строку типа
local OPTS="
- добавлять
--components main,contrib,non-free
in brackets
Для начала:
Представим, наша флешка:- должен быть быстрым, поэтому рекомендуется использовать класс 8+, иначе загрузка займет достаточно времени
- /dev/СДБ
- отформатированный
- установлен на
/media/root/8B46-1189
. - наш рабочий каталог
/root/Projects/debirf/
Установить дебирф
apt-get install -yq debirf mtools genisoimage
- mtools, необходимые для создания iso через debirf (не работает, но необходимо)
- genisoimage необходим для создания настоящего рабочего ISO (необязательно)
Подготовьте рабочий каталог debirf
mkdir -p /root/Projects/debirf
tar xzf /usr/share/doc/debirf/example-profiles/rescue.tgz -C /root/Projects/debirf
cd /root/Projects/debirf/rescue
И настройте /root/Projects/debirf/rescue/debirf.conf.
DEBIRF_LABEL="debirf-rescue"
DEBIRF_SUITE=stretch
DEBIRF_DISTRO=debian
DEBIRF_MIRROR= http://ftp.ru.debian.org/debian/
Создать ЛиР
- Бегать
debirf make .
and go away. It need many time, at minimal 15 minutes on top hardware. - Бегать
debirf makeiso .
for create not working iso (needed for grub.cfg file)
Попробуй это
- Установить qemu
- для Linux:
apt-get install -yq qemu
- для Мако:
brew install qemu
- для Linux:
- решить, какие ресурсы будут выделены для виртуальной машины
-
-smp 1
1 real kernel -
-m 1G
1G memory
-
- дополнительный
-
-nographic
will launch VM in current terminal window -
--enable-kvm
enables hardware accelation -
-kernel vmlinuz-*
permit directly pass kernel -
-initrd *.
cgz
direct access to .cgz file with initramfs
-
-append
allows bypass kernel params, here are the parameters for running without a graphical shell
-
qemu-system-x86_64 --enable-kvm -kernel vmlinuz-* -initrd *.
cgz -append "console=tty0 console=ttyS0,115200n8" -m 1G -smp 1 -net nic,vlan=0 -net user -nographic
Проба
Установите grub на флэшку и скопируйте на нее LiR.
Я рекомендую вам использовать устаревшую загрузку BIOS и пакет grub-pc. С UEFI не тестировалось, но должно работать.Следующие строки будут выполнены:
- создать точку монтирования (в системах с графическим интерфейсом, в которых включено автоматическое монтирование, это не требуется)
- смонтируйте USB-ключ в точку монтирования (в системах с графическим интерфейсом пользователя автоматическое монтирование не требуется)
- установить grub
- скопировать файл grub
- скопировать initramfs (система)
- скопировать vmlinuz (ядро)
- отключить USB-ключ
- удалить точку монтирования
mkdir -p /media/root/8B46-1189
mount /dev/sdb1 /media/root/8B46-1189
grub-install --boot-directory=/media/root/8B46-1189/boot /dev/sdb
cp /root/Projects/debirf/rescue/iso/boot/grub/grub.cfg /media/root/8B46-1189/boot/grub/
cp /root/Projects/debirf/rescue/*.
cgz /media/root/8B46-1189
cp /root/Projects/debirf/rescue/vmlinuz-* /media/root/8B46-1189
umount /media/root/8B46-1189
rm -rf /media/root/8B46-1189
Создайте загрузочный ISO (необязательно)
- скачать isolinux.bin
- создать файл конфигурации isolinux
- создать изо
mkdir -p rescue/iso/isolinux/
wget -O rescue/iso/isolinux/isolinux.bin ' http://mirror.yandex.ru/centos/7/os/x86_64/isolinux/isolinux.bin '
cat << EOF > rescue/iso/isolinux/isolinux.cfg
TIMEOUT 5
DEFAULT lir
LABEL lir
LINUX /vmlinuz-4.9.0-7-amd64
INITRD /debirf-rescue_stretch_4.9.0-7-amd64.cgz
EOF
genisoimage -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -l -input-charset default -V LiR -A "Linux in RAM" -o rescue/rescue.iso rescue/iso/
Проверить результат
- Установите гипервизор QEMU
apt-get install -yq qemu
- бегать
qemu-system-x86_64 -enable-kvm -m 512 -hda /dev/sdb
- если предыдущая команда не удалась, удалите
-enable-kvm
- ВМ запустится и загрузится с USB-ключа.
- вы должны увидеть два пункта меню, разница в конце: консольный и последовательный.
Выберите первую запись.
- через ~минуту вы увидите много строк.
после его окончания — нажмите Enter, чтобы увидеть приветственное сообщение
- логин: root, без пароля
Настройте его: создайте собственный модуль debirf.
Модуль — исполняемый sh-скрипт для запуска при создании LiR.- создать файл модуля
- порядок имен файлов важен.
В файле
network
the resolving file will be changed to the system-resolved, and you can’t work with the network; - должны присутствовать строки с 1 по 3, строка 3 должна содержать имя файла
- если вы хотите установить пакет — используйте конструкцию
#DEBIRF_PACKAGE>+
- если вы хотите работать с rootfs - используйте
$DEBIRF_ROOT
- если вы хотите запустить команду в fakeroot — используйте
debirf_exec
Образец:
cat <<< EOF > rescue/modules/mi
#!/bin/sh -e
# debirf module: mi
# prepare to run on mi notebook
#
# This script were written by
# Eduard Generalov <[email protected]>
#
# They are Copyright 2018, and published under the MIT,
#DEBIRF_PACKAGE>+firmware-iwlwifi
#DEBIRF_PACKAGE>+firmware-misc-nonfree
#DEBIRF_PACKAGE>+wpasupplicant
echo 'iwlwifi' >> $DEBIRF_ROOT/etc/modules
cat << EOF > $DEBIRF_ROOT/etc/wpa_supplicant/wpa_supplicant-wlp1s0.conf
ctrl_interface=/run/wpa_supplicant
update_config=1
network={
ssid="WiFi_SSID"
psk="WIFIPASSWORD"
}
EOF
cat << EOF > $DEBIRF_ROOT/etc/systemd/network/wireless.network
[Match]
Name=wlp1s0
[Network]
DHCP=ipv4
[DHCP]
RouteMetric=20
EOF
и замените строку на
resolved
in file rescue/modules/network with
debirf_exec systemctl enable [email protected] systemd-networkd.service systemd-resolved.service
Бонус: lxc на LiR
спасение модуля/модули/lxc #!/bin/sh -e
# debirf module: lxc
# prepare lxc
#
# This script were written by
# Eduard Generalov <[email protected]>
#
# They are Copyright 2018, and published under the MIT,
#DEBIRF_PACKAGE>+lxc
mkdir -p $DEBIRF_ROOT/root/.
ssh/
ssh-keygen -b 2048 -t rsa -f $DEBIRF_ROOT/root/.
ssh/id_rsa -q -N ""
cp $DEBIRF_ROOT/root/.
ssh/id_rsa $DEBIRF_ROOT/root/.
ssh/authorized_keys
chmod 400 $DEBIRF_ROOT/root/.
ssh/authorized_keys
debirf_exec systemctl enable lxc-net
cat << EOF > $DEBIRF_ROOT/etc/lxc/default.conf
lxc.network.type = veth
lxc.network.link = lxc
lxc.network.name = eth0
lxc.network.flags = up
lxc.network.hwaddr = 00:FF:AA:FF:xx:xx
lxc.mount.entry=/var/cache/apt var/cache/apt none bind,rw 0 0
lxc.mount.entry = /root/.
ssh/ root/.
ssh none bind,create=dir 0 0
EOF
cat << EOF > $DEBIRF_ROOT/etc/default/lxc-net
USE_LXC_BRIDGE="true"
LXC_BRIDGE="lxc"
LXC_ADDR="10.0.3.1"
LXC_NETMASK="255.255.255.0"
LXC_NETWORK="10.0.3.0/24"
LXC_DHCP_RANGE="10.0.3.2,10.0.3.254"
LXC_DHCP_MAX="253"
LXC_DHCP_CONFILE=""
LXC_DOMAIN="lxc"
EOF
Теги: #*nix #Высокая производительность #Настройка Linux #LIR #linux в оперативной памяти #debirf
-
Project Tofino — Новый Браузер От Mozilla
19 Oct, 24 -
Уязвимость В Php 5.3.* 32Bit — Float
19 Oct, 24