LINUX.ORG.RU

Избранные сообщения superuser

Бесплатный хостинг / Бесплатный домен :)

Форум — Talks

Кто какими пользуется, какие бывают. Поисковики выдают хренову тучу вариантов. Все их проверять удел сильных духом. Чтобы локация была в РФ, если дают ssh то клёво. Дохлость ресурсов, аптайм в целом по барабану. Кое-как работает и ладно. Интересно узнать как и о просто хостингах куда можно залить статику хоть по FTP и всё без всяких CMS (или если цмски как опция) так и VPS,VDS. Я выпал из всего этого, просто интересно было-бы узнать что сейчас ну стабильное что ли, пусть и скромное.

Ну и чтобы без всяких приколов типа, превышен некий лимит и тебе выставляют счёт. Не скажу что сильно надо, но на перспективу узнать хорошо бы. Если не знаете «хорошие» места, но знаете плохие места, то тоже будет полезно узнать. И не только мне. Гы ::)

Перемещено Dimez из general

 , , , ,

LINUX-ORG-RU
()

Кто знает хорошо grub? Вопрос по маленькой статейке из Хабра.

Форум — Linux-install

Есть статья: Запуск Linux с виртуального диска vmdk на реальном железе и VirtualBox

https://habr.com/ru/articles/547512/

Почему там нужно создавать диск из двух частей? Ну, то есть, зачем там еще впереди кусок из 1 Мегабайта?

Статью я проверил – на Kubuntu 24 Desktop она сработала, а вот на других дистрах не работает, а мне надо другие.

И мне не понятен вопрос про такую конфигурацию диска.

Перемещено hobbit из general

 

truebin
()

Делаем из Vim IDE

Статьи — Разработка
Делаем из Vim IDE

В стародавние времена когда деревья были большими, трава зеленее, а мороженное стоило по 10 копеек, на Земле жили динозавры, и эти динозавры программировали в Vim.

( читать дальше... )

 , ,

rtxtxtrx
()

YT-DLP, очевидное-невероятное

Статьи — Desktop

В последнее время ютуб затеял какую-то реорганизацию и стал убирать из некоторых своих видео формат 22 (720p, единый файл, не dash). Может я наговариваю, конечно, на ютуб, но формат best (720p) всегда был, имхо.


Оказывается есть возможность получать другую таблицу форматов, отличную от дефолтной. У yt-dlp есть параметр --extractor-arg "youtube:player_client=mediaconnect" ([youtube] Format 22 is only sometimes extracted for some videos #10206).
Дефолтная таблица форматов:

$ yt-dlp -F 'https://youtu.be/eUyr9MJnj4w' 
Extracting cookies from firefox
Extracted 1328 cookies from firefox
[youtube] Extracting URL: https://youtu.be/eUyr9MJnj4w
[youtube] eUyr9MJnj4w: Downloading webpage
[youtube] eUyr9MJnj4w: Downloading ios player API JSON
[youtube] eUyr9MJnj4w: Downloading player 5b22937f
[youtube] eUyr9MJnj4w: Downloading m3u8 information
[info] Available formats for eUyr9MJnj4w:
ID  EXT   RESOLUTION FPS CH │   FILESIZE   TBR PROTO │ VCODEC          VBR ACODEC      ABR ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27        0    │                  mhtml │ images                                  storyboard
sb2 mhtml 80x45        1    │                  mhtml │ images                                  storyboard
sb1 mhtml 160x90       1    │                  mhtml │ images                                  storyboard
sb0 mhtml 320x180      1    │                  mhtml │ images                                  storyboard
233 mp4   audio only        │                  m3u8  │ audio only          unknown             Default
234 mp4   audio only        │                  m3u8  │ audio only          unknown             Default
139 m4a   audio only      2 │    1.32MiB   49k https │ audio only          mp4a.40.5   49k 22k low, m4a_dash
249 webm  audio only      2 │    1.30MiB   48k https │ audio only          opus        48k 48k low, webm_dash
250 webm  audio only      2 │    1.70MiB   63k https │ audio only          opus        63k 48k low, webm_dash
140 m4a   audio only      2 │    3.51MiB  129k https │ audio only          mp4a.40.2  129k 44k medium, m4a_dash
251 webm  audio only      2 │    3.51MiB  130k https │ audio only          opus       130k 48k medium, webm_dash
602 mp4   256x144     15    │ ~  2.33MiB   86k m3u8  │ vp09.00.10.08   86k video only
394 mp4   256x144     30    │    1.68MiB   62k https │ av01.0.00M.08   62k video only          144p, mp4_dash
269 mp4   256x144     30    │ ~  4.16MiB  154k m3u8  │ avc1.4D400C    154k video only
160 mp4   256x144     30    │    1.55MiB   57k https │ avc1.4D400C     57k video only          144p, mp4_dash
603 mp4   256x144     30    │ ~  4.18MiB  154k m3u8  │ vp09.00.11.08  154k video only
278 webm  256x144     30    │    2.35MiB   87k https │ vp9             87k video only          144p, webm_dash
395 mp4   426x240     30    │    2.70MiB  100k https │ av01.0.00M.08  100k video only          240p, mp4_dash
229 mp4   426x240     30    │ ~  5.70MiB  211k m3u8  │ avc1.4D4015    211k video only
133 mp4   426x240     30    │    2.35MiB   87k https │ avc1.4D4015     87k video only          240p, mp4_dash
604 mp4   426x240     30    │ ~  7.76MiB  287k m3u8  │ vp09.00.20.08  287k video only
242 webm  426x240     30    │    3.59MiB  133k https │ vp9            133k video only          240p, webm_dash
396 mp4   640x360     30    │    5.02MiB  186k https │ av01.0.01M.08  186k video only          360p, mp4_dash
230 mp4   640x360     30    │ ~ 11.41MiB  421k m3u8  │ avc1.4D401E    421k video only
134 mp4   640x360     30    │    4.13MiB  153k https │ avc1.4D401E    153k video only          360p, mp4_dash
18  mp4   640x360     30  2 │ ≈  7.64MiB  282k https │ avc1.42001E         mp4a.40.2       44k 360p
605 mp4   640x360     30    │ ~ 15.03MiB  555k m3u8  │ vp09.00.21.08  555k video only
243 webm  640x360     30    │    6.06MiB  224k https │ vp9            224k video only          360p, webm_dash
397 mp4   854x480     30    │    8.40MiB  310k https │ av01.0.04M.08  310k video only          480p, mp4_dash
231 mp4   854x480     30    │ ~ 15.17MiB  561k m3u8  │ avc1.4D401F    561k video only
135 mp4   854x480     30    │    6.09MiB  225k https │ avc1.4D401F    225k video only          480p, mp4_dash
606 mp4   854x480     30    │ ~ 20.80MiB  769k m3u8  │ vp09.00.30.08  769k video only
244 webm  854x480     30    │    8.50MiB  314k https │ vp9            314k video only          480p, webm_dash
398 mp4   1280x720    30    │   14.51MiB  536k https │ av01.0.05M.08  536k video only          720p, mp4_dash
232 mp4   1280x720    30    │ ~ 24.57MiB  908k m3u8  │ avc1.4D401F    908k video only
136 mp4   1280x720    30    │   11.09MiB  410k https │ avc1.4D401F    410k video only          720p, mp4_dash
609 mp4   1280x720    30    │ ~ 31.59MiB 1167k m3u8  │ vp09.00.31.08 1167k video only
247 webm  1280x720    30    │   13.61MiB  503k https │ vp9            503k video only          720p, webm_dash
399 mp4   1920x1080   30    │   24.33MiB  899k https │ av01.0.08M.08  899k video only          1080p, mp4_dash
270 mp4   1920x1080   30    │ ~ 73.64MiB 2721k m3u8  │ avc1.640028   2721k video only
137 mp4   1920x1080   30    │   39.45MiB 1458k https │ avc1.640028   1458k video only          1080p, mp4_dash
614 mp4   1920x1080   30    │ ~ 53.22MiB 1967k m3u8  │ vp09.00.40.08 1967k video only
248 webm  1920x1080   30    │   26.78MiB  990k https │ vp9            990k video only          1080p, webm_dash
616 mp4   1920x1080   30    │ ~131.47MiB 4858k m3u8  │ vp09.00.40.08 4858k video only          Premium
400 mp4   2048x1152   30    │   60.94MiB 2252k https │ av01.0.08M.08 2252k video only          1080p, mp4_dash
620 mp4   2048x1152   30    │ ~151.23MiB 5589k m3u8  │ vp09.00.50.08 5589k video only
271 webm  2048x1152   30    │   82.90MiB 3063k https │ vp9           3063k video only          1080p, webm_dash

Новая таблица форматов с единым файлом/потоком для 720p (и 1080p):

$ yt-dlp -F 'https://youtu.be/eUyr9MJnj4w' --extractor-arg "youtube:player_client=mediaconnect"
Extracting cookies from firefox
Extracted 1329 cookies from firefox
[youtube] Extracting URL: https://youtu.be/eUyr9MJnj4w
[youtube] eUyr9MJnj4w: Downloading webpage
[youtube] eUyr9MJnj4w: Downloading mediaconnect player API JSON
[youtube] eUyr9MJnj4w: Downloading m3u8 information
[info] Available formats for eUyr9MJnj4w:
ID  EXT   RESOLUTION FPS CH │  FILESIZE   TBR PROTO │ VCODEC        VBR ACODEC      ABR ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27        0    │                 mhtml │ images                                storyboard
sb2 mhtml 80x45        1    │                 mhtml │ images                                storyboard
sb1 mhtml 160x90       1    │                 mhtml │ images                                storyboard
sb0 mhtml 320x180      1    │                 mhtml │ images                                storyboard
140 m4a   audio only      2 │   3.51MiB  129k https │ audio only        mp4a.40.2  129k 44k medium, m4a_dash
160 mp4   256x144     30    │   1.55MiB   57k https │ avc1.4d400c   57k video only          144p, mp4_dash
91  mp4   256x144     30    │ ~ 4.16MiB  154k m3u8  │ avc1.4d400c       mp4a.40.5
133 mp4   426x240     30    │   2.35MiB   87k https │ avc1.4d4015   87k video only          240p, mp4_dash
92  mp4   426x240     30    │ ~ 5.70MiB  211k m3u8  │ avc1.4d4015       mp4a.40.5
134 mp4   640x360     30    │   4.13MiB  153k https │ avc1.4d401e  153k video only          360p, mp4_dash
93  mp4   640x360     30    │ ~11.41MiB  421k m3u8  │ avc1.4d401e       mp4a.40.2
18  mp4   640x360     30  2 │ ≈ 7.64MiB  282k https │ avc1.42001E       mp4a.40.2       44k 360p
135 mp4   854x480     30    │   6.09MiB  225k https │ avc1.4d401f  225k video only          480p, mp4_dash
94  mp4   854x480     30    │ ~15.17MiB  561k m3u8  │ avc1.4d401f       mp4a.40.2
136 mp4   1280x720    30    │  11.09MiB  410k https │ avc1.4d401f  410k video only          720p, mp4_dash
95  mp4   1280x720    30    │ ~24.57MiB  908k m3u8  │ avc1.4d401f       mp4a.40.2
137 mp4   1920x1080   30    │  39.45MiB 1458k https │ avc1.640028 1458k video only          1080p, mp4_dash
96  mp4   1920x1080   30    │ ~73.64MiB 2721k m3u8  │ avc1.640028       mp4a.40.2

Как скачивать 720p (формат единым файлом/потоком):

$ yt-dlp -f 95 'https://youtu.be/eUyr9MJnj4w' --extractor-arg "youtube:player_client=mediaconnect" 

Как воспроизводить 720p (формат единым файлом/потоком):

$ mpv --ytdl-format=95 'https://youtu.be/eUyr9MJnj4w' --ytdl-raw-options=extractor-arg="youtube:player_client=mediaconnect" 


Кроме того:

  • Для mpv можно создать профиль [youtube] в mpv.conf, где прописать условие срабатывания на ютубных ссылках, типа profile-cond=path:match('youtu%.?be') ~= nil или profile-cond=path:find('youtu%.?be') (1).
    И добавив в профиль параметр ytdl-raw-options=extractor-arg="youtube:player_client=mediaconnect" и ytdl-format=95/best.
  • Для yt-dlp, чтобы при наборе команды в терминале мучительно долго не вспоминать указанную в начале заметки длиннющую опцию, можно создать алиас. В конфиге yt-dlp прописываем, как пример, --alias 95f '-f 95 --extractor-arg="youtube:player_client=mediaconnect"'. Теперь, чтобы скачать, пишем yt-dlp --95f 'https://youtu.be/eUyr9MJnj4w'.


Для чего все это надо?

  • минус издержки на склеивание dash-потоков видео и аудио средствами ffmpeg;
  • возможность отправлять ссылку на стандартный вывод (stdout) какого-либо плеера, например vlc;
  • плюс, оказывается, и для 1080p существует подобный формат единого файла.
  • лучшая отзывчивость при перемотке во внешнем плеере (возможно верно для всех hls и не зависит от таблицы форматов)

 ,

krasnh
()

Кто как сейчас ускоряет youtube?

Форум — General

Раньше мне помогал spoofdpi, а теперь, два дня назад, и он перестал работать. В интернете говорят, что и у goodbyedpi в этот момент проблемы возникли но их быстро решили. К сожалению, его нету под Linux. Были надежды на byeDPI но либо он тоже не справляется, либо я не могу найти подходящую команду для него. Хотя приложение ByeDPI на андроиде ещё работает. Так вот, кто какими решениями пользуется под Linux? v2ray, vpn, это всё конечно хорошо но своей VPS у меня нету, а публичные в 12 раз медленнее чем мой интернет.

Ещё примечание, я обычно предварительно скачиваю через yt-dlp а потом уже смотрю. Где-то говорили, что у кого-то youtube работает если включить протокол QUIC в браузере. Есть ли такая возможность в yt-dlp? Или может есть какая-то дополнительная программа, которая будет работать как прокси и будет трафик в QUIC превращать.

 , ,

whatiswhat
()

Вопрос к специалистам по оптическим сетям

Форум — Talks

Я живу в деревне в частном доме. В доме протянута обычная сеть на витой паре. И есть сосед-приятель,который хотел бы ко мне подключиться. Но расстояние между нашими домами около 450м,что больше официально допустимого для витой пары. Да еще проблемы грозозащиты,неизбежные для любых медных проводов.

Возникла мысль попытаться использовать оптический кабель,тем более что он дешево продается на Озоне,например вот: https://www.ozon.ru/product/kabel-opticheskiy-oksk-2a-1-5-kn-2-volokna-buhta-500m-1056605179/ Девять с хвостиком тыс за бухту 500м. Там же есть и медиаконвертеры,разные и за весьма разную цену: https://www.ozon.ru/category/mediakonvertery/ Идея в том,чтобы купить кабель,отнести его туда где могут приварить разъемы,после чего протянуть между домами(протянуть тут легко,ничего не мешает). Но сам я никогда оптические сети не строил,только пару раз видел как это специальные люди делали. Я только «медными» сетями занимался,причем довольно много.

Поэтому вопрос: будет ли работать этот дешевый кабель с Озона с предлагаемыми там же медиаконвертерами,и если да то с какими именно? А также интересно,почему на тех конверторах два гнезда под оптические кабели,подписанных как TX и RX? У них прием и передача отдельно и им два волокна надо? Вроде там где я видел(на старой работе лет двадцать назад) - работало по одному волокну,хотя могу и ошибаться,я особо не вникал за ненадобностью в то время.

Вобщем - просьба к тем кто имеет имеет практический опыт в оптических сетях прокомментировать вышеизложенную идею на предмет реализуемости и цены. Да,какая-то дикая скорость в гигабиты не требуется,обычных 100мбит будет более чем достаточно. Это же для личного некоммерческого применения. Нужен максимально дешевый эдакий «удлинитель», работающий на несколько сотен метров и не боящийся наводок от молний.

 

watchcat382
()

systemd 219

Новости — Open Source
Группа Open Source

16 февраля был представлен очередной релиз системного менеджера systemd, совмещающего в себе функции системы инициализации, ведения журнала, управления сессиями пользователей и работы с контейнерами. systemd основан на модели зависимостей (в противовес событийной модели), производит отслеживание процессов запущенных сервисов при помощи механизма cgroups ядра Linux, поддерживает механизмы сокет- и dbus-активации сервисов и предоставляет удобный декларативный синтаксис для описания демонов и других сущностей. Это позволяет производить агрессивную параллелизацию при запуске и остановке сервисов.

В рамках проекта также разрабатывается ряд легковесных приложений и демонов, выполняющих второстепенные, но распространённые вспомогательные задачи (т. н. plumbing layer) — от настройки подсистемы VT (systemd-vconsole-setup) и первичного конфигурирования системы (systemd-firstboot) до управления сетью (systemd-networkd) и профилирования загрузки (systemd-bootchart).

Большая часть изменений, вошедших в этот релиз, была направлена на расширение возможностей по работе с контейнерами. Эти изменения сконцентрированы в компонентах systemd-machined и systemd-nspawn и нескольких сопутствующих утилитах.

Примечание переводчика: в плане новых контейнерных фич релиз получился крайне сырой; по факту мало что работает. Такое ощущение, что они тупо сделали промежуточный тарболл, чтобы заиметь чуть побольше тестеров.

( читать дальше... )

>>> Объявление о релизе

 

intelfx
()

squashfs из iso loop

Форум — General

Собственно хочу понять как подхватывать вторичную фс при загрузке из iso, в качестве примера взят mageia2:

grub.cfg такой:

menuentry "MageiaLive-2 x86_64-DVD.iso" {
## https://forum.mxlinux.org/viewtopic.php?p=343499&sid=8ead07b227700eb06d6b8eaae592b58d#p343499
	probe -s ruuid -u $root
	search --no-floppy --fs-uuid $ruuid --set=root
	set isofile='/isoimage/Mageia-2-LiveCD-GNOME-x86_64-CD.iso'
	loopback loop0 $isofile
	probe -s isolabel -l loop0
	probe -s isouuid -u loop0
	linux (loop0)/boot/vmlinuz root=mgalive:LABEL=ISOIMAGE ro isofrom=$ruuid:$isofile looptype=squashfs loop=/loopbacks/distrib-lzma.sqfs lang=ru rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0          
	initrd (loop0)/boot/cdrom/initrd.gz 

Где ISOIMAGE это метка тома ISO по умолчанию от grub2-mkrescue -o ../grub.iso .

Собственно, загрузчик этой конфигурацией подхватывается, но вылетает при попытке загрузиться с loopbacks/distrib-lzma.sqfs:

SQUASHFS error: squashfs_read_data failed to read block 0x0
SQUASHFS error: unable to read squashfs_super_block
mount /dev/loop0: can't read superblock
dracut Warning: /sysroot has no proper rootfs layout, ignoring and removing offending mount hook

dracut Warning: Can't mount root filesystem
losetup: failed to setup loop device: No such file or directory
mount /dev/loop0: can't read superblock
dracut Warning: /sysroot has no proper rootfs layout, ignoring and removing offending mount hook

Что тут можно сделать ? Очень желательны и другие примеры :)

 

dymdin
()

Загрузка любого дистрибутива в RAM

Форум — Talks

Здравствуйте мои юные кали-хакеры и любители оставаться анонимными. С утра, ковыряя VDS (пользуюсь услугами ру-провайдера), [ДАННЫЕ УДАЛЕНЫ] запрос, и [ДАННЫЕ УДАЛЕНЫ] дамп диска [ДАННЫЕ УДАЛЕНЫ].

А теперь скрипт, который из кастомного, т.е. созданного и настроенного вами chroot'а создаёт initramfs образ, готовый к загрузке и работе в tmpfs.

С ним вы можете на любой системе прямо «на лету» свичнуться в tmpfs, хоть прямо сейчас, на своём компьютере. Предварительно установив в chroot любой дистрибутив по желанию и настроив его под себя. А потом скриптом упаковать его в initramfs образ и свичнуться, да.

Для создания минимального (от слова «маленький», а не «огрызок») образа потребуется squashfs-tools. Чтобы свичнуться «на лету» нужен kexec-tools. Установите их. В ядре должны быть включены опции: CONFIG_OVERLAY_FS=y, CONFIG_SQUASHFS=y и CONFIG_SQUASHFS_XZ=y. [личное мнение: ZSTD получается размером больше, чем XZ]

Например. Хотите генту?

# mkdir gentoo_chroot/
# cd gentoo_chroot/
# wget https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/20200519T155804Z/stage3-amd64-20200519T155804Z.tar.xz
# tar xf stage3-amd64-*.tar.xz
# rm stage3-amd64-*.tar.xz
# cd ..

На этом этапе мы получили ванильную генту в gentoo_chroot/. Рекомендую её настроить, хотя бы сделать chroot gentoo_chroot/ /bin/bash и установить passwd для root, иначе в систему вы не войдёте. Я не знаю, что это за особенность такая, не давать установить пароль если его нет. В моём CRUX когда пароль на root отсутствует и ты логинишься первый раз (в tty или в ssh по ключу), оно просто предлагает установить пароль. Какая тут может быть дыра в безопасности на свежеустановленной системе? Не знаю...

Предлагаю так же в gentoo_chroot/ скопировать модули и фирмварь для корректной работы текущего ядра и железа.

# cp -a /lib/modules gentoo_chroot/lib/modules
# cp -a /lib/firmware gentoo_chroot/lib/firmware

Ну и создадим образ наконец.

# ./mkchrootrd gentoo_chroot/ ~/gentoo_initrd

Усё. У нас теперь целая настоящая гента в gentoo_initrd файлике упакована. Давайте загрузимся же в неё скорее с текущим ядром.

# eval $(cat /proc/cmdline | cut -f 1 -d \ )
# kexec -l $BOOT_IMAGE --initrd=gentoo_initrd --reuse-cmdline
# kexec -e

Если вы не хотите делать kexec по каким-то причинам, то положите этот же образ в свой /boot, а в параметрах загрузки укажите initrd /gentoo_initrd. Перезагрузитесь и получите тот-же результат.

Ура! Гента загрузилась. Тоже самое можно проделать с любым дистрибутивом, просто установите его, настройте как вам угодно, а затем скриптом создайте initramfs образ. Я уж взял для примера Gentoo, не стал лишний раз приводить в пример CRUX.

Жмём Reset чтобы сбросить всё и загрузиться в свою систему с морально устаревшего M.2 NVMe накопителя обратно.

Перевёл свою VDS на работу в tmpfs. Диск /dev/vda отформатировал в NTFS. Рекомендую всем. 👍👍👍👍👍👍

Скрипт:

#!/bin/bash
#
# Author: Sp00f1ng <sp00f1ng@sp00f1ng.com>
# License: Public Domain
#
################################################################################
#
# mkchrootrd chroot_directory/ [initrd_image]
#
################################################################################
# 
# Depends on: squashfs-tools
# Optional:   kexec-tools
# Kernel:
#
# File systems  --->
#    <*> Overlay filesystem support
#    [*] Miscellaneous filesystems  --->
#       <*> SquashFS 4.0 - Squashed file system support
#          [*] Include support for XZ compressed file systems
#
################################################################################
#
# Example usage:
#
# mkdir gentoo_chroot/
# cd gentoo_chroot/
# wget https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/20200519T155804Z/stage3-amd64-20200519T155804Z.tar.xz
# tar xf stage3-amd64-*.tar.xz
# rm stage3-amd64-*.tar.xz
#
# [.. do something else with gentoo_chroot/ like additional configuration ...]
# [ cp -a /lib/modules ./lib/modules ]
# [ cp -a /lib/firmware ./lib/firmware ]
#
# cd ../
#
# ./mkchrootrd gentoo_chroot/ ~/gentoo_initrd
#
# eval $(cat /proc/cmdline | cut -f 1 -d \ )
# kexec -l $BOOT_IMAGE --initrd=gentoo_initrd --reuse-cmdline
# kexec -e
# 
# Have fun and happy hacking day 1 <3 <3 7 !

panic() {
	if [ -e "$TMP" ]; then
		rm -rf $TMP 2>/dev/null
	fi
	exit ${1:1}
}

got_help() {
	grep ^\# "$0"
}

got_cmdline() {
	while [ "$1" ]; do
		if [ ! -n "$CHROOT_DIR" ]; then
			CHROOT_DIR="$1"
			shift
			continue
		fi
		if [ ! -n "$INITRD_IMG" ]; then
			INITRD_IMG="$1"
			shift
			continue
		fi
		shift
	done
}

cp_bin() {
	local src="$1"
	local dst="$2"
	local dep=""

	if [ "$dst" = "" ]; then
		dst="$src"
	fi

	if [ -e "$TMP$dst" ]; then
		return
	fi

	install -D -m 0755 "$src" "$TMP$dst"

	for dep in $(ldd "$src" 2>/dev/null | grep -o '/.* '); do
		cp_bin "$dep"
	done
}

mk_env() {
	for dir in proc sys dev run mnt overlay; do
		install -d $TMP/$dir
	done

	for dev in console tty tty1 null; do
		cp -a "/dev/$dev" "$TMP/dev/$dev"
	done

	for bin in sh switch_root mount umount mkdir rmdir; do
		cp_bin "$(which $bin)"
	done

	touch $TMP/init
	chmod +x $TMP/init

	cat > $TMP/init << EOF
#!/bin/sh
mount -t proc none /proc
echo "0" > /proc/sys/kernel/printk
mount -t sysfs none /sys
mount -t devtmpfs devtmpfs /dev
mount -t tmpfs none /run
mount -t tmpfs tmpfs /overlay
lowerdir="/lower"
upperdir="/overlay/upper"
workdir="/overlay/work"
mkdir -p \$lowerdir
mkdir -p \$upperdir
mkdir -p \$workdir
mount -t squashfs -o ro /root.sqfs \$lowerdir
mount -t overlay -o ro,lowerdir="\$lowerdir",upperdir="\$upperdir",workdir="\$workdir" overlay /mnt
umount /proc
umount /sys
umount /dev
umount /run
exec switch_root /mnt /sbin/init
EOF
}

main() {
	CHROOT_DIR=""
	INITRD_IMG=""

	got_cmdline "$@"

	if [ ! -n "$CHROOT_DIR" ] || [ ! -n "$INITRD_IMG" ]; then
		got_help
		panic 0
	fi

	if [ ! -d "$CHROOT_DIR" ]; then
		echo "'$CHROOT_DIR' is not directory."
		panic 1
	fi

	if [ ! -x "$(which mksquashfs)" ]; then
		echo "'mksquashfs' squashfs-tools not found."
		panic 1
	fi

	mk_env

	mksquashfs $CHROOT_DIR $TMP/root.sqfs \
		-b 1048576 -comp xz -Xdict-size 100%

	cd $TMP
	echo "Building Initial RAM Disk [$INITRD_IMG]"
	find . -print0 | cpio --null --create --format=newc --verbose > "$INITRD_IMG"
	echo "Done [$INITRD_IMG]"
}

trap "panic" INT HUP QUIT TERM EXIT

readonly MKCHROOTRD_COMMAND="$0"
readonly MKCHROOTRD_VERSION="1.0"

TMP=$(mktemp -d)

main "$@"

# EOF

 mkchrootrd,

Spoofing
()

Возможна ли установка GRUB2 на флешку в принципе?

Форум — General

Дистрибутив в котором пытаюсь это сделать FEDORA 16. Описалово везде вроде бы простейшее( вот например http://slicks.name/ubuntu/ustanovit-grub2-na-usb-pri-pomoshhi-ubuntu-linux.html) но, при установке лично моя Федора, говорит, что это плохая идея, файлы заливаются, но флешка не загрузочная.

Неужели дело в Ubunte? и надо именно Live CD Убунтовский? Хочется использовать при загрузке ISO образы и не только линуксовые, а всякие.

 , ,

alex_sim
()

Зеркало git

Форум — Development

Стоит задача - есть удаленный репозиторий, который изначально использовался как основной (при push/pull-е). Но канал связи медленный и скорость не устраивала, к примеру clone «с нуля» сейчас занимает часов 20, большие коммиты тоже напрягают. Задался вопросом «подъема» локального зеркала, на который будут push-ить локальные разработчики, и который периодически будет синхронизироваться с удаленным. На удаленке в этот репозиторий почти никто не коммитит, и задержки с обновлением коммитов «от нас» должны устроить.

Есть решение делать

git clone --bare <url>

И периодически пушить то что в локальном зеркале обновилось:

git push origin --mirror

Но тогда потеряются все коммиты в удаленном репозитории. Коммиты не «от нас» туда редки но не хотелось бы их потерять, если вдруг появятся. Кроме того первое время, как поднимем зеркало, наверняка многие по старинке будут коммитить в удаленный.

Можно периодически делать

git remote update
но тогда ситуация обратная - перетрутся все локальные коммиты.

Хотелось бы чтобы можно было делать merge изменений. Чтобы не терялись коммиты ни на одном из источников.

P.S. Не подумайте я не админю всю инфраструктуру, я разработчик, от наших админов переделки будет добиться будет сложно (перенести этот репозиторий к нам), хотелось бы своими силами развернуть зеркало.

P.P.S. Как правильно mirror'ить GIT репозиторий? я читал, как там мерджить коммиты я не понял т.к. после clone --bare pull вроде бы не доступен.

 ,

Ex-bluesbreaker
()

Идея проекта: аналог grep для поиска чисел

Форум — Talks

Привет, ЛОР!

По-моему, было бы очень полезно иметь утилиту, работающую как grep, но предназначенную для поиска чисел в пределах некоторого интервала от заданного значения. Например, если мы запускаем numgrep 1234 file.txt, то утилита вычленяет в каждой строке файла всё, что можно прочитать как число, сравнивает каждое из чисел с 1234, и если модуль разности не более 0.5, то печатает всю найденную строку. Такими числами могли бы быть, например, 1234.1, 1233.99, 1.2344e3. По умолчанию можно было бы в качестве доверительного интервала брать 0.5 от последней значащей цифры искомого числа, т.е. для 1234.5 было бы не +/-0.5, а +/-0.05, ну и, конечно, должна быть возможность задать интервал явно.

Вроде бы идея лежит на поверхности и не особо сложна в реализации (особенно если не сильно париться о скорости работы), но я не нашёл ничего готового на эту тему.

 , , ,

annulen
()

О том, что по закону об электронной подписи, её сохранность должен обеспечивать её владелец

Форум — Talks

Как обеспечить конфиденциальность закрытого ключа электронной подписи, чтобы к нему технически не имел доступ удостоверяющий центр, а только владелец сертификата электронной подписи? Есть прецеденты применения закона, когда физлица получают сертификат ЭП, сгенерированный удостоверяющим центром на основе специального файла-запроса CSR, генерирующемуся на стороне физического лица — клиента удостоверяющего центра и подписанного закрытым ключом, который есть только у физлица? Ведь такая схема успешно работает для получения SSL-сертификата для работы веб-сайта по https-протоколу; почему-то это не применяется, по крайней мере широко, для ЭП, хотя по существу сертификат ЭП — технически такой же сертификат, как SSL-сертификат. Есть еще какие-то варианты, кроме указанного мной, то есть использующего преимущества ассиметричной криптографии? Линукс тут притом, что посоветуйте, пожалуйста, чем можно сгенерировать такой файл запроса, кроме КриптоАРМ, например под Debian 12 AMD64?

 ,

Infra_HDC
()

Переназначение клавиш на самом глубоком, ядерном уровне?

Форум — General

Помню saahriktu когда-то упомянывал о переназначении на ядерном уровне клавиш. Ну чтоб оно не только в иксах, а так же в ядерной консоли работало.

 reassignment

burato
()

Теор. вопрос по структуре звук. серверов (ALSA, Pulseaudio, JACK, Pipewire)

Форум — Multimedia

Здравия желаю, товарищи профессионалы! Изучаю как устроена звуковая система Линукса. Прочитал много статей, посмотрел много блок-схем, написал конспектик для себя. И вроде всё понятно, но есть один момент, который не могу уловить. В разных статьях он по-разному освещён. Поэтому, хочу понять, где же правда.

ALSA у нас состоит из ядерной части (ALSA Kernel) и пользовательской (ALSA Library, ALSA lib, libasound), ну и плюс драйвера и утилиты, но речь не о них. Так вот:

Правильно ли я понимаю, что Pulseaudio заменяет собой ALSA Library (юзерспейсовую часть Алсы), а JACK – не заменяет, и работает поверх её? Об этом говорят блок-схемы, которые есть в сети на эту тему. Однако же, я находил и другие схемы, на которых Pulseaudio изображён рядом с ней (с ALSA-userspace) и следовательно тоже не заменяет её, а лишь дополняет. Pipewire вроде как ничего из Алсы не заменяет и работает поверх неё. Он не имеет своего API, используя как JACK API, так и Pulseaudio API.

Но при этом везде (в статьях) указано, что Pipewire идёт как замена Pulseaudio. А если так, то Pipewire должен, как и Pulseaudio, заменять собой ALSA Library. Хотя, не должен, конечно, просто это логично предположить.

В общем, запутался, прошу внести ясность. Тонкости особо не нужны, достаточно общего структурного понимания – какие модули к чему относятся, кто что заменяет.

 , , ,

Don_Antonio
()

Проблемы с уровнем яркости на Honor Magicbook 14 GLO-G561

Форум — Linux-hardware

Установил Ubuntu 22.04.3 LTS на указанный ноут. Сразу при запуске все хорошо - яркость регулируется и с кнопок, и из менюшки. Через некоторое время (минут 10) яркость сама по себе доводится до максимума или до минимума, после чего перестает работать одна или обе кнопки настройки яркости, при этом регулировка из менюшки работает. Иногда это событие повторяется. Один раз было, что яркость сама повысилась до максимума и менялась через менюшку, но сразу же восстанавливалась до максимума, будто была зажата кнопка, но прошло само через пару секунд (впоследствии кнопки так и не заработали). Кто знает, подскажите пожалуйста, в чем может быть дело.

 

krigga
()

Отлючения Intel ME тред

Форум — Linux-hardware

К линуксу это имеет немного косвенное отношение, но здешним линуксоидам будет интересно. Авось информация начнёт копиться в одном месте. Немного самонадеянно с моей стороны, но прошу обратить внимание, что это не talks|general, и тред не про вопросы нужности.

Ну, из спортивного интереса и зачатков паранойи я попытался.

Сначала проверим, активен ли Boot Guard. Сделать это можно из под линукса, метод с патченной intelmetool из coreboot. У меня не сработало (error access чего-то там, запускал ессно от рута), но вы по ссылке сходите, там информация о косвенных признаках присутствия Boot Guard, который, суде по ссылке на сатью на хабр выше, может нам испортить всю малину.

В (CS)ME System Tools с форума все утилиты есть для доса и .efi, а FWUpdate и для линукса. Но FIT есть только под винду. Можно ли без неё - хз. Но все туториалы, которые я находил, все опирались на неё. Поэтому далее манипуляции проводил из под винды.

Запустил скачанную с форума под своё железо MEinfo. Она бодро рапортует. Что-то. Если что-то такое, то конкретно вам повезло.

В таком случае, если вы с помощью утилиты flash programming tool (FPT) дампните себе всё (fpt.exe -d image.bin), то всё скорее всего пройдёт без ошибок. Полученный образ будет содержать таблицу-дескриптор, дамп биоса, дамп МЕ, ещё чего-нибудь. Посмотреть на эту таблицу, кстати, можно натравив coreboot'овский ifdtool либо на образ, либо на результат выполнения команды fpt.exe -D desc.bin -DESC (на случай, если МЕ не дампается).

Этот обрах можно редактировать в flash imaging tool (FIT). Всё настраиваете (убрать бут гард, отключить МЕ, поставить HAP-бит, например). Ещё можно взять ME регион, который появляется в папке disassembly в папке с экзешником FIT, и натравить на него me_cleaner (инструкцию как всё правильно сделать находил в интернете). По отчётам, с HAP битом эта процедура не ломает загрузку.

Собственно собранный FIT'ом образ, вроде бы и нужно шить, но я боюсь, что я пропускаю тут какие-то важные нюансы, я так далеко не заходил. Так как мы всё-таки не софт ставим, а аж шьём биос, то я бы разорился на программатор с клипсой и таки снял бы дампы с чипов. Так надёжнее, ибо потенциально можно раскирпичить девайс, плюс много попыток. Правда возможно, там тоже есть свои подводные камни, нужно гуглить.

Если же на этапе проверки бут гарда не повезло, и картинка какая-то такая, то не повезло, и фиг что с ME сделаешь. Наверно. У меня картинка на ноутбуке была как раз такая.

Я не очень шарю во всём этом, могу где-то тупить. Хочу попробовать поменять что-нибудь с помощью setup_var, но никак не могу понять, какие адреса переменных использовать. IFRextract'овский файл содержит VarStoreInfo и VarStore, и я хз, какой адрес использовать. Не знаю, насколько это осмысленно, поэтому прошу не пинать.

Например, тут:

One Of: Me FW Image Re-Flash, VarStoreInfo (VarOffset/VarName): 0x2, VarStore: 0x4, QuestionId: 0x86E
Ясное дело, что нельзя просто написать setup_var 0x2|0x4 0x1, потому что на 0x2 и 0x4 - это явно не то, ведь поискав, находим и другие настройки с VarStore: 0x4 и VarStoreInfo: 0x2

Для примера дамп «скрытого меню» (я хз как в него попасть, был бы рад советам): Section_PE32_image_E6A7A1CE_5881_4B49_80BE_69C91811685C_Setup_body IFR.txt

                                UEFI Protocol Detected
--------------------------------------------------------------------------------


                                String Packages
--------------------------------------------------------------------------------
Offset:		Language:
--------------------------------------------------------------------------------
0x354		en-US (0x0)


                                   Form Sets
--------------------------------------------------------------------------------
Offset:		Title:
--------------------------------------------------------------------------------
0x44E74		Platform Information Menu (0x12CB from string package 0x0)
0x45504		Intel Advanced Menu (0x12DD from string package 0x0)
Интересный кусок
0x5DB4A 		Ref: Firmware Update Configuration, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x864, FormId: 0x1043 {0F 0F 89 03 8A 03 64 08 00 00 FF FF 00 43 10}
0x5DB59 		Gray Out If {19 82}
0x5DB5B 			QuestionId: 0xA17 equals value 0x1 {12 86 17 0A 01 00}
0x5DB61 				QuestionId: 0xA15 equals value 0x1 {12 06 15 0A 01 00}
0x5DB67 				Or {16 02}
0x5DB69 			End {29 02}
0x5DB6B 			One Of: ME State, VarStoreInfo (VarOffset/VarName): 0x2, VarStore: 0x1108, QuestionId: 0x865, Size: 1, Min: 0x0, Max 0x1, Step: 0x0 {05 91 91 03 92 03 65 08 08 11 02 00 10 10 00 01 00}
0x5DB7C 				One Of Option: Disabled, Value (8 bit): 0x0 {09 07 04 00 00 00 00}
0x5DB83 				One Of Option: Enabled, Value (8 bit): 0x1 (default) {09 07 03 00 30 00 01}
0x5DB8A 			End One Of {29 02}
0x5DB8C 		End If {29 02}
Про возможность писать ME:
0x5DD5A 	Form: Firmware Update Configuration, FormId: 0x1043 {01 86 43 10 89 03}
0x5DD60 		One Of: Me FW Image Re-Flash, VarStoreInfo (VarOffset/VarName): 0x2, VarStore: 0x4, QuestionId: 0x86E, Size: 1, Min: 0x0, Max 0x1, Step: 0x0 {05 91 8B 03 8C 03 6E 08 04 00 02 00 10 10 00 01 00}
0x5DD71 			One Of Option: Disabled, Value (8 bit): 0x0 (default) {09 07 04 00 30 00 00}
0x5DD78 			One Of Option: Enabled, Value (8 bit): 0x1 {09 07 03 00 00 00 01}
0x5DD7F 		End One Of {29 02}
0x5DD81 		Suppress If {0A 82}
0x5DD83 			QuestionId: 0xA11 equals value 0x3 {12 86 11 0A 03 00}
0x5DD89 				Not {17 02}
0x5DD8B 			End {29 02}
0x5DD8D 			One Of: Local FW Update, VarStoreInfo (VarOffset/VarName): 0x1, VarStore: 0x1108, QuestionId: 0x86F, Size: 1, Min: 0x0, Max 0x1, Step: 0x0 {05 91 8D 03 8E 03 6F 08 08 11 01 00 10 10 00 01 00}
0x5DD9E 				One Of Option: Disabled, Value (8 bit): 0x0 {09 07 04 00 00 00 00}
0x5DDA5 				One Of Option: Enabled, Value (8 bit): 0x1 (default) {09 07 03 00 30 00 01}
0x5DDAC 			End One Of {29 02}
0x5DDAE 		End If {29 02}
0x5DDB0 	End Form {29 02}

Может, это вообще не то, я целый вечер тыкаюсь почти вслепую.

Для определённости. Использовал биос от ThinkPad P50 (1.46).

 , , ,

Mihahail
()

Как установить хук на смену виртуальной консоли?

Форум — Desktop

Видеокарта — nVidia 8600GTS. Debian wheezy, 2.6.32-5-amd64, nvidia drivers 195.36.31-6.

Когда я переключаюсь из текстовой консоли в иксы и обратно, теряются настройки шрифтов. В частности, я установил шрифт высотой в 14 точек, а после переключения он устанавливается в 16 точек высотой и нижние две-три строчки уползают за нижнюю границу экрана. Ах да, и еще шрифт сбрасывается, так что русские буквы становятся нечитаемыми. Обычно помогает запуск /usr/bin/cyr (из console-cyrillic), но каждый раз это делать напряжно, а из под midnight commander'а этот способ вообще не работает.

Идеальным решением проблемы был бы автоматический запуск cyr в тот момент, когда я переключаю виртуальные консоли. Поиск дал только советы исопльзовать framebuffer, но с grub2 этот совет не работает, а тот, что работает, вызывает еще более жуткие глюки.

Собственно вопрос: Как установить хук на смену виртуальной консоли?

i-rinat
()

Маршрутизация с помощью метрик

Форум — Admin

Подскажите. Допустим, установлены различные метрики на маршруты (к одной цели). Ес-но будет выбираться маршрут с меньшей метрикой. Но, если этот маршрут «откажет», пойдут ли соединения через другой маршрут (автоматически)?
И вернется ли все в «нормальное русло», когда первый маршрут восстановится?

anonymus123
()

Embedded linux. No kernel messages

Форум — Linux-install

Здравствуйте! Имеется такая плата. Хочу поднять на ней торрент клиент. Процессор: Mstar Ssr621Q На борту uBoot + Embedded linux. Подключился я к плате по UART и начал эксперименты. В консоль uboot попасть не удалось, нет сообщений предлагающих прервать загрузку и на всякие CTRL+C не реагирует. Попробовал прервать процесс закоротив ножки памяти что бы он не смог загрузить ядро, но и тут китайцы подстраховались и юбут запросил пароль. Т.е. доступа к консоли не видать. Но как выяснилось можно прошиваться через юсб флешку. Засунул я на рутфс сторонний busybox, поднял telnetd и таким способом попал в систему. После долгих игр с библиотеками и прочим удалось поднять там transmission-daemon. Но проблема в том что в родной системе нет поддержки файловых систем EXT2-4 (на уровне ядра), только FAT и NTFS ro. FAT не очень сюда подходит, если я правильно нагуглил в родном исполнении система писала на диск напрямую без использования файловой системы, ну или она там какая-то своя. Так же пробовал собирать свою систему на buildroot, которая уже получается не так порезана, без проблем туда при сборке внедряется торрент клиент и вообще более приятна. Но все это работало с родным ядром и естественно без поддержки EXT4. Теперь главная проблема: не могу подсунуть в эту плату свое ядро, т.к. нет никаких сообщений от него :( Что в родной системе, что от моего собранного ядра. Но родное хотя бы загружается хоть и молча.

##  Booting kernel from Legacy Image at 22000000 ...
   Image Name:   Linux-4.9.84
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2235568 Bytes = 2.1 MiB
   Load Address: 20008000
   Entry Point:  20008000
-usb_stop(USB_PORT0)
-usb_stop(USB_PORT1)
   Loading Kernel Image ... OK
using: ATAGSS
atags:0x20000000

Starting kernel ... <-- на этом все, больше никакого вывода
Не могу разобраться как заставить ядро выводить сообщения. Как я выяснил для подобных систем нужны DTS/DTB файлы, но под этот процессор практически ничего не найти. Вытащил этот файл с родного ядра, скармливал своему но не помогло. Дальше я нашел ядро другой платы(TP-LINK TL-NVR6108C-B) с таким же процессором, которое выводит сообщения при загрузке! Но не грузит систему т.к. там указаны совсем другие разделы. Я достал DTB оттуда, но он мне тоже никак не помог. Т.к. под эти процессор/плату нет никаких готовых конфигов я застопорился. Само ядро не выводит никакой информации и не понятно работает или нет. Саму систему так же не загрузить, т.к. места на разделе 4мб, а минимальный размер ядра что у меня выходит 3.5мб и уже ничего туда не влазит. Ну а что бы еще больше уменьшать его размер нужно хотя бы видеть работает оно или нет. Возможно что-то блокирует uboot, но его прошивать не хочу т.к. нет программатора под рукой вернуть все в зад. С другой стороны ядро с другой платы выводит сообщения. Буду рад Вашей помощи. Предоставлю дополнительную информацию по запросу.

 ,

libixur
()