LINUX.ORG.RU

Сообщения dima9kin

 

idesk упорно не рисует ярлычки

Форум — Desktop

В общем, стоит Debian 11, DE на нем BlackBox. Установил idesk, ниже привожу его конфиг ideskrc

table Config
   ClickDelay: 200
end
table Actions
   Drag: left hold
   EndDrag: left singleClk
   Execute[0]: left doubleClk
   Execute[1]: right doubleClk
end

В директории ~/.idesktop лежит ярлычок remmina.lnk следующего содержания:

table Icon
   Caption: Remmina
   Icon: /home/user/.idesktop/icons/remmina.png
   X: 131
   Y: 300
   Command[0]: remmina
   Cjmmand[1]: 
end

Запускаю X11, в виртуальной консоли запускаю idesk - выдает ошибку:

terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr: __pos (which is 1) > this->size() (which is 0)

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

 

dima9kin
()

Посоветуйте шустрый независимый от DE текстовый редактор

Форум — Desktop

Прошу посоветовать легкий (не на сотни мегабайт!) графический текстовый редактор, который не тянет при установке зависимости какой либо DE.

Типа mousepad'а - который меня более чем устраивает и размером и функционалом - но, к сожалению, тянет за собой зависимости xfce...

 

dima9kin
()

Не работает меню в BlackBox

Форум — Desktop

Понимаю, что мало кто плотно имел дело с таким раритетом, но все же попытаю счастья.

Итак, установил BlackBox в качестве единственной графической оболочки. И, разумеется, озаботился кастомизацией меню.

В домашнем каталоге создал файлик .blackboxrc, в него внес всего одну строку:

session.menuFile: /home/user/.menu

Создаю там же файлик .menu, в нем пишу:

[begin] (MyMenu)
   [exec] (MidnightCommander) {mc}
   [exit] (exitGUI)
[end]

Запускаю BlackBox, выполнив startx. Все супер, оболочка поднимается, более того, мое меню работает - отображаетсяя название (MyMenu) и два пункта (MidnightCommander и exitGUI). Вот только пункт MidnightCommander не запускает mc. Если говорить точнее - он вообще ничего не делает. А вот пункт exitGUI прекрасно работает - BlackBox завершает работу и я вываливаюсь в консоль.

Итак, меню успешно определяется, вызывается и частично работает. Но команды оболочки не выполняются, несмотря на то, что соответствующие им пункты меню отображаются успешно.

ЧЯДНТ?

P.S. Полное прописывание пути к mc (/bin/mc) также ничего не дает...

 

dima9kin
()

Чем разпаковать .run

Форум — General

Чем можно распаковать установщик .run?

Выдача утилиты file дает:

vipole.x86_64.run: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.26, BuildID[sha1]=ef2409d6348b9dfbff972fc9d62dd45ac4da06dc, not stripped

Mousepad этот файл как обычный .run-скрипт не открывает. Архиватор не видит его как архив...

 

dima9kin
()

Правильно ли я понимаю функционирование AppImage-приложений?

Форум — Desktop

Здравствуйте! Сегодня я впервые в жизни запилил два AppImage приложения из существующих .deb пакетов (WPS-Office и remmina), причем они даже успешно запустились.

Однако, сразу же всплыл один принципиальный вопрос - правильно ли я понимаю, что хотя при запуске файла AppRun и происходит подмена путей на локальные для .appdir - однако сам исполняемый файл может обращаться к нужным библиотекам и по стандартным (абсолютным) путям (типа /bin, /lib и тому подобным)?

Просто иначе не понимаю: та же remmina, согласно выдаче команды ldd использует тьму разных библиотек - однако в ее appdir вообще нет директории /lib и, соответственно, ни одной из указанных библиотек. Значит, она, даже запускаясь с переписанными путями из .appdir, все равно дергает библиотеки со стандартных мест?

Или у меня каша?

Всем спасибо за внимание к теме!

 

dima9kin
()

/dev/sr0 not exist при загрузке Debian

Форум — Linux-install

В общем, пишу уже от некоего отчаяния - потому что до Нового года собирал по приводимому ниже шаблону систему и все прекрасно работало. Причем не менял ничего - даже .iso Дебиана использовал тот же - только сейчас все падает на этапе загрузки.

Создаю на виртуалке свеженькую систему Debian, все там устанавливаю и настраиваю что нужно. Затем вырубаю (комментариями) монтирование кФС в /etc/fstab и дописываю туда:

none / tmpfs defaults 0 0
Дальше, собираю свой initramfs, закомментируя в /usr/share/initramfs-tools/scripts/local строки:
# checkfs ${ROOT} root
# mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} ${rootmnt}
а, затем, добавляя подмонтирование моей кФС из .tar.gz:
mkdir /ramboottmp
mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} /ramboottmp
mount -t tmpfs -o size=100% none ${rootmnt}
cd ${rootmnt}
tar -zxf /ramboottmp/ram.tar.gz
umount /ramboottmp
, где файл ram.tar.gz создается командой
busybox tar -czf /кудахотимсохранить/ram.tar.gz *
, выполняемой из корня собранной и настроенной целевой системы Debian (снаружи, разумеется, путем подмонтирования диска виртуалки в loop режиме). По сути, ram.tar.gz это и есть нужная кФС, которую при загрузке нужно развернуть в оперативную память.

Дальше создаю свой initramfs:

/sbin/mkinitramfs -o /initrd-ram.img
, и сохраняю его.

Дальше в директорию кладу: ram.tar.gz и isolinux (всю директорию), а в директорию isolinux кладу ядро и свой initrd-ram.img.

В isolinux.cfg вношу:

DEFAULT MyLive
LABEL MyLive
linux /isolinux/ЯДРО
APPEND initrd=/isolinux/initrd-ram.img root=/dev/sr0 rw

Собираю диск командой:

genisoimage -o disk.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R /ПУТЬ-К-ДИРЕКТОРИИ-ГДЕ-ВСЕ-ЛЕЖИТ

Повторюсь, до НГ собирал по этой схеме не один раз и все прекрасно работало. Сейчас же в процессе загрузки выдает

ALERT! /dev/sr0 does not exist. Dropping to a shell!

Очевидно, что система не находит мое устройство, содержащее кФС (параметр root= из isolinux.cfg).

Более того, выдача lsmod показывает, что вообще ни один модуль не загружен, а выдача ls /dev, действительно, не содержит ни sr0 ни чего либо аналогичного (ничего похожего на диски в принципе).

Попытка подгрузить модули привода командами

insmod sr_mod
insmod cdrom
insmod scsi_mod
ничего тоже не дает - просто проглатывается консолью без выдачи ошибки, но выдача lsmod по прежнему пуста.

И, главное, - ведь грузиться то все начало в любом случае с CD-привода!!! Так как он перестает быть виден на каком то участке загрузки, если он (CD-привод) был успешно подтянут ранее, с него запустился isolinux и ядро! КАК?!?

Реально опускаются руки - один и тот же путь приходится проходить по несколько раз и каждый раз какая то новая хрень. Причем даже намека нет на мысль куда смотреть...

 ,

dima9kin
()

Авторизация обычного пользователя по ключу ssh

Форум — Admin

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

Есть удаленный сервер, на нем root и один пользователь, допустим faruser. На клиентской машине все действия от пользователя, допустим localuser.

Создан ключ id_rsa и соответствующий ему открытый ключ. На локальной машине они лежат в директории /home/localuser/.ssh

На сервере эти публичные ключи лежат в директории /root/.ssh и /home/faruser/.ssh

И в той и в другой директории также созданы файлы authorized_key и в них залиты id_rsa.pub

В /etc/ssh/sshd_config запрещена аутентификация по паролю, только по ключу.

Теперь в чем суть вопроса:

Когда заходим из-под обычного локального пользователя localuser root'ом удаленного сервера, т. е. выполняем от localuser на клиентской машине

ssh root@1.2.3.4
все проходит замечательно, запрашивается парольная фраза на ключ id_rsa и после ее ввода я сразу оказываюсь на сервере.

А вот при попытке войти пользователем faruser (с клиентской машины из-под localuser, разумеется), пароль на ключевую фразу не запрашивается, сразу выдает

Permission denied (public key)
Вопрос - почему аутентификация по ключу успешно проходит для удаленного root'а, но не проходит для удаленного faruser?

 

dima9kin
()

Поднять ecryptfs over sshfs из под обычного пользователя

Форум — Security

Собственно, сабж вынесен в тему.

Итак, есть удаленный сервер, там, ясно дело, есть root и есть обычный пользователь, допустим, ivan. Ну, авторизация по ключам настроена, ssh без проблем соединяет, все хорошо.

Выполняю на клиентской машине из-под обычного пользователя:

mkdir /home/durak/.fardir
mkdir /home/durak/workdir
sshfs ivan@1.2.3.4:/home/ivan/data /home/durak/.fardir

Эта часть кода идет идеально, в итоге в .fardir монтируется удаленная папка data. Вопросов нет.

А вот дальше засада. При попытке выполнить

mount -t ecryptfs /home/durak/.fardir /home/durak/workdir
получаю ошибку, что обычный пользователь не может монтировать с опциями, что ожидаемо.

А если монтирую от root то все монтируется, но обычный пользователь не может работать с workdir - даже когда меняю на нее права и владельца на этого самого пользователя. А это очень неудобно постоянно лазить туда залезая под root.

Подскажите, можно реализовать нужную мне архитектуру без привлечения fstab (строго - система Live) и, желательно, без привлечения механизма sudo (есть причины).

 ,

dima9kin
()

vpn+proxy - ЧЯДНТ?

Форум — General

Задача поднять связку vpn+proxy (tor).

C VPN проблем нет - все ставится, инфраструктура создается и, главное, успешный ping на 10.8.0.1 c клиентской машины. Ну, tun0 тоже создан. В общем, не вижу в этой части проблемы.

На сервере запущен tor, netstat выдает, что он слушает на 127.0.0.1:9050 - стандартные настройки. iptables - все политики ACCEPT, нет блокировок.

Мое видение судьбы пакета: попадая на сервер из tun0, он оказывается доступен на всех портах, в том числе на 9050. Где его должен подхватить tor-proxy и отправить уже дальше в сеть в соответствии со своими правилами.

Тем не менее, Mozilla с настройкой прокси: Ручная - Socks-узел - 10.8.0.1, порт 9050, тип SOCKS5 - дает ошибку вида: Прокси сервер отклонил соединение...

ЧЯДНТ?

P.S. Разжевывать не обязательно, берегу Ваше время. Просто пните в нужном направлении!

 , ,

dima9kin
()

Порядок поключения устройства

Форум — Linux-hardware

Доброго времени суток всем!

Я в Линуксе совсем еще зеленый, а взялся ковырять довольно скольскую тему run-from-RAM - попутно вскрывая для себя все новые и новые пласты знания об устройстве системы с самого низа.

Сейчас немного завяз в устройствах (в разрезе моей задачи - на собранных разными способами initramfs то виден, то не виден оптический привод).

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

Итак. Когда мы имеем устройство, физически подключенное к какому то слоту в ПК, его сперва распознает (сам факт подключения) либо ядро как таковое, либо один из его модулей. Факт подключения можно выяснить одной из многочисленных команд типа lspci, hw, lsusb, hwinfo и иже с ними. Если поддержка устройства есть прямо в ядре - мы его сразу должны увидеть в выдаче, если в выдаче его нет - нужно выяснять, каким модулем оно распознается - для этого есть инструментарий lsmod (можно запустить его на системе, в которой устройство успешно работает и посмотреть - эвристически подобрав название, разумеется - название его модуля), а также modinfo, insmod и modprobe.

Соответственно, когда мы нашли недостающий модуль - тупо можно скопировать его в каталог /lib/modules (или в /lib64/modules? Как правильно, если система amd64?), а затем загрузить любой из двух команд:

modprobe ИМЯМОДУЛЯ
или
insmod ПУТЬКМОДУЛЮ
Насколько я понимаю, первая команда предпочтительнее, ибо грузит и все модули, от которых зависит требуемый.

Любой модуль должен строго соответствовать своему ядру, поэтому при трансплантации модулей из системы в систему это надо учитывать))

Когда устройство появляется в выдаче, необходимо сопоставить ему соответствующий файл в вФС /dev - для этого существует некий udev - он переводит работу с устройствами на более высокий уровень абстракции, создавая файлы устройств на основе информации о физически подключенном оборудовании, которую поставляет ему ядро/модули ядра.

Чтобы вызвать udev мы при старте системы должны смонтировать вФС типа devtmpfs:

mount -t devtmpfs udev /dev

А если при ее монтировании нужный для конкретного устройства модуль ядра не был загружен - то устройство придется создавать в ручную - по сути руками делать то, что udev делает как скрипт:

mknod /dev/КАКНАЗОВЕМФАЙЛУСТРОЙСТВА b или с ОСН.НОМЕР ВТ.НОМЕР
где b или c - блочное создаем устройство или символьное.

Ну вот как то так я все это понял. Рад буду замечаниям и поправкам.

 ,

dima9kin
()

Как заставить Debian работать из RAM

Форум — Linux-install

Итак, я продолжаю «искать свой святой Грааль» - метод загрузки полноценной custom-системы Debian целиком в RAM. Сперва пытался сделать это путем помещения всей системы в initramfs - все заработало, да только большая система (с GUI и кучей приложений) не грузится (после загрузки ядра начинает грузить initramfs и выдает Invalid argument - при этом такой же Дебиан но без GUI и программ весом до 1 ГБ грузит в RAM в составе initramfs без проблем: по всей видимости, где то ограничение на размер initramfs зашито в ядре, туда лезть у меня не хватит, боюсь, знаний).

Тогда я решил поместить в RAM систему другим путем, который в общих чертах описан здесь: https://habr.com/ru/post/253759/

Чтобы не заставлять Вас бродить по ссылкам, приведу основные точки способа:

1. Меняем конфигурацию initramfs, отключая проверку кФС (здесь и далее - обозначение корневой ФС) и стандартное монтирование кФС:

# checkfs ${ROOT} root
# mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} ${rootmnt}
а затем создаем временную точку монтирования (еще работая в пределах initramfs!) для нашего CD:
mkdir /ramboottmp
монтируем нашу кФС с CD во временную точку монтирования:
mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} /ramboottmp
Создаем ФС в RAM:
mount -t tmpfs -o size=100% none ${rootmnt}
Ну и распаковываем нашу кФС (файл ram.tar.gz) в эту tmpfs:
cd ${rootmnt}
tar -zxf /ramboottmp/ram.tar.gz
umount /ramboottmp

2. Геним новый initramfs:

/sbin/mkinitramfs -o /initrd-ram.img

3. В кФС (автор поста предлагал заходить туда из-под Live-CD, я предпочел напрямую вытащить кФС из виртуального диска .vdi - но это дело вкуса) отключаем прописанное там в /etc/fstab монтирование кФС и пишем свое:

none / tmpfs defaults 0 0

4. А затем архивируем всё из корня:

busybox tar -czf /путь-к-архиву/ram.tar.gz *

5. Создаем директорию, туда кидаем isolinux (в директории isolinux, разумеется), в эту же директорию isolinux кидаю ядро и initrd-ram.img, а ram.tar.gz кидаю в основную директорию. В isolinux.cfg прописываю:

DEFAULT MyLive
LABEL MyLive
linux /isolinux/ЯДРО
APPEND initrd=/isolinux/initrd-ram.img root=/dev/sr0 rw

6. Ну и генерирую .iso:

genisoimage -o disk.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R /полный-путь-к-директории-из-пункта-5

Указанный .iso шикарно грузится, лишь немного затупливая при заливке 1.6 ГБ в RAM - но! Сам Линукс не загружается, выдавая в конце ошибку:

No init found. Try passing init= bootarg

При этом в директории root лежит моя кФС, то есть все, что я прописывал в initramfs РАБОТАЕТ! Но система то не запускается...

Что я пробовал:

1. По рекомендации самой системы выполнить run-init, указав в качестве NEW_ROOT точку монтирования моей кФС (/root), а в качестве NEW_INIT - Init моей кФС (/root/sbin/init):

run-init /root /root/sbin/init
Не происходит ровным счетом НИЧЕГО. Просто заново выдает консоль initramfs'а.

2. Просто запустить init initramfs'а:

/sbin/init
Выдает:
Not activating Mandatory Access Control as /sbin/tomoyo-init does not exist. Init must be run as PID 1

3. Кончилась фантазия и обращаюсь к Форуму...

 , , , ,

dima9kin
()

Непонятный параметр ядра boot=

Форум — Linux-install

Просматривая файл isolinux.cfg обнаружил в разделе APPEND (а именно в этом разделе, насколько мне известно, ядру передаются необходимые параметры) параметр вида

boot=live
, где live - директория на носителе, в которой лежит корневая ФС. проблема в том, что в параметрах ядра я не нашел такого параметра как boot. Ну, тупо его нет, и, соответственно, нет описания что это параметр передает ядру. Кто нибудь в курсе?

 ,

dima9kin
()

Как обратиться к диску, на котором лежит корневая ФС

Форум — General

Допускаю, что вопрос наитупейший - но, что интересно, ответа в Яндексе не нашел. Итак, система состоит из одного лишь initramfs, который благополучно загружается в процессе старта системы и дает пользователю консоль BusyBox. При этом, на самом CD лежит файл, содержащий другую файловую систему. Разумеется, из initramfs видна только сама ФС этого самого initramfs.

Вопрос: можно ли как то обратиться к другим файлам на CD, на котором лежит initramfs? Нужно с целью примонтировать к файловой системе initramfs’а лежащую на CD ФС…

 ,

dima9kin
()

Booting kernel failed при загрузке самодельного Live-Debian

Форум — Linux-install

Ох... В общем, у меня задача сделать Live систему Debian полностью размещенную в initramfs. Что я делаю: 1. Создаю виртуальную машину в VirtualBox, устанавливаю туда Debian и ряд пользовательских приложений - тут все стандартно и ничего интересного. 2. Далее из виртуального диска .vdi выделяю образ .img:

vboxmanage clonemedia --format RAW mydisk.vdi mydisk.img
Утилитой fdisk выявляю стартовый сектор и размер сектора:
fdisk mydisk.img
умножаю стартовый сектор на размер сектора и полученное {ЗНАЧЕНИЕ} использую при монтировании:
mount -o loop,offset={ЗНАЧЕНИЕ} /mydisk.img /mnt
Ну, соответственно, в mnt лежит содержимое жесткого диска виртуалки с Debian'ом - все тоже стандартно. 3. Дальше я все из mnt (не знаю зачем, от греха подальше) копирую во временную директорию, в которой буду создавать initramfs (пускай это будет /ird), и удаляю оттуда ядро(-а) и initrd, а также всю директорию boot (там лежит GRUB2 установленного Debian'а - он, как я понимаю, нафиг не нужен). 4. Ну и пакую все в cpio+gzip:
find . | cpio -H newc -o | gzip > initramfs.gz
5. Делаю директорию для создания Live-CD (допустим /livecd) и помещаю туда директорию isolinux, в которой лежат: boot.cat hdt.c32 isolinux.bin isolinux.cfg ldlinux.c32 libcom32.c32 libgpl.c32 libmenu.c32 libutil.c32 memdisk vesamenu.c32 ну и, естественно initramfs.gz (initrd, который сделал в п. 4) и vmlinuz-5.10.0-9-amd64 (ядро). boot.cat делаю просто утилитой dd (заполняю нулями до 2 кБ). isolinux.cfg имеет следующее содержание:
DEFAULT MyLive
LABEL MyLive
linux /isolinux/vmlinuz-5.10.0-9-amd64
APPEND initrd=/isolinux/initramfs.gz rw
Писал его сам, не судите строго. Не хотел бездумно переписывать чужие. Остальные файлы тупо взял из существующего isolinux'а от Live-Debian с официального сайта, каюсь. 6. Создаю образ:
genisoimage -o disk.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R /{полный путь к директории livecd}
Образ создается без ошибок, я даже потом проверяю что на .iso все внутри лежит как надо (путем подмонтирования его в loop-режиме). 7. Самое интересное. Создаю в VirtualBox виртуалку БЕЗ жесткого диска, в виртуальный CD «сую» свой disk.iso и запускаю машину. Дальше происходит следующее:
ISOLINUX 6.03 20171018 ETCD Copyright (C) 1994-2014 H. Peter Anvin et al
То есть как минимум ISOLINUX цепляется успешно!
Loading /isolinux/vmlinuz-5.10.0-9-amd64...ok
Раз «ok» - значит, надо понимать, загрузка ядра произошла успешно?...
Loading /isolinux/initramfs.gz...ok
Опять же - говорит «ok»! А потом вот такая шляпа:
Booting kernel failed: Invalid argument
boot:
*********************************** *** Я голову сломал, что он от меня хочет - я никаких аргументов не передавал в ядро... Очень прошу помочь - в каком направлении думать, где я ошибся. Ну или, как вариант, с удовольствием приму помощь по созданию подобного Live-дистрибутива на коммерческой основе (формат взаимодействия и стоимость оговорим в личке)!

 ,

dima9kin
()

RSS подписка на новые темы