Size: a a a

2020 February 21

𝙼

𝙼𝚛. 𝙱𝚘𝚠𝚕𝚎𝚛 𝙷𝚊𝚝 in NixOS
Вырубается если не трогать, врубается по кнопке (а она проводная), две кнопки как средняя работают
источник
2020 February 22

k

karavan in NixOS
karavan
Помогите с созданием кастомного LiveCD.
Цель - нужен минималистичный дистр общим объемом до 100 МБ и с функционалом: сеть, ssh, набор утилит по работе с разделами hdd, включая lvm2
Загрузка исошника предполагается из меню Grub предыдущей системы с раздела /boot (виртуалка)
Я шел по пути наименьшего сопротивления, загуглил ссылку https://nixos.wiki/wiki/Creating_a_NixOS_live_CD
Поэкспериментировал с созданием образа, где включил ssh и добавил свой pub-key.
Т.к. исошник для моих нужд получился чересчур жирным (>500MB), я решил выпиливать жирные куски из кода nixpkgs.
На первом же кандидате на выпиливание я сдулся ((
# du -sh /nix/store/* | sed 's/\/nix\/store\/[^-]\+-//' | sort -rh -k1,1 | head -n1'
465M firmware-linux-nonfree-2019-08-15
Нашел вот такое включение:
$ grep  'firmwareLinuxNonfree' pkgs/top-level/all-packages.nix
 firmwareLinuxNonfree = callPackage ../os-specific/linux/firmware/firmware-linux-nonfree { };

Далее вычистил код nixpkgs от всех вызовов
firmwareLinuxNonfree
, но эта сволочь все равно лезет в дистр.
Любому совету буду рад.
#переустановка_os_на_VPS

Эти телодвижения были с целью раскатать nixos на VPS без возможности примонтировать свой iso.
Можно было бы пойти по пути lustrate на текущей ОС, но еще стояла задача переразметки диска при условии, что на браузерную консоль VPS у меня рвотные рефлексы (это из-за конфликтов хоткеев консоли с хоткеями браузера, а еще эта консоль в самый неподходящий момент включает игнор клавиатуры до перезагрузки).
Значит нужен livecd с активным sshd (со своими ключами, никаких паролей) и со всем необходимым для манипуляций с lvm.
Т.к. VPS загрузчиком использует grub2, то грех не воспользоваться его возможностью загружать iso.
Хостингом диск размечен с выделением 256 MB под /boot, соответственно под iso доступно чуть больше 200 MB.
Что было опробовано в качестве кандидатов под livecd:
- nixos (не удалось ужаться в ограничение по размеру)
- debian 9,10 (не удалось ужаться по размеру)
- LFS 8.4, 9.0 (три дня портачено на три попытки компиляции и каждый раз последняя сборка gcc фэйлилась)
- Tiny Core Linux (годнота, итоговый iso получился 14 МБ)
Далее подготовка образа установленной nixos и заливка его на VPS через ssh + dd

P.S.: Не оставляю мысли добить кастомизацию livecd на базе nixos с итоговым iso не более 150 MB.
источник

𝙼

𝙼𝚛. 𝙱𝚘𝚠𝚕𝚎𝚛 𝙷𝚊𝚝 in NixOS
karavan
#переустановка_os_на_VPS

Эти телодвижения были с целью раскатать nixos на VPS без возможности примонтировать свой iso.
Можно было бы пойти по пути lustrate на текущей ОС, но еще стояла задача переразметки диска при условии, что на браузерную консоль VPS у меня рвотные рефлексы (это из-за конфликтов хоткеев консоли с хоткеями браузера, а еще эта консоль в самый неподходящий момент включает игнор клавиатуры до перезагрузки).
Значит нужен livecd с активным sshd (со своими ключами, никаких паролей) и со всем необходимым для манипуляций с lvm.
Т.к. VPS загрузчиком использует grub2, то грех не воспользоваться его возможностью загружать iso.
Хостингом диск размечен с выделением 256 MB под /boot, соответственно под iso доступно чуть больше 200 MB.
Что было опробовано в качестве кандидатов под livecd:
- nixos (не удалось ужаться в ограничение по размеру)
- debian 9,10 (не удалось ужаться по размеру)
- LFS 8.4, 9.0 (три дня портачено на три попытки компиляции и каждый раз последняя сборка gcc фэйлилась)
- Tiny Core Linux (годнота, итоговый iso получился 14 МБ)
Далее подготовка образа установленной nixos и заливка его на VPS через ssh + dd

P.S.: Не оставляю мысли добить кастомизацию livecd на базе nixos с итоговым iso не более 150 MB.
открой для себя buildroot
источник

k

karavan in NixOS
𝙼𝚛. 𝙱𝚘𝚠𝚕𝚎𝚛 𝙷𝚊𝚝
открой для себя buildroot
Я его не упомянул в списке опробованных, т.к. решил, что не хочу по срокам отодвигать задачу на неделю пока буду его осваивать.
Но честные полчаса потратил на поверхностное ознакомление с ним.
источник

𝙼

𝙼𝚛. 𝙱𝚘𝚠𝚕𝚎𝚛 𝙷𝚊𝚝 in NixOS
karavan
Я его не упомянул в списке опробованных, т.к. решил, что не хочу по срокам отодвигать задачу на неделю пока буду его осваивать.
Но честные полчаса потратил на поверхностное ознакомление с ним.
я потратил несколько минут, обычное меню на ncurses
источник

𝙼

𝙼𝚛. 𝙱𝚘𝚠𝚕𝚎𝚛 𝙷𝚊𝚝 in NixOS
Оставшееся время реализовывал свою экзотиечскую задачу
источник

k

karavan in NixOS
ок, обещаю внимательнее на него посмотреть ))
источник

ц

ц in NixOS
karavan
#переустановка_os_на_VPS

Эти телодвижения были с целью раскатать nixos на VPS без возможности примонтировать свой iso.
Можно было бы пойти по пути lustrate на текущей ОС, но еще стояла задача переразметки диска при условии, что на браузерную консоль VPS у меня рвотные рефлексы (это из-за конфликтов хоткеев консоли с хоткеями браузера, а еще эта консоль в самый неподходящий момент включает игнор клавиатуры до перезагрузки).
Значит нужен livecd с активным sshd (со своими ключами, никаких паролей) и со всем необходимым для манипуляций с lvm.
Т.к. VPS загрузчиком использует grub2, то грех не воспользоваться его возможностью загружать iso.
Хостингом диск размечен с выделением 256 MB под /boot, соответственно под iso доступно чуть больше 200 MB.
Что было опробовано в качестве кандидатов под livecd:
- nixos (не удалось ужаться в ограничение по размеру)
- debian 9,10 (не удалось ужаться по размеру)
- LFS 8.4, 9.0 (три дня портачено на три попытки компиляции и каждый раз последняя сборка gcc фэйлилась)
- Tiny Core Linux (годнота, итоговый iso получился 14 МБ)
Далее подготовка образа установленной nixos и заливка его на VPS через ssh + dd

P.S.: Не оставляю мысли добить кастомизацию livecd на базе nixos с итоговым iso не более 150 MB.
Можно через kexec
источник

ц

ц in NixOS
Если оперативки хотя бы гигабайт есть
источник

ц

ц in NixOS
{ config, pkgs, ... }:
{
 imports = [
   # uncomment for full image
   # <nixpkgs/nixos/modules/installer/netboot/netboot-minimal.nix>
   <nixpkgs/nixos/modules/installer/netboot/netboot.nix>
   <nixpkgs/nixos/modules/profiles/qemu-guest.nix>
 ];

 # stripped down version of https://github.com/cleverca22/nix-tests/tree/master/kexec
 system.build = rec {
   image = pkgs.runCommand "image" { buildInputs = [ pkgs.nukeReferences ]; } ''
     mkdir $out
     cp ${config.system.build.kernel}/bzImage $out/kernel
     cp ${config.system.build.netbootRamdisk}/initrd $out/initrd
     nuke-refs $out/kernel
   '';
   kexec_script = pkgs.writeTextFile {
     executable = true;
     name = "kexec-nixos";
     text = ''
       #!${pkgs.stdenv.shell}
       set -e
       ${pkgs.kexectools}/bin/kexec -l ${image}/kernel --initrd=${image}/initrd --append="init=${builtins.unsafeDiscardStringContext config.system.build.toplevel}/init ${toString config.boot.kernelParams}"
       sync
       echo "executing kernel, filesystems will be improperly umounted"
       ${pkgs.kexectools}/bin/kexec -e
     '';
   };
   kexec_tarball = pkgs.callPackage <nixpkgs/nixos/lib/make-system-tarball.nix> {
     storeContents = [
       {
         object = config.system.build.kexec_script;
         symlink = "/kexec_nixos";
       }
     ];
     contents = [ ];
   };
 };

 boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" ];
 boot.kernelParams = [
   "panic=30" "boot.panic_on_fail" # reboot the machine upon fatal boot issues
   "console=ttyS0" # enable serial console
   "console=tty1"
 ];
 boot.kernel.sysctl."vm.overcommit_memory" = "1";

 environment.systemPackages = with pkgs; [ cryptsetup ];
 environment.variables.GC_INITIAL_HEAP_SIZE = "1M";

 networking.hostName = "kexec";

 services.mingetty.autologinUser = "root";
 services.openssh = {
   enable = true;
   challengeResponseAuthentication = false;
   passwordAuthentication = false;
 };

 users.users.root.openssh.authorizedKeys.keys = [

 ];
}
источник

ц

ц in NixOS
Ключи свои добавляешь
источник

ц

ц in NixOS
Результат кидаешь на сервер, распаковываешь в корень и запускаешь скрипт
источник

ц

ц in NixOS
kexec_nixos
источник

k

karavan in NixOS
ц
Можно через kexec
это при условии, что предыдущая ось не будет против установки nix?
источник

ц

ц in NixOS
karavan
это при условии, что предыдущая ось не будет против установки nix?
Оси похуй, нужен рут только
источник

ц

ц in NixOS
После разметки диска и форматирования разделов советую сразу же сделать и активировать своп-файл
источник

ц

ц in NixOS
Ибо памяти там может оказаться не густо для установщика
источник

k

karavan in NixOS
ц
Оси похуй, нужен рут только
Мне непонятен момент с исполнением этого конфига.
Отвязка ядра от hdd нужна на этапе до наличия на vps никсоси.
источник

ц

ц in NixOS
karavan
Мне непонятен момент с исполнением этого конфига.
Отвязка ядра от hdd нужна на этапе до наличия на vps никсоси.
Скрипт грузит установщик в оперативку и перезагружается
источник

ц

ц in NixOS
Никс не нужен
источник