воскресенье, 2 февраля 2014 г.

БЫСТРАЯ РАЗВЕРТКА DEBIAN-BASED СИСТЕМЫ ВСТРОЕННЫМИ СРЕДСТВАМИ (squashfs,unsquashfs)

          Существуют десятки,даже,наверное,сотни систем Gnu/Linux основанных на Debian.В них используются различные установщики-инсталляторы,у каждого из которых существуют свои плюсы и минусы,но,ИМХО,главным их общим минусом является то,что для их использования необходимо сначала создать загрузочный DVD или флешку,загрузиться с того устройства,и только тогда уже можно вершить установку (развертку) системы на диск,будь то классический  дистрибутивный образ,OEM-поставка или Live/Install-backup,но - это всё связанно с некоторым временем,необходимостью перезагружать свой PC или ноутбук и разными другими,часто своеобразными ньюансами...А если,например,у меня в плей-листе любимого VLC ещё пара-тройка свежих фильмов?...Существует ли способ избежать перезагрузки,для загрузки инсталляционного носителя (виртуалки не в счет - это суходр..ка,ИМХО),но таки установить избранный дистрибутив для опытов и вивисекций,подготовив его к немедленному использованию сразу после ребута в произвольный момент будущего времени,не прерывая текущего пользовательского сеанса в основной системе?Конечно же,ответ - да.Однозначно... ))
            Как правило,любой инсталлятор предоставляет будущему пользователю энного дистрибутива такие возможности,как выбор локали,разметка дискового пространства под новую систему,создание файловой системы,создание пользовательского аккаунта,задание пароля новому пользователю и (не всегда) root-y,а затем происходит простая развертка содержащего системные файлы контейнера на выбранный раздел и пост-установочная скриптовая отработка сделанных неофитом выборов в режиме CHROOT  по отношению к развернутой системе.Вот мы и попробуем сами себе этот вспомогательный инструмент заменить.
            Многое,кстати,описано здесь:
http://www.debian.org/releases/wheezy/mipsel/apds03.html.ru

            Итак,запустим какой-нибудь эммулятор терминала,не прерывая просмотра зачётной киношки,отодвинем его окошко в уголок,что б не закрывал экранчик плеера,и начнём свои волкания:

$ cd /где/лежит/образ/дистра
$ 7z -x imagename.iso  imgdir
$ mv -vf imgdir/live/filesystem.squashfs filesystem.squashfs && rm -rf imgdir

              На этом этапе мы можем воспользоваться преимуществом нашего нахождения в иксах текущего сеанса и просто запустить Gparted для подготовки раздела для будущей системы в нужном формате и нужной меткой тома,если таковой еще не создан,а можем продолжить набирать в окошке терминала (sakura forever):

$ sudo fdisk /dev/sda
type "p" for partitions map
type "n" for create the new partition
type "p" for re-check changes
type "w" for write changes to hdd
тут,думаю,всё понятно,а если нет - Google is your best friend

$ sudo mkfs.ext4 /dev/sda[X]  -  где [X] это номер нового раздела в таблице
$ sudo tune2fs -r 0 -m 0 -c 0 -L "LABEL" /dev/sda[X]  -  где [X] это номер нового раздела в таблице
$ sudo mount /dev/sda[X] /mnt  -  где [X] это номер нового раздела в таблице
$ sudo rm -rf  /mnt/*
$ sudo unsquashfs -f -d /mnt *.squashfs;ls /mnt
$ sudo mount --bind /dev /mnt/dev && sudo mount --bind /proc /mnt/proc && sudo mount --bind /sys /mnt/sys && sudo mount --bind /dev/pts /mnt/dev/pts && sudo chroot /mnt
$# groupadd -r sudo
$# groupadd -r admin
$# useradd -g sudo -G admin,video,audio,plugdev,cdrom,dialout,users  -s /bin/bash -d /home/newuser -m newuser
или
$# nano /etc/adduser.conf    -    и раскомментировать/изменить строки ""EXTRA_GROUPS="dialout cdrom floppy audio video plugdev users"  "" и ""ADD_EXTRA_GROUPS=1""
$# adduser newuser
$# passwd newuser && passwd root
$# dpkg-reconfigure locales && dpkg-reconfigure tzdata
$# nano /etc/hostname
$# nano /etc/hosts
$# exit
Здесь есть смысл добавить немного хакa:
$ sudo rm -rf /mnt/etc/network /mnt/etc/NetworkManager /mnt/etc/ppp /mnt/etc/apt /mnt/etc/sudoers /mnt/usr/share/icons /mnt/usr/share/themes /mnt/usr/share/images /mnt/usr/share/backgrounds
$ sudo rsync -var /etc/apt /etc/network /etc/NetworkManager /etc/ppp /usr/share/icons /usr/share/themes /usr/share/images /usr/share/backgrounds  /etc/resolv.conf  /etc/sudoers /mnt/etc
$ rsync -var ~/.icons ~/.themes /mnt/home/newuser

Ну,чтобы все уже настроенные сетевые соединения были подхвачены  при первой же загрузке новой системы и мы имели доступ ко всему спектру софта,что и на базовой системе.

$ sudo chroot /mnt
$# nano /etc/sudoers && nano /etc/resolv.conf && chmod -w /etc/resolv.conf (бывает облегчает жизнь)
$# apt-key adv --recv-keys --keyserver keyring.debian.org `sudo aptitude update 2>&1 | grep -o '[0-9A-Z]\{16\}$' | xargs`
Альтернативные keyservers: keyserver.pgp.com , hkp://subkeys.pgp.net , keyserver.ubuntu.com
$# aptitude update
$# aptitude install console-setup console-cyrillic localepurge bleachbit dpkg-dev dpkg-repack synaptic prelink preload gpm mc mc-data pavucontrol dselect gparted fsarchiver p7zip-full unrar rar mencoder ffmpeg mplayer smplayer vlc mpg123 mpg321 transcode transcode-utils unionfs-fuse aufs-tools squashfs-tools mhddfs  [some your favorite package here] 

Можно,даже нужно,установить самое последнее,на текущий момент времени,ядро с заголовками,удалить старое/ненужное,с заголовками,и поставить драйвера на видео,и что-там-еще,требующее костылей...


Можно,так же,при желании иметь в новой системе весь набор софта из основной системы, уже установленным,выполнить и перенос пакетной базы:
$# exit
$ dpkg --get-selections > pkg.txt
$ sudo mv -vf pkg.txt /mnt
$ sudo chroot /mnt
$# dselect access


И выбрать в качестве фронтенда Apt, а основного источника файл /etc/apt/sources.list и отказаться от перезаписи файла.

$# dselect update
$# dpkg --set-selections < pkg.txt
$# dselect update
$# apt-get -f dselect-upgrade
$# aptitude update && aptitude full-upgrade
$# exit
$ sudo blkid
$ sudo cp -vf /etc/fstab /mnt/etc/fstab && sudo nano /mnt/etc/fstab

Правим UUID для целевой системы и сохраняемся.

           Ну,вот,и кино посмотрели и новую систему поставили - можно спокойно делать:

$ sudo umount /mnt/dev/pts /mnt/sys /mnt/proc /mnt/dev /mnt && sudo update-grub && sudo reboot -f

           Таким образом можно установить на Ж/Д локальной рабочей станции,любую Debian-based систему,однако следует понимать,что,например,если вашей основной системой является Ubuntu,то не стоит заменять  из неё /etc/apt в целевом Debian или Siduction,или пытаться выполнить из неё перенос пакетной базы в несовместимую систему.В остальном же,большинство конфигов Ubuntu-based систем,кроме скриптов инициализации загрузки, аналогичны конфигам Debian & Debian-based систем и вполне взаимозаменяемы,однако, следует  упомянуть о крайней осторожности в этом деле,без докучливой навязчивости...как-то-так...

P.S.:
Не так давно,был приятно удивлён,обнаружив среди спектра инсталляторов семейства Debian-based систем некое удобнейшее и универсальнейшее  изделие в составе дистрибутива Point Linux,от мейнтейнера : Peter Ryzhenkov ,прежде всего замечательное тем,что может быть задействован для практически любой Debian-based системы или отдельно созданного контейнера squashfs,на произвольном локальном разделе,для его развертки на целевой раздел прямо из текущего пользовательского сеанса.Достаточно,лишь отредактировать основной конфиг инсталятора -  /etc/pointlinux-installer/install.conf  -  вписав нужный путь к содержащему системные файлы контейнеру и это чудо на Питоне 2.7 выполнит всё то что я описывал для терминала в красивой GUI-вине,от разметки,до создания пользователя и установки загрузчика Grub2.А из зависимостей только python,imvirt,gpart и ещё какая-то мелочь,т.е.,это может быть установлено практически на любую систему семейства Debian и работать!Ням!Must have!В лучших традициях инициативы DEX...
http://habrahabr.ru/post/115781/




         

1 комментарий:

  1. Здравствуйте. Вы не могли- бы подробнее описать способ создание дебиан основанной собственной сборки при помощи инсталлятора Point Linux. При использовании refracta трудно вычистить конфиги пользователя по-умолчанию. Если, конечно, Вам не трудно. Спасибо.

    ОтветитьУдалить