Курс по Линукс Минт
Добавлено: 31 окт 2018, 00:13
Это несовместимо с механизмами COW и снапшотов. Свап-файл - это не обычный файл. Там для него выделяется диапазон(ы) блоков, в которые открывается прямой доступ на чтение-запись как бы минуя файловую систему (в той, лишь обозначаются эти блоки как занятые чтобы конфликта не случилось). На btrfs такое невозможно, т.к. при записи новый блок будет гарантированно не тот, который перезаписывается. А еще блоки могут быть совмещенными из-за дедупликации данных и снапшотов.
чего-то я запутался, что в данном случае имеется в виду как объемная тема "Файловые системы" (ext4, zfs и т.п.) или "Файловая структура" (корень, "обязательные" каталоги, файлы, все есть файл и т.п.), которую тоже в интернете периодически называются "файловой системой"?
полез почитать, попал на интересный блог
А там ничего, в плане порядка установки, не изменилось.
я имел в виду ссылку на блог где описание установки и последующей настройки (даже приложил ее для интересующихся), а не файлы установки.
Ну почему не ясно? Подключить сетку и ставить шкуру.
Потому что время "кавалеристских наскоков" и "методов научного тыка" для меня уже уходит безвозвратно. Было время, когда я мог вылизывать свой пользовательский интерфейс неделями. Но потом я понял, что это потеряное время, т.к.
По-хорошему бы конечно предупреждать об этом надо. Представляю, сколько народу (даже если только на убунтовых дистрах) наступили на эти "грабельки"..
man systemd
и systemd --version
Нет. Не это. Вот как определить systemd, sysvinit, openrc или upstart. Ну допустим компьютер чужой, ты зашел в гости и тебя просят что-то там посмотреть.
inxi -Fxz
делает. В последнем блоке Info
, есть подзаголовок Init:
в котором и указывается какая именно системы инициализации на данном компе. Код: Выделить всё
ls -l `which init`
Код: Выделить всё
lrwxrwxrwx 1 root root 20 июл 20 22:13 /sbin/init -> /lib/systemd/systemd
Код: Выделить всё
strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit)/) { print toupper(substr($0, RSTART, RLENGTH));exit; }'
systemd
результат будет
Код: Выделить всё
SYSTEMD
upstart
Код: Выделить всё
UPSTART
sysvinit
Код: Выделить всё
SYSVINIT
Код: Выделить всё
init --version | head -n1
--version
, хотя man init
говорит что такой ключ есть.inxi
для определения инита написана вот такая функция последовательных проверок
Код: Выделить всё
sub get_init_data {
eval $start if $b_log;
my $runlevel = get_runlevel_data();
my $default = ($extra > 1) ? get_runlevel_default() : '';
my ($init,$init_version,$rc,$rc_version,$program) = ('','','','','');
my $comm = ( -e '/proc/1/comm' ) ? (reader('/proc/1/comm'))[0] : '';
my (@data);
# this test is pretty solid, if pid 1 is owned by systemd, it is systemd
# otherwise that is 'init', which covers the rest of the init systems.
# more data may be needed for other init systems.
if ( $comm ){
if ( $comm =~ /systemd/ ){
$init = 'systemd';
if ( $program = check_program('systemd')){
$init_version = program_version($program,'^systemd','2','--version');
}
if (!$init_version && ($program = check_program('systemctl') ) ){
$init_version = program_version($program,'^systemd','2','--version');
}
}
# epoch version == Epoch Init System 1.0.1 "Sage"
elsif ($comm =~ /epoch/){
$init = 'Epoch';
$init_version = program_version('epoch', '^Epoch', '4','version');
}
# missing data: note, runit can install as a dependency without being the
# init system: http://smarden.org/runit/sv.8.html
# NOTE: the proc test won't work on bsds, so if runit is used on bsds we
# will need more datas
elsif ($comm =~ /runit/){
elsif ($comm =~ /runit/){
$init = 'runit';
}
elsif ($comm =~ /^s6/){
$init = 's6';
}
}
if (!$init){
# output: /sbin/init --version: init (upstart 1.1)
# init (upstart 0.6.3)
# openwrt /sbin/init hangs on --version command, I think
if ((!$b_mips && !$b_sparc && !$b_arm) && ($init_version = program_version('init', 'upstart', '3','--version') )){
$init = 'Upstart';
}
elsif (check_program('launchctl')){
$init = 'launchd';
}
elsif ( -f '/etc/inittab' ){
$init = 'SysVinit';
if (check_program('strings')){
@data = grabber('strings /sbin/init');
$init_version = awk(\@data,'^version\s+[0-9]',2);
}
}
elsif ( -f '/etc/ttys' ){
$init = 'init (BSD)';
}
}
if ( grep { /openrc/ } globber('/run/*openrc*') ){
$rc = 'OpenRC';
# /sbin/openrc --version == openrc (OpenRC) 0.13
if ($program = check_program('openrc')){
$rc_version = program_version($program, '^openrc', '3','--version');
}
# /sbin/rc --version == rc (OpenRC) 0.11.8 (Gentoo Linux)
elsif ($program = check_program('rc')){
$rc_version = program_version($program, '^rc', '3','--version');
}
if ( -e '/run/openrc/softlevel' ){
$runlevel = (reader('/run/openrc/softlevel'))[0];
}
elsif ( -e '/var/run/openrc/softlevel'){
$runlevel = (reader('/var/run/openrc/softlevel'))[0];
}
elsif ( $program = check_program('rc-status')){
$runlevel = (grabber("$program -r 2>/dev/null"))[0];
}
}
my %init = (
'init-type' => $init,
'init-version' => $init_version,
'rc-type' => $rc,
'rc-version' => $rc_version,
'runlevel' => $runlevel,
'default' => $default,
);
eval $end if $b_log;
return %init;
}
pid=1
, на случай если это системда, если нет то там же могут найтись runit или некий epoch/sbin/init --version
в поисках апстарта,launchctl
который укажет на launchd/etc/inittab
чтоб детектировать SysVinitOpenRC
/BSD
/etc Ух, ты!