Linux В Оперативной Памяти: Путь Debirf 2018

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

    like

    nano +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

  • решить, какие ресурсы будут выделены для виртуальной машины


    • -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



Проба



Linux в оперативной памяти: путь debirf 2018



Установите 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

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.