Форум
Поставил Gentoo с KDE Plasma, systemd, systemd-boot на Honor Magicbook X14 Pro 2023
Купил пару лет назад Honor Magicbook X14 Pro. И что только я на него не ставил. И вот, решил во время университетских зимних каникул под Новый год поставить Gentoo. И всё поставилось. Единственное, с чем пришлось столкнуться - это с тем, что не монтировался(или неправильно определялся) корневой раздел при загрузке системы, из-за чего systemd уходил в emergency mode. Но в итоге я это пофиксил, прописав в параметрах ядра корневой раздел. Ссылка на скриншот: https://iimg.su/i/GTeLxX Оперативки много жрёт, потому что в фоне запущен браузер Firefox.
Systemd в кастомном initramfs падает с «Failed to mount API filesystems»
Приветствую! Занимаюсь разработкой своего дистрибутива (RorkOS) Суть проблемы: ядро успешно стартует, BusyBox-скрипт /init подготавливает окружение (монтирует proc, sys, dev, tmpfs на /run). Но при вызове exec /usr/lib/systemd/systemd всё падает. В логах выше проскакивают такие ошибки монтирования:
- Failed to mangle mount options mode=01777,usrquota: Operation not supported
- Failed to mangle mount options nsdelegate,memory_recursiveprot: Operation not supported
Параметры загрузки в GRUB: linux /boot/vmlinuz root=/dev/ram0 rw init=/init loglevel=7 systemd.unified_cgroup_hierarchy=0 cgroup_no_v1=all selinux=0
Ядро собрано с поддержкой CGROUPS, TMPFS, DEVTMPFS. Библиотеки (ld-linux, libc) в образе присутствуют, линковщик настроен.
build.sh:
#!/bin/bash
set -e
BASE_DIR="/home/rorka/rorkos"
SRC_DIR="$BASE_DIR/src"
ROOTFS="$SRC_DIR/rorkos_rootfs"
KERNEL_BUILD_DIR="$SRC_DIR/linux-6.18.2"
ISO_DIR="$SRC_DIR/iso_build"
sudo rm -rf "$ROOTFS" "$ISO_DIR"
mkdir -p "$ROOTFS"/{proc,sys,dev,run,tmp,etc,root,home,var/lib,var/log}
mkdir -p "$ROOTFS"/usr/{bin,lib,lib64,sbin}
mkdir -p "$ROOTFS"/usr/lib/systemd/system
mkdir -p "$ROOTFS"/etc/systemd/system/{multi-user.target.wants,sockets.target.wants,sysinit.target.wants}
ln -sf usr/bin "$ROOTFS/bin"
ln -sf usr/bin "$ROOTFS/sbin"
ln -sf usr/lib "$ROOTFS/lib"
ln -sf usr/lib "$ROOTFS/lib64"
cp -p /usr/lib/systemd/systemd "$ROOTFS/usr/lib/systemd/"
cp -p /usr/lib/systemd/systemd-* "$ROOTFS/usr/lib/systemd/" 2>/dev/null || true
sudo bash -c "cat > $ROOTFS/init" <<'EOF'
#!/usr/bin/busybox sh
/usr/bin/busybox --install -s /usr/bin
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devtmpfs devtmpfs /dev
mkdir -p /run /tmp
mount -t tmpfs -o mode=0755,nodev,nosuid tmpfs /run
exec /usr/lib/systemd/systemd
EOF
chmod +x "$ROOTFS/init"
cp /bin/busybox "$ROOTFS/usr/bin/busybox"
chmod +x "$ROOTFS/usr/bin/busybox"
for tool in sh ls cat echo ps mount ip grep awk sed mkdir rm mv cp agetty login; do
ln -sf busybox "$ROOTFS/usr/bin/$tool"
done
copy_libs() {
local b="$1"
[ ! -f "$b" ] && return
ldd "$b" 2>/dev/null | grep "=>" | awk '{print $3}' | while read -r lib; do
if [[ "$lib" == /* ]] && [ -f "$lib" ]; then
dest_dir="$ROOTFS$(dirname "$lib")"
mkdir -p "$dest_dir"
cp -Ln "$lib" "$dest_dir/" 2>/dev/null || true
fi
done
}
cp -L /lib64/ld-linux-x86-64.so.2 "$ROOTFS/usr/lib/"
find "$ROOTFS/usr/bin" -type f -executable | while read -r b; do copy_libs "$b"; done
find "$ROOTFS/usr/lib/systemd" -type f -executable | while read -r b; do copy_libs "$b"; done
copy_libs "$ROOTFS/init"
mkdir -p "$ROOTFS/lib64"
cp -L /lib64/ld-linux-x86-64.so.2 "$ROOTFS/lib64/"
for service in systemd-networkd.service systemd-resolved.service systemd-udevd.service systemd-udev-trigger.service; do
[ -f "/usr/lib/systemd/system/$service" ] && cp "/usr/lib/systemd/system/$service" "$ROOTFS/usr/lib/systemd/system/"
done
echo "rorkos" > "$ROOTFS/etc/hostname"
echo "root:x:0:0:root:/root:/bin/sh" > "$ROOTFS/etc/passwd"
echo "root:x:0:" > "$ROOTFS/etc/group"
echo "NAME=RorkOS" > "$ROOTFS/etc/os-release"
cd "$ROOTFS"
find . -print0 | cpio --null --quiet -ov -H newc | gzip -9 > "$SRC_DIR/initrd.img"
mkdir -p "$ISO_DIR/boot/grub"
cp "${KERNEL_BUILD_DIR}/arch/x86/boot/bzImage" "$ISO_DIR/boot/vmlinuz"
cp "$SRC_DIR/initrd.img" "$ISO_DIR/boot/initrd.img"
cat <<EOF > "$ISO_DIR/boot/grub/grub.cfg"
set timeout=0
menuentry "RorkOS" {
linux /boot/vmlinuz root=/dev/ram0 rw init=/init loglevel=7 systemd.unified_cgroup_hierarchy=0 cgroup_no_v1=all selinux=0
initrd /boot/initrd.img
}
EOF
grub-mkrescue -o "$BASE_DIR/rorkos.iso" "$ISO_DIR" -- -volid "RORKOS"
Xbox series s или playstation 4
Всем доброго дня! Могли бы помочь с выбором игровой консоли. В первую очередь нужна для игры вдвоем.
Перемещено CrX из general
Какой последний музыкальный трек вас зацепил?
Поделитесь музыкой, треком, тем что вас зацепило переслушивать по несколько раз.
Вот моё: Вивальди - Зима, рок-обработка
Какая гадость этот ваш proxmox ...
Поставил взглянуть. Впечатление - набор скриптов васянов, которые на каждых чих делают контейнер.+ Сверху это приправлено скриптами-helperами, которые настраивают неведомо как систему. Это сейчас модно?
Возможность удаления собственных комментариев.
Такая возможность есть у лидерах соцсетей например у ВК и Телеграмма. Так почему здесь нельзя? Мне долго объяснять логику своего комментирования. У всех разное образование, не обязательно официальное, но есть еще знание человека и устройства общества. Если человек не понимает комментарий значит рано ему его читать. Сделайте возможность удаления не зависимо от даты постинга.
С наступающим Новым Годом!
Сабж. Кто как собирается проводить?
miran.ru не поддерживает TLS 1.3
Вот и я ф шоке.
Пишу в браузере miran.ru. Не подключается…
Пишу в firefox тот же адрес - подключается… Но там у меня отдельный сетевой namespace для сайтов, которые не принимают подключения из России. В последние годы приходится работать в условиях сетевой шизофрении. Но причем тут Miran?
Делаю ping - все пингуется. Tracert тоже работает.
Пишу curl -iv https://miran.ru/ - tcp подключился, TLS нет…
Захожу на https://www.ssllabs.com/ssltest/analyze.html?d=miran.ru - TLS 1.3 не поддерживается. Я ф шоке.
curl -iv --tlsv1.2 --tls-max 1.2 https://miran.ru/ - подключается.
И эти люди называют себя хостерами.
А вы где держите свои/арендованные сервера?
P.S. Браузер у меня Brave…
rt2870/rt3070 не видит каналы.
новый ноутбук, последняя кали линукс (6.17.10). суть проблемы: адаптер ЮСБ вайфай сканирует аирдампером (прыгает по всем 2герц каналам), но отображает Точки доступа только на 10ом канале, причём встроенная вайфай карта подключена к домашнему роутеру который и работает на 10канале, чтобы освободиться от такой привязки надо выдергнуть из порта адаптер тогда дампер показывает полный список точек доступа на разных каналах, чтобы не стирать дорожки юсб порта я нашёл способ это делать програмно связкой команд на выгрузку модулей вайфай встроенной и ЮСБ и потом их загрузку обратно + аирмун чек килл. только этот «костыль» позволяет слушать весь эфир вайфай. Но ведь это не правильно же.. короче как решить вопрос? просто аирмун чек килл не работает. блокировка/зазблокировка рфкилл тоже не помогает. Что это может быть? Пишите команды вывод терминала покажу сразу же.
AUR попал в ЧС РКН? Нет работает без VPS
Добрый день. Столкнулся, что скачивание с AUR в ARCH 1-2 кб не выше. Давно туда не обращался, поэтому возможно чего пропустил? Через vps в «дружественной» европе все работает быстро. У всех так? Есть ли местные зеркала AUR или кто как выкручивается?
CSS cтиль форума Solarized(кастомный )
На основе стиля Solarized создал свой кастомный CSS стиль для сайта linux.org.ru
Найдёте ошибки или есть идей - пишите!
Использован плагин Stylus для браузера Firefox
Использованно расширение lorify-ng для Firefox
/* ==UserStyle==
@name LOR Solarized (Dark or Light versions)
@namespace USO Archive
@author falcon-peregrinus
@description Solarized theme for Linux.Org.Ru. Has Dark and Light versions. Compitable with Tango.
@version 20150704.08.38
@license NONE
@preprocessor uso
@advanced dropdown light-dark "Color gamma" {
light "Light*" <<<EOT @namespace url(http://www.w3.org/1999/xhtml);
@-moz-document domain("linux.org.ru") {
html, body, .msg {
background-color: #fdf6e3 !important;
color: #657b83 !important;
}
#bd h1, #bd h2, .icon-tag, .stars, .icon-tag-color, .icon-user-color, .icon-pin-color, .icon-reply-color {
color: #657b83 !important;
}
.boxlet, .infoblock, #whois_userpic, thead, .forum tr:hover, span.tag, .page-number {
background-color: #eee8d5 !important;
color: #657b83 !important;
border-radius: 5px 45px 5px 45px;
-webkit-box-shadow: 7px 7px 10px 0px rgba(95, 50, 125, 0.2);
-moz-box-shadow: 7px 7px 10px 0px rgba(95, 50, 125, 0.2);
box-shadow: 7px 7px 10px 0px rgba(95, 50, 125, 0.2);
}
.menu, #hd {
text-shadow: 2px 2px 5px #888;
background-color: #93a1a1 !important;
}
#hd .menu a:hover, #loginGreating a:hover {
text-shadow: 2px 2px 5px #888;
color: #fdf6e3 !important;
}
#sitetitle {
text-shadow: 0 0 5px #FFF, 0 0 10px #FFF, 0 0 15px #FFF, 0 0 20px #49ff18, 0 0 30px #49FF18, 0 0 40px #49FF18, 0 0 55px #49FF18, 0 0 75px #49ff18, -28px -29px 0px rgba(206,89,55,0);
color: #fdf6e3 !important;
}
.menu a, #loginGreating a {
color: #586e75 !important;
text-decoration: none !important;
}
}
a{
color: #b58900 !important;
}
a:visited {
color: #614700 !important;
}
a:hover {
color: #B52D00 !important;
}
a:active {
color: #B52D00 !important;
}
.stars {
color: #2aa198 !important;
}
.user-remark, .message-table a.secondary {
color: #839496 !important;
}
.msg {
border-radius: 0px !important;
border-bottom: 1px solid #657b83 !important;
}
.msg:target {
border-color: #dc322f !important;
}
.entry-body .msg {
border-bottom: none !important;
}
.btn, .btn a, #bd .nav li a {
background-color: #1A4D56 !important;
color: #586e75 !important;
border-radius: 45px 5px 45px 5px;
}
#bd .nav li a.current {
background-color: #1A4D56 !important;
color: #586e75 !important;
border-radius: 45px 5px 45px 5px;
}
#bd .nav li a.visited {
background-color: #1A4D56 !important;
color: #58756D !important;
border-radius: 45px 5px 45px 5px;
}
.btn-danger {
background: #dc322f !important;
color: #fdf6e3 !important;
}
.fav-buttons a {
color: #93a1a1 !important;
}
.fav-buttons .selected [class^="icon-"] {
color: #b58900 !important;
}
pre code, .code {
background: #eee8d5 !important;
color: #657b83 !important;
display: block !important;
padding: 0.5em !important;
}
pre .comment,pre .template_comment,pre .diff .header,pre .doctype,pre .pi,pre .lisp .string,pre .javadoc,pre .pragma {
color: #93a1a1 !important;
font-style: italic !important;
}
pre .keyword,pre .winutils,pre .method,pre .addition,pre .css .tag,pre .request,pre .status,pre .nginx .title {
color: #859900 !important;
}
pre .number,pre .command,pre .string,pre .tag .value,pre .rules .value,pre .phpdoc,pre .tex .formula,pre .regexp,pre .hexcolor {
color: #2aa198 !important;
}
pre .title,pre .localvars,pre .chunk,pre .decorator,pre .built_in,pre .identifier,pre .vhdl .literal,pre .id,pre .css .function {
color: #268bd2 !important;
}
pre .attribute,pre .variable,pre .lisp .body,pre .smalltalk .number,pre .constant,pre .class .title,pre .parent,pre .haskell .type {
color: #b58900 !important;
}
pre .preprocessor,pre .preprocessor .keyword,pre .shebang,pre .symbol,pre .symbol .string,pre .diff .change,pre .special,pre .attr_selector,pre .important,pre .subst,pre .cdata,pre .clojure .title,pre .css .pseudo {
color: #cb4b16 !important;
}
pre .deletion {
color: #dc322f !important;
}
pre .tex .formula {
background: #eee8d5 !important;
}
span.code {
display: inline !important;
padding: 0 !important;
}
} EOT;
dark "Dark" <<<EOT @namespace url(http://www.w3.org/1999/xhtml);
@-moz-document domain("linux.org.ru") {
html, body, .msg {
background-color: #002b36 !important;
color: #839496 !important;
}
#bd h1, #bd h2, .icon-tag, .stars, .icon-tag-color, .icon-user-color, .icon-pin-color, .icon-reply-color {
color: #839496 !important;
}
.boxlet, .infoblock, #whois_userpic, thead, .forum tr:hover, span.tag, .page-number {
background-color: #073642 !important;
color: #839496 !important;
border-radius: 5px 45px 5px 45px;
-webkit-box-shadow: 7px 7px 10px 0px rgba(95, 50, 125, 0.2);
-moz-box-shadow: 7px 7px 10px 0px rgba(95, 50, 125, 0.2);
box-shadow: 7px 7px 10px 0px rgba(95, 50, 125, 0.2);
}
.menu, #hd {
background-color: #1A4D56 !important;
-webkit-box-shadow: 7px 7px 10px 0px rgba(95, 50, 125, 0.2);
-moz-box-shadow: 7px 7px 10px 0px rgba(95, 50, 125, 0.2);
box-shadow: 7px 7px 10px 0px rgba(95, 50, 125, 0.2);
border: 5px solid #1A4D56;
border-radius: 45px 5px 45px 5px;
}
#topProfile {
float: right;
font-size: 1.1em;
margin-top: 1rem;
margin-right: 0.8rem;
color: #B52D00;
text-shadow: 0 0 10px #FFFFFF;
}
.messages .msg {
-webkit-border-radius: 45px 5px 45px 5px;
-moz-border-radius: 45px 5px 45px 5px;
border-radius: 45px 5px 45px 5px;
}
.messages .msg:target {
-webkit-border-radius: 45px 5px 45px 5px;
-moz-border-radius: 45px 5px 45px 5px;
border-radius: 45px 5px 45px 5px;
}
#hd .menu a, #loginGreating a {
color: #839496 !important;
}
#hd .menu a:hover, #loginGreating a:hover {
color: #B52D00 !important;
}
#sitetitle {
color: #FFFFFF;
text-shadow: 0 0 5px #FFF, 0 0 10px #FFF, 0 0 15px #FFF, 0 0 20px #49ff18, 0 0 30px #49FF18, 0 0 40px #49FF18, 0 0 55px #49FF18, 0 0 75px #49ff18;
}
.menu a, #loginGreating a {
color: #93a1a1 !important;
text-decoration: none !important;
}
textarea {
background-color: #1A4D56 !important;
border-radius: 15px 15px 15px 15px;
border-color: #657b83 !important;
}
input {
background-color: #1A4D56 !important;
border-radius: 15px 15px 15px 15px;
border-color: #657b83 !important;
}
a {
color: #b58900 !important;
}
a:visited {
color: #614700 !important;
}
a:hover {
color: #B52D00 !important;
}
a:active {
color: #B52D00 !important;
}
.stars {
color: #36AB88 !important;
}
.user-remark, .message-table a.secondary {
color: #657b83 !important;
}
.msg {
border-radius: 0px !important;
border-bottom: 1px solid #839496 !important;
}
.msg:target {
border-color: #dc322f !important;
}
.entry-body .msg {
border-bottom: none !important;
}
.btn, .btn a, #bd .nav li a {
background-color: #1A4D56 !important;
color: #586e75 !important;
border-color: #657b83 !important;
border-radius: 45px 5px 45px 5px;
}
#bd .nav li a.current {
background-color: #1A4D56 !important;
color: #586e75 !important;
border-radius: 45px 5px 45px 5px;
}
#bd .nav li a.visited {
background-color: #1A4D56 !important;
color: #58756D !important;
border-radius: 45px 5px 45px 5px;
}
.btn-danger {
background: #dc322f !important;
color: #002b36 !important;
}
.fav-buttons a {
color: #586e75 !important;
}
.fav-buttons .selected [class^="icon-"] {
color: #b58900 !important;
}
pre code, .code {
background: #073642 !important;
color: #839496 !important;
display: block !important;
padding: 0.5em !important;
}
pre .comment,pre .template_comment,pre .diff .header,pre .doctype,pre .pi,pre .lisp .string,pre .javadoc,pre .pragma {
color: #586e75 !important;
font-style: italic !important;
}
pre .keyword,pre .winutils,pre .method,pre .addition,pre .css .tag,pre .request,pre .status,pre .nginx .title {
color: #859900 !important;
}
pre .number,pre .command,pre .string,pre .tag .value,pre .rules .value,pre .phpdoc,pre .tex .formula,pre .regexp,pre .hexcolor {
color: #2aa198 !important;
}
pre .title,pre .localvars,pre .chunk,pre .decorator,pre .built_in,pre .identifier,pre .vhdl .literal,pre .id,pre .css .function {
color: #268bd2 !important;
}
pre .attribute,pre .variable,pre .lisp .body,pre .smalltalk .number,pre .constant,pre .class .title,pre .parent,pre .haskell .type {
color: #b58900 !important;
}
pre .preprocessor,pre .preprocessor .keyword,pre .shebang,pre .symbol,pre .symbol .string,pre .diff .change,pre .special,pre .attr_selector,pre .important,pre .subst,pre .cdata,pre .clojure .title,pre .css .pseudo {
color: #cb4b16 !important;
}
pre .deletion {
color: #dc322f !important;
}
pre .tex .formula {
background: #073642 !important;
}
span.code {
display: inline !important;
padding: 0 !important;
}
}
EOT;
}
==/UserStyle== */
/*[[light-dark]]*/
MAX - шум, писк и визг
когда я (с Linux Devuan или Ubuntu) разговариваю с кем-нибудь по максу («кто-нибудь» сидят на винде), то они есть вышеобозначенные помехи
ни с каким другим месседжером такого замечено не было
кто-нибудь сталкивался с подобным?
Stylus правки в CSS Лора
Поставил расширение Stylus для Firefox.
В какой строке CSS добавить тень для текста в главном меню?
text-shadow: 2px 2px 5px #888;
Новости || Галерея || Статьи || Форум
Предложение по тегам
Предлагаю теги проектов делать с полным доменом. Например livejournal –> livejournal.com. Потому как livejournal - это аналог русского тега жж. Т.е если я не хочу видеть всё, что связано с livejournal.com т.е добавлю livejournal в игнор, то могу пропускать топики, которые формируют юзеры и тегируют их жж, livejournal
Оператор кубернетеса для медиасервера: управлять каждым инстансом или всем кластером?
Мы потихоньку развиваем оператор кубернетеса для нашего медиасервера Flussonic и возникает вот какой вопрос по самой концепции: вот один инстанс CRD должен отвечать за один экземпляр медиасервера или за целый кластер разнообразных серверов с разными версиями, конфигурациями железа и дисков?
Вводная такая, что софт у нас расчитан на то, чтобы забирать под себя весь сервер и не особо кого ещё там видеть. Т.е. это не 500 маленьких приложух, а одна большая на все 100 ядер.
Я так посмотрел, вроде как Cloud Native Postgres управляет сразу всем кластером.
У меня ситуация такая, что есть ряд настроек, которые будут разные у разных инстансов и если управлять из одного ресурса всем кластером, то неизменно возникают такие настройки, как:
configPerNode:
- hostname: "node1"
disks:
....
- hostname: "node2"
hasGpu: true
disks: []
А ещё наверное неплохо было бы (ну так, чисто теоретически) на разных серверах иметь разный логин-пароль и соответственно это тоже надо куда-то складывать.
И вот получается, что если ресурс и контроллер описывает весь кластер, то к нему понятно как ходить, но по сути его настройки легко могут превратиться в портянку из кучи разных вариаций для разных нод. Уже не говоря о том, что если с этим одним большим контроллером что-то пойдет не так, то он вполне может положить вообще всё.
А если создавать по одному инстансу CRD на каждый экземпляр (т.е. ноду), то получается, что у нас на каждый сервак отдельная запись и не будет ли это тяжело поддерживать?
Какой опыт? Читал в https://sdk.operatorframework.io/docs/best-practices/best-practices/ и ответов не нашел. В чатгпт не ходил.
Си, учебная задача, массив, указатели
Не знаю какими словами спросить у поисковых систем. Код ниже выдает такой результат:
690165708 14754882 1571426279 748212300 546573552 710529569 1908956059 1365401208 1566297428 705403694
690165708 14754882 1571426279 748212300 925961456 909718834 875771960 359798784 1566297428 705403694
По замыслу, ряды чисел должны совпадать не только в начале и конце списка. Собственно вопрос в том, как так получаеться, что массив полученный в функцию main, частично отличаеться от того, что вызванная функция создала.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int* GenTwoDigitRand(int qTty);
int main(int argc, char **argv) {
int const mySize = 9;
int* myArray = GenTwoDigitRand(mySize);
for (int i = 0; i <= mySize; ++i) {
printf("%d ", myArray[i]);
}
return 0;
}
int* GenTwoDigitRand(int qTty) {
srand(time(NULL));
int myArray[qTty];
int myRand = 0;
for (int n = 0; n <= qTty; ++n) {
myRand = rand();
myArray[n] = myRand;
}
int *p = myArray;
for (int n = 0; n <= qTty; ++n) {
printf("%d ", myArray[n]);
}
printf("\n");
return p;
}
Подскажите что прочитать или с каким запросом лезть в поисковик. Спасибо.
ЖЖ. Там очередной гвоздь в крышку гроба забили
https://ru-news.livejournal.com/80899.html
С 29 декабря 2025 года публиковать новые публичные посты, оставлять комментарии, загружать фото и видео могут пользователи, которые соответствуют хотя бы одному из условий:
подключен пакет «Профессиональный»;
к аккаунту привязана авторизация Сбер ID;
значение социального капитала составляет не менее 500;
блог зарегистрирован в реестре блогеров Роскомнадзора или имеет статус верифицированного.
Как заглянуть в пайп?
Работает команда wget ... | grep ... | awk ... Мне надоело ждать, пока она закончит, хочу посмотреть, не начал ли wget качать что-то не то. PID процессов 3750, 3751, 3752 соответственно.
# ls -l /proc/375{0,1,2}/fd
/proc/3750/fd:
итого 0
lrwx------ 1 oleg oleg 64 дек 30 02:47 0 -> /dev/pts/7
l-wx------ 1 oleg oleg 64 дек 30 02:47 1 -> 'pipe:[4587155]'
l-wx------ 1 oleg oleg 64 дек 30 02:47 10 -> 'pipe:[997829]'
l-wx------ 1 oleg oleg 64 дек 30 02:47 12 -> 'pipe:[997830]'
l-wx------ 1 oleg oleg 64 дек 30 02:47 2 -> 'pipe:[4587155]'
lrwx------ 1 oleg oleg 64 дек 30 02:47 3 -> 'socket:[4638567]'
/proc/3751/fd:
итого 0
lr-x------ 1 oleg oleg 64 дек 30 02:48 0 -> 'pipe:[4587155]'
l-wx------ 1 oleg oleg 64 дек 30 02:48 1 -> 'pipe:[4587157]'
l-wx------ 1 oleg oleg 64 дек 30 02:48 10 -> 'pipe:[997829]'
l-wx------ 1 oleg oleg 64 дек 30 02:48 12 -> 'pipe:[997830]'
lrwx------ 1 oleg oleg 64 дек 30 02:48 2 -> /dev/pts/7
/proc/3752/fd:
итого 0
lr-x------ 1 oleg oleg 64 дек 30 02:51 0 -> 'pipe:[4587157]'
lrwx------ 1 oleg oleg 64 дек 30 02:51 1 -> /dev/pts/7
l-wx------ 1 oleg oleg 64 дек 30 02:51 10 -> 'pipe:[997829]'
l-wx------ 1 oleg oleg 64 дек 30 02:51 12 -> 'pipe:[997830]'
lrwx------ 1 oleg oleg 64 дек 30 02:51 2 -> /dev/pts/7
Что отсюда можно извлечь?
Ответ:
strace -p 3751 -e read,write -s 1000000 --strings-in-hex=non-ascii-chars
Хранение файлов и бэкапы с контролем целостности
Всем привет и с наступающим. Прошу прощения, если пишу не в тот раздел.
Несколько раз сталкивался с бит ротом (оно же silent data corruption) и хочу избежать повторений. В данный момент архив фоток и другие файлы с начала времён хранятся на зфс в зеркале. Скраб за 6 лет пару раз исправлял ошибки, но каждый раз извлекать и подключать системник из кладовки для доступа к файлам напрягает.
Хочется организовать доступ к файлам 24/7 с минимальным потреблением электроэнергии, контролем целостности и перейти к стратегии хранения 3-2-1.
Планирую использовать Orange Pi 5 Plus с м2 ссд внутри и внешний ссд под бэкапы. Данных пока <1тб, диски на 2тб. Ещё есть ASRock J4205-ITX и Intel NUC на N3450/J3455, но оба без м2 и я очень сильно сомневаюсь в энергоэффективности этих вариантов.
Чего хотелось бы в идеале: раз в месяц проверить целостность данных на внутреннем диске, сделать копию на внешний диск, проверить её и успокоиться на месяц. Пару раз в год залить данные на «кладовочный» системник.
Собственно, основной вопрос - как это лучше/проще реализовать? Можно ли в условных Borg/Bacula настроить подобный алгоритм работы? BTRFS с send/receive подойдёт для подобной задачи и будет ли достаточно надёжной? Можно ли сделать что-то подобное в LVM с dm-integrity? Или нет ничего лучше/надёжнее баш-портянки на хэши всех файлов и последующего рсунка?
Буду благодарен за помощь, пока склоняюсь к последнему варианту
| следующие → |