Задать вопрос
Ответы пользователя по тегу Linux
  • Как организовать соединения двух компьютеров за NAT?

    @rPman
    Если совсем все плохо, можно попробовать hole punching, шансы есть.

    Если на одном роутере (лучше в той локальной сети где будет listen подключения) включен uPnP (обычно на потребительских роутерах включено по умолчанию), то можно с помощью утилит настроить временное перенаправление портов и подключаться напрямую. Например под linux утилиты apt-get install miniupnpc создаем проброс порта:
    upnpc -a <локальный_IP> <локальный_порт> <внешний_порт> TCP

    наличие и поддержку
    upnpc -s
    Адрес узнать чем то типа api.ipify.org или посмотреть на роутере (например открываешь админку роутера, страницу где видно ip адрес, копируешь из консоли разработчика браузера curl команду загрузки этой страницы и вытаскиваешь ip адрес любым удобным тебе способом, хоть регулярками хоть приложением из трех строчек)
    этот адрес и порт нужно как то сообщить тому кто будет подключаться.

    Есть еще NAT-PMP (я хз, на сколько роутеры это умеют, я вообще это узнал, общаясь с ИИ)
    sudo apt-get install natpmpc
    проброс порта
    natpmpc -a <порт> <порт> TCP 3600
    Ответ написан
    4 комментария
  • Как полностью удалить Ред ОС с компьютера?

    @rPman
    Прежде всего сделать резервную копию системы (чем то типа clonezilla). Сэкономите силы время и нервы, будет проще и спокойнее что то ломать, ведь можно будет вернуть все назад и повторить попытку. Хотя, efi записи никто не умеет бакапить.

    Очень важно, как именно выбирается с какой ОС загружаться.

    Если при включении компьютера выскакивает меню grub (или selinux или что там у ред ос), значит достаточно восстановить загрузчик, загрузившись с установочного диска windows (выбирать ту же версию и архитектуру что установлена). После этого будет достаточно отформатировать раздел, на котором была установлен linux.

    Если выбор нужно ОС делали с помощью bios (F11 после включения), то любым редактором efi удалить не нужный пункт (тем же linux efibootmgr)
    Ответ написан
    Комментировать
  • Интерактивный скрипт с read при запуске системы (debian). Как?

    @rPman
    Ввод пользователя должен кто то принять и передать в приложение, если X-сервер еще не запущен (хотя никто не мешает его запустить), то используй терминал, в linux сейчас используют agetty (этих *getty с десяток в репах можно подобрать).

    Делать это в rc.local считается уже некошерным способом, поэтому делаешь скрипт systemd
    anthropic claude sonnet 3.5
    # /etc/systemd/system/my-script.service
    [Unit]
    Description=My Interactive Script
    Before=getty.target
    
    [Service]
    Type=simple
    ExecStart=/path/to/your/script.sh
    StandardInput=tty
    TTYPath=/dev/tty1
    TTYReset=yes
    TTYVHangup=yes
    
    [Install]
    WantedBy=multi-user.target

    google...
    Ответ написан
    2 комментария
  • Как в Linux из программы на JavaFX запустить дефолтный браузер с URL?

    @rPman
    xdg-open - правильный способ.
    В результате или тишина, или ошибки недостатка прав, gtk....
    сообщение об ошибке было бы лучшим способом помочь

    Как именно запускается javafx приложение? из локального контекста и с правами текущего пользователя? или к примеру из ssh соединения с ручным указанием DISPLAY? По умолчанию xserver ограничивает подключения к себе только локальным пользователям (но ssh -X будет работать и с удаленными, если это разрешено в конфиге sshd).

    p.s. если используется wayland то там еще больше непонятностей
    Ответ написан
    2 комментария
  • Как и от каких атак защитить свой сервер, находящийся на чужом гипервизоре?

    @rPman
    Универсально защититься нельзя. Но некоторые атаки будут стоить дорого, на столько что не будут иметь смысла.

    Все же дешевле будет приобрести отдельный компьютер, разместить его в сейфе с пломбами и добавить контроль за целостностью корпуса - при вскрытии выключать компьютер... и да, оперативную памяти перед выключением нужно очищать, в linux вроде помню можно было даже при панике это сделать, а в windows хз (потому что содержимое ram можно восстановить если заморозить его и оперативно извлечь из компьютера). Кстати про оперативную память, если запустить свой гипервизор, в котором есть поддержка шифрования памяти (в современные процессоры эту фичу уже встроили AMD SME/SEV, Intel TME/MKTME) то это защитит от атаки извечения памяти.

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

    upd. компьютеры с поддержкой TPM 2.0 поддерживают шифрование на уровне биос, т.е. загрузчик можно зашифровать, ключи залить в биос, и никто даже реверсить не сможет. Пример как это с дебианом сделали
    Ответ написан
    Комментировать
  • Почему при отключении питания, система переходит в режим read-only?

    @rPman
    Могу только догадываться (странно что это появилось после установки ssd), но выглядит все следующим образом.

    Для выключения питания, операционная система сначала завершает все процессы и службы, затем переводит файловые системы в readonly (со сбросом кеша) и посылает с помощью acpi сигнал на выключение... но из-за плохой реализации поддержки в некоторых брендовых решениях (собственно пилится это реверсинженерингом, а компании производители железа не шевелятся публиковать нормальные спецификации или скорее намеренное вредительство, если текущая ОС не windows, то поддержка acpi ломается) это не работает.

    Правильно - починить поддержку acpi (может погуглить название своей материнки/чипсета добавив acpi linux или еще как).

    попробуйте прописать в grub в опциях ядра acpi_osi="Windows 2009"
    Ответ написан
    1 комментарий
  • Почему более 100% загрузка ЦП в Docker на сервере Debian с 1 ГБ оперативной памяти VPS?

    @rPman
    если это бесплатный или сверхдешевый vps, то из-за оверселинга (продажа несуществующих ресурсов чем грешат практически все vps хостеры), в момент высокой нагрузки у хостера, все такие виртуалки начинают лагать при своих нагрузках, потому что на всех не хватает.

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

    p.s. постарайтесь высоконагруженные вещи выводить из docker, тем более используется виртуализация, т.е. получается каскадная песочница в песочнице, одна отъедает проценты у производительности процессора, другая - у дисковых операций... попробуйте приобрести максимально дешевый bare metall (есть на основе десктопных процессорах, маломощных, с ценами считанные $10-$20, но разницу поймете сразу)
    Ответ написан
  • Почему busybox wget не работает, пока не запустить вручную openssl?

    @rPman
    По больше бы таких интересных вопросов.

    Задал ваш вопрос openai:o1-preview, ответ выглядит очень логичным:
    Вызвано недостаточной энтропией в генераторе случайных чисел (RNG) вашей минимальной системы.
    В системах Linux безопасные операции, такие как установление SSL/TLS-соединений, требуют случайных чисел, сгенерированных из системного пула энтропии.
    В вашей минимальной системе очень мало активности для генерации энтропии (например, нет дискового ввода-вывода, сетевой активности, пользовательского ввода), поэтому пул энтропии мал.

    Когда `wget` пытается установить HTTPS-соединение, он полагается на эту энтропию. Если ее недостаточно, библиотека SSL не может сгенерировать необходимые случайные значения, что приводит к сбоям соединения, таким как «Сброс соединения одноранговым узлом».
    ...
    Когда вы запускаете `openssl s_client`, он выполняет операции, которые помогают накапливать энтропию.

    **Как это исправить:**

    1. **Убедитесь, что `/dev/random` и `/dev/urandom` существуют:**
    - Убедитесь, что в вашей системе есть эти устройства:
    ```sh
    ls -l /dev/random /dev/urandom
    ```
    - Если их нет, создайте их:
    ```sh
    mknod -m 666 /dev/random c 1 8
    mknod -m 666 /dev/urandom c 1 9
    ```

    2. **Заполните пул энтропии при запуске:**
    - **Используйте демон сбора энтропии:**
    - Включите в свою сборку такой инструмент, как `haveged` или `rng-tools`. Эти демоны генерируют энтропию на основе таймеров или аппаратных ГСЧ.
    - Например, с `haveged`:
    - Скомпилируйте и установите `haveged` в свою систему.
    - Запустите его при запуске:
    ```sh
    haveged -w 1024
    ```
    - **Ручное заполнение энтропии (менее безопасно):**
    - Если добавление демона невозможно, вы можете вручную заполнить энтропию (обратите внимание, что это менее безопасно и не рекомендуется для производства):
    ```sh
    dd if=/dev/urandom of=/dev/random bs=1 count=512
    ```
    - Эта команда записывает случайные данные обратно в `/dev/random`, помогая заполнить пул энтропии.

    3. **Проверьте уровни энтропии:**
    - Отслеживайте доступную энтропию:
    ```sh
    cat /proc/sys/kernel/random/entropy_avail
    ```
    - Значение ниже 100 может привести к блокировке или сбою операций SSL.

    4. **Используйте аппаратный генератор случайных чисел (если доступен):**
    ...

    Посмотри, что показывает cat /proc/sys/kernel/random/entropy_avail
    Ответ написан
    3 комментария
  • Как установить Alt Linux На Ноутбук Aquarius CMP NS483?

    @rPman
    Видеокарта встроенная intel, но даже последний ubuntu livecd не работает как ожидается? советую попробовать установить минимальную ОС без графической оболочки, а затем шаг за шагом вручную добавить в нее xserver и соответствующие драйвера, например из оф репозитария intel (возможно понадобится что то конкретно для alt linux ковырять я хз)
    Ответ написан
    Комментировать
  • Linux mint восстановление x11 из командной строки?

    @rPman
    Если wayland был установлен по похожей инструкции то достаточно удалить пакет wayland в консоли recovery (выбрать в grub, ввести пароль root)
    apt purge wayland weston sway mutter
    тут указан список всех пакетов что приведены в статье, но возможно ты использовала что то конкретное. purge в отличии от remove должно удалить и конфигурационные файлы
    Ответ написан
    Комментировать
  • Как установить основную ОС на другой жесткий диск на уже запущенной машине?

    @rPman
    Вариантов много, все они требуют какие то навыки работы с linux.

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

    Можно по другому. Для начала тебе нужно запустить на этом компьютере какой-либо linux (использовать livecd/liveusb варианты с возможностью работать как с обычным ос) что бы он мог найти сетевой адаптер и настроить его автоматически, а так же что бы в его составе шел какой-нибудь сервер удаленного управления, от ssh до vnc на выбор...

    Вот пример как модифицировать тот же livecd ubuntu в gui с помощью cubic-wizard

    Так же можно по тупому, на рабочей машине протестировать, какую последовательность действий необходимо выполнить для установки vnc сервера, и прожать кнопки в слепую.
    например:
    # переключиться в tty консоль ctrl+alt+f1 ввести логин и пароль (у ubuntu livecd дистрибутивов имя пользователя совпадает с названием дистрибутива, например xubuntu, и с пустым паролем)
    # переключить консоль на рута (
    sudo -i
    # обновить индексы репозитария и установить x11vnc
    apt update; apt install -y x11vnc
    # Запуск VNC сервера без пароля
    x11vnc -forever -shared -display :0
    теперь можно подключиться по ip:5900 хоть с винды, простейший vncviewer

    ip адрес можно узнать, зайдя в админку роутера или просканировав локальную сеть (я надеюсь все это в локальной сети будет происходить?) каким-нибудь сканером типа nmap

    Но и без знания ip можно выкрутиться, у vnc есть обратный режим подключения, когда сервер (машина которой нужно управлять) подключается к клиенту (машина с которой будет управление), клиент тогда запускать командой
    vncviewer -listen 5500
    а сервер
    x11vnc -display :0 -connect IP_КЛИЕНТА:5500
    ip клиента ты знаешь, в слепую набрать на клавиатуре это не сложно.
    Ответ написан
    Комментировать
  • Как обнаружить высокое потребление CPU?

    @rPman
    Для определения нагрузки однопоточного не асинхронного приложения достаточно считать время, которое выполняется запрос. Если у тебя несколько процессов, то считать нагрузку для каждого отдельно.

    Если тебе нужно понять, какой тип запроса дает какую нагрузку, для каждого типа запроса накапливай свое время... тот тип у которого будет большее значение, тот и дает большую нагрузку.

    Но, так как часто бывает, процесс большую часть времени чего то ждет, например IO операции с базой, сетью или диском, то таким образом не получится вычислить нагрузку именно на процессор. Поэтому, либо перед каждой такой операцией отключаешь счетчик (т.е. снова засекаешь время начала и конца) либо используешь средства операционной системы, для определения нагрузки на процессор конкретным процессом/потоком... они для каждой ОС и фреймворков/языков программирования - свои
    Ответ написан
  • Полноценная Убунта поверх WSL?

    @rPman
    Главная беда windows, которая многократно ухудшается при использовании wsl - это медленная работа с диском, первая же статья из гугла где проводили тесты
    Methods
    For this experiment, I used Windows Version 2004 build 19035.1000 on a ThinkPad X1 Extreme with 32GB of RAM and a Samsung 970 Evo Plus 1TB NVMe SSD.

    The four tests are:

    yarn build create-react-app: Use webpack and babel to build the basic open source create-react-app. This generates about 40KB of gzipped code.
    yarn build tsnsi: Use webpack and typescript to build a large proprietary application that I work on most days. This generates about 40MB of minimized javascript code. This repo contains just over 100000 files. THANKS node_modules!
    du -sh tsnsi: Calculate disk usage over the 100000 small files in the proprietary project.
    du -sh cpbotha.net: Calculate disk usage over my personal blog’s hugo source files. 4700 files of varying sizes occupying about 780MB.

    In all but one case (du tsnsi on WSL2 NTFS, because the spread was just too great), I ran the test multiple times, and recorded the average time in seconds. After the first run, standard deviation was low.

    In all cases, the built-in Microsoft anti-virus real-time protection was disabled, as that can have a significant effect on IO-based benchmarks.

    Test WSL 1 ntfs WSL 2 ntfs WSL 2 samba WSL 1 lxfs WSL 2 ext4 native linux
    yarn build c-r-a 11.89 63.14 13 7.38 5.8 4.63
    yarn build tsnsi 45.25 263.71 65 31.70 28.75 24.13
    du tsnsi 4.9 70 - 155 (4x) 13.5 8.6 0.19 0.19
    du cpbotha.net 0.24 3.7 0.5 0.074 0.011 0.015
    Числа - время выполнения в секундах, антивирус отключен. Не вижу смысла что то еще добавлять.

    p.s. wsl - отличная идея, 1 версия позволяет работать числодробилкам на процессоре, без заметной потери производительности, 2 версия - позволяет устаналивать драйвера на gpu и запускать приложения числодробилки на видеокартах, сам лично не пробовал но пишут что работает без потери производительности... Считаю это лучший способ постепенно уходить от windows it разработчикам, которые все еще сидят на этой платформе но не имеют никакого опыта и резко все еще опасаются это сделать. Все равно многие вещи через docker там и так уже запускаются, помучавшись с тормозами будет логично выкинуть windows и идти в мир linux,... а там надеюсь наконец и производители оборудования подтянутся.
    Ответ написан
  • Можно ли в Linux на файловой системе EXT4 запретить именовать файлы одинаково с разным регистром букв?

    @rPman
    Принципиально поискал решение сам а потом пообщался с ИИ (anthropic)... в общем ИИ молодец но бессмысленно пытаться от него добиваться решения в лоб (проблема в том как документация к mount написана - все в одной куче, если ИИ дать мануал и задать вопрос - он корректно ответит, иначе по памяти он ключи одних файловых систем применит к ext4 и скажет что можно, всегда нужно проверять).

    В общем у файловых систем hpfs, vfat и ntfs есть опции, позволяющие такой функционал, но ext4 нет

    Зато есть fuse файловые системы, являющиеся прослойками, добавляющие возможности, например ciopfs (есть в репах), это надстройка поверх любой файловой системы, добавляющая нужный функционал... нужно понимать то она чуть чуть медленнее, и имеет смысл только для пользовательских каталогов, настоятельно не рекомендую в ней размещать базы данных и любые другие файлы с многопотоковым доступом.
    Ответ написан
    4 комментария
  • Как восстановить ввод в Linux?

    @rPman
    Попробуй полностью удалить de, xserver и драйвера на видеокарту, после удаления пакетов, почистит настройки (в debian дистрибутивах это apt pirge пакет, или аналог у тебя)... Некоторые настройки потеряться, потому что хранятся не в пользовательском каталоге...
    Ответ написан
    Комментировать
  • Как обновить программу "ip" в Linux?

    @rPman
    -br это короткая нотация --brief выводит в коротком виде информацию, странно что у тебя не поддерживается но это не так критично... скорее всего вместо типовой утилиты ip используется упрощенная ее замена (экономят место на диске?)

    По поводу обновления, для начала ты брал образы тут?

    Еще момент, самые свежие образы для малинки скорее всего сделаны на древних версиях linux по причинам желания денег производителям чипов SoC и не желания не просто что то делать, нет, просто следовать лицензии opensource или хотя бы публиковать информацию о железе, что бы сообщество могло запилить самостоятельно поддержку той же gpu. Пока эта ситуация не изменится, будет грустно.

    upd. поддержка --brief появилась в 2021г в версии 5.15 смотри какие версии твоей ОС содержат эту версию или старше
    Ответ написан
    2 комментария
  • Как заставить oracle linux 9 увидеть рейд 3ware 9690SA-8I?

    @rPman
    Смотришь на работающей centos 7 какой модуль ядра используется, с помощью lspci, lsmod и т.п., ищешь готовый (может он есть, даже в репах оракла, просто не установлен) или исходники, собираешь на linux oracle...

    но вообще это странно, единственная причина выбирать linux oracle это что бы все было совместимо и с поддержкой oracle, ибо за нее уплочено, а если ты лезешь во внутренности, то поддержка пшик, и остается один геморой
    Ответ написан
  • Как теперь запустить Linux на внешнем SSD?

    @rPman
    Если используется EFI то по стандарту разработчиков материнских плат не обязали давать такую возможность из биоса, т.е. нужно прописать в биосе (это можно сделать из linux с помощью efibootmgr) какая еще ОС у тебя на машине доступна.

    Исключение сделали для removable drives но трактовать что есть что оставили за производителем материнки (обычно это работает только для usb flash и cdrom, но не для внешних sata/nvme контроллеров).

    Все автоматически может сделать grub-install, достаточно загрузиться с liveusb любой linux (настоятельно рекомендую тот же что установлен, как минимум аритектура та же), смонтировать корневую и boot в какой-нибудь каталог, например /mnt (если там отдельно есть /boot и /boot/efi то их тоже смонтировать соответственно в /mnt/boot и /mnt/boot/efi), удостовериться что sdX это диск с linux и сделать
    grub-install /dev/sdX --root-directory=/mnt

    p.s. для legacy mbr режима достаточно было бы выбрать диск из BIOS но многие контроллеры в биосе не доступны, потому что драйверов нет.

    p.p.s. совмещать загрузчик linux и windows на одном диске чревато его удалением (inux загрузчика) windows при очередном обновлении, это уже происходило, поэтому если с драйверами проблема, то устанавливают grub на маленький носитель, с которого загрузка работает, типа миниатюрный usb flash или карту памяти (например многие ноутбуки имеют картридер)
    Ответ написан
    2 комментария
  • Как установить Windows 11 с Linux?

    @rPman
    Не уверен, но в режиме EFI под паролем биос не должен давать что-либо менять (добавлять новую ОС в загрузку), по крайней мере это была бы дырища, полностью убирающая смысл пароля.

    Но если у вас уже есть рабочий linux (достаточно grub) то с его помощью можно загружать уже установленный windows, добавив в меню что то типа такого (это пример для EFI режима):
    menuentry 'Windows' {
       insmod part_gpt
       search --fs-uuid --set=root $uuid
       chainloader /EFI/Microsoft/Boot/bootmgfw.efi
    }


    Но предварительно нужно установить windows, настроить boot.ini на правильный каталог и т.п. В принципе, с помощью virtualbox можно это сделать, предварительно осторожно подвигав разделы, но без знаний и опыта можно все сломать.

    p.s. ищите способ сброса пароля для биоса для своего ноутбука, и скорее всего без доступа к материнской плате это будет невозможно, иначе ну какой тогда смысл в паролях? Без адекватной возможности загрузиться со внешнего носителя у вас связаны руки.
    Ответ написан
    Комментировать
  • Возможно ли переписать это на PowerShell?

    @rPman
    В windows встроено (устанавливается из коробки) несколько языков программирования, начиная с javascript/vbasic в древнем windows scripting host (запускать программу в виде текстового файла .js или .vbs с помощь cscript.exe //nologo имя_файла.js) и заканчивая полноценного .net c#/vbs#/js# собираемого в .exe одной строчкой (никаких проектов, никаких студий, просто в редакторе пишешь код и запускаешь)

    Но люди продолжают ломать свои мозги, используя неадекватный ему инструмент что в windows (cmd и спасибо powershell лучше но все равно извращение, лучше он только потому что предоставляет больше доступа к windows-specific функционалу но не как язык программирования) так и в linux (когда я вижу, как люди в очередной раз пишут многостраничные простыни на bash чтобы работать с датами, вместо того чтобы написать код в пару строчек на python/php/..., мне становится грустно, куча всего в linux буквально написано на bash, поддерживать это неадекватное месиво ужасно.

    И да, я знаю, что бывает код на bash/powershell проще, но только потому что там уже есть решение проблемы, и весь этот код - просто способ описания этой проблемы.
    Ответ написан
    4 комментария