LINUX.ORG.RU

Сообщения bugs-bunny

 

Табло с меню в кафешке

Форум — General

Здравствуйте. Друг открывает столовку в БЦ. Хотелось бы сделать монитор с меню. При этом добавлять/удалять пункты, например кашу на завтраки после того как закончится (засерить пункт или убрать).

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

Это наверное Apache+PHP+xxSQL (LAMP) нужен со скриптами. А есть ли готовые решения?

 

bugs-bunny
()

Как увидеть предсмертные printk?

Форум — Development

Вот раньше до systemd/journalctl было так, что printk кидались как-то сразу в файл /var/log/dmesg, и посмертный дамп можно было поглядеть.

Теперь, логи буферизуются в памяти за каким-то ((. В Ubuntu /var/log/dmesg все же пишется, но что там произошло непосредственно перед panic в лог не попадает.

Стенд удаленный, экрана его я не вижу, клавы тоже. Нашелся COM-порт на плате, но пока еще сделают выкидыш и подключение к другой машине. DKVM свитч вроде можно подключить.

А есть ли способ journalctl или вообще что там заставить делать как раньше?

 ,

bugs-bunny
()

Обработка mmap-функции драйвером устройства

Форум — Development

Преамбула. Есть устройство, с какими-то физ. адресами на PCI-E. Есть большое желание из юзерлендного приложения работать с устройством напрямую, прямо писать/читать регистры (не говорите, что плохо, это надо, гигабайты в сек.), передавать данные из юзерспейса в кернел и обратно без лишних copy_to_user/copy_from_user, вызовов ioctl и т.п..

Для этого драйвер создает устройство «/dev/mydev», которое реализует функции struct file_operations : .open, .release, .unlocked_ioctl, .compat_ioctl и .mmap. Приложение открывает устройство «/dev/mydev» и все функции работают нормально, в dmesg видна печать, но не .mmap. Туда управление просто не попадает.

Вот, примерный аналог того, что я пытаюсь сделать https://www.sobyte.net/post/2022-03/mmap/

Не приходит в модуль mmap. Я делал драйвер в «/dev/» символьным устройством, miscdevice, осталось только блочным (ну символьное то не имеет конечного размера и lseek и mmap ему по логике не нужны). Я пробовал замапить «/dev/sda» в память - неа.

Раньше я через mmap мапил известные (lsusb) физ. адреса PCI карты через «/dev/mem», могу дать пример. Но тут надо без «/dev/mem», со своим устройством, чтобы оно мапило свою память.

Upd1. Да, и драйвер выделяет непрерывную физ.память/вирт.память.ядра через kmalloc, а лучше как сейчас через alloc_pages. Их будет юзать DMA.

 

bugs-bunny
()

GDB виснет вместе с отлаживаемой программой

Форум — Development

Был проектик в Eclipse c Makefile и C-исходниками. Можно было нормально отлаживаться в исходниках с использованием gdb. Что добавил - clock_gettime, чтобы время исполнения померить.

В итоге, gdb останавливается на main, далее при попытке сделать step-over на первой же функции зависает в состоянии нитки «running : step». Ksysguard показывает висящий gdb, отжирающий 12% CPU и висящую задачу с 1%. Первая функция любая, в т.ч. «printf(«Hello!\n»)».

Просто запущенная из консоли прога отрабатывает OK.

Запустил gdb --tui test, b main, exec-file test, run (остановился на main), Шаг n. Все, дальше отладка не идет. В логе повторяется:

Breakpoint 1, main (argc=<error reading variable: Cannot access memory at address 0x7fffffffddbc>, argv=<error reading variable: Cannot access memory at address 0x7fffffffddb0>)
    at main.c:205
warning: Error removing breakpoint 1
Cannot remove breakpoints because program is no longer writable.
Further execution is probably impossible.

Ясно, что сегмент кода резко стал read-only. Но как, и как с этим отлаживаться?

UPD. Вот похожее гуглится. https://github.com/microsoft/vscode-cpptools/issues/11161

UPD2. Запустил sudo gdb ./test - отладка идет. Прога статически линкуется с исходниками libkcapi. Если их выкинуть из сборки - отладка работает. Раньше, еще месяц назад, запускал эту тестовую прогу под отладчиком без всяких sudo. Кто бы объяснил WTF происходит?

 

bugs-bunny
()

SMPlayer/mpv, не идет видео mpeg4 в Debian 12, в Dragon player идет.

Форум — Multimedia

Собственно сабж.

В Debian 11 все было «из коробки». Что то тут поломалось. Ставил-переставил всякие пакеты кодеков. Причем, звук иногда есть. А при закрытии плеера иногда выдается «Ой, что-то пошло не так!». Ясно, что что-то именно с видеодеками (mpeg4 в частности) проблема.

Что про систему рассказать? Базовая c netinstall с KDE-Plasma. Ничем особо не засорил еще.

 ,

bugs-bunny
()

Honor MagicBook X16 BRN-F56

Форум — Linux-install

https://www.dns-shop.ru/product/e930ead3f93fed20/16-noutbuk-honor-magicbook-x... Добавил бы тег «старческая дальнозоркость».

Ну в целом, норм. Но 1920х1200 на 16" это не то. Что приятно удивило, ноут без RG45, но при установке netinst Debian 12 нашелся WiFi алаптер, спросило PSK или WPA1/2, пароль, и далее все через телефон в режиме AP зарулило, впервые видел. Я ожидал, что будет трах с установкой WiFi адаптера, установкой блобов, но нет, из коробки.

Но, 1920х1200 на 16" это не пойми что, это кровавые слезы! Я сделал в KDE шрифты на +2 размера. Можно было б наверне DPI уменьшить.

С консолью стартовой, GRUB что делать, «dpkg-reconfigure console»? И с подсветкой клавиатуры проблема - не светит.

Кто чего подскажет по этому ноуту?

 

bugs-bunny
()

GDB выдает ошибку, если включить незадействованные исходники.

Форум — Development

Нужно протестировать модули крипто-API в ядре. В доках kernel.org сказано было, что пример работы с ними для user-space - библиотека libkcapi.

Скачал «apt source libkcapi», все исходники там в подкаталоге lib. Скопировал lib себе в проект, чтобы слинковать статически. Makefile примитивный.

EXE = test

OBJS = lib/kcapi-asym.o lib/kcapi-kdf.o lib/kcapi-kernel-if.o lib/kcapi-kpp.o lib/kcapi-md.o lib/kcapi-rng.o lib/kcapi-sym.o lib/kcapi-utils.o lib/kcapi-aead.o
OBJS += main.o

CFLAGS = -g -O0 
#CFLAGS += -enable-frame-pointer -fno-omit-frame-pointer

all: $(EXE)

$(EXE): $(OBJS)
	gcc -o $(EXE) $(OBJS)

.o: .c
	gcc -c $< $(CFLAGS)

clean:
	rm $(EXE) $(OBJS)

Сам тест начал только писать с хелловорлда


#include <stdlib.h>
#include <stdio.h>
#include "lib/kcapi.h"

int main(int argc, char *argv[])
{
	printf( "Hello world!" );
    return 0;
}

Без либы собирается 17К, с либой 131К. Ничего из функций либы не используется так и так. Без либы дебаггер проходит main, билд с исходниками либы зависает и в консоли gdb следующее:

... bla-bla-bla ...
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) Cannot remove breakpoints because program is no longer writable.                                                                                                                               
Further execution is probably impossible.

Breakpoint 1, main (argc=<error reading variable: Cannot access memory at address 0x7fffffffdfcc>, argv=<error reading variable: Cannot access memory at address 0x7fffffffdfc0>) at main.c:8
8               printf( "Hello world!" );
Cannot remove breakpoints because program is no longer writable.
Further execution is probably impossible.

Breakpoint 1, main (argc=<error reading variable: Cannot access memory at address 0x7fffffffdfcc>, argv=<error reading variable: Cannot access memory at address 0x7fffffffdfc0>) at main.c:8
8               printf( "Hello world!" );

Как это может быть и что с этим делать? Чистый gdb без eclipse дает то же. Что-то с исходниками либы не так?

 

bugs-bunny
()

Доки по функциям ядра.

Форум — Development

Понадобилось в модуле ядра зачитать файл. Ясно, что функции должны быть похожи на fopen, fread, fclose, но не они непосредственно, т.к. ядро не юзерленд.

Нагуглил функции kernel_read/kernel_write, примеры использования. Ну а где как открыть файл, stat, seek и т.п.? Для функций стандартной библиотеки хоть есть маны, для функций ядра вроде бы тоже man9 предусмотрен, но там пусто.

В исходниках ядра запустил «make htmlhelp». Сгенерилось, даже с поиском и всеми пирогами. Но, ничего там толком нет.

ЗЫ. А вот в MSDN бы все нашлось сразу, списочком, по функциям, с примерами, где заголовочник, в какой либе, в каких версиях... Но это про оффтопик. И почему здесь не дает добавить существующий тег «man9», это табу здесь, т.к. вызывает боль?))

 

bugs-bunny
()

Отладка Makefile. *** missing separator

Форум — Development

Исходные. Портирую OpenWrt на архитектуру RISCV64, несколько платформ (одноплатник, стенд, изделие). Для пакета U-Boot заведен Makefile в <package/u-boot/uboot-riscv64>. В «make menuconfig» что там прописано видится, выбирается.


include $(TOPDIR)/rules.mk

include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/u-boot.mk
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk

define U-Boot/Default
        BUILD_TARGET:=riscv64
        UBOOT_IMAGE:=spl/boot.bin u-boot.img
        UBOOT_CONFIG:=sipeed_maix_bitm
        UENV:=default
endef

#  UBOOT_CONFIG:=riscv64_$(1)
#  HIDDEN:=1

define U-Boot/sipeed_maix_bitm
        NAME:=Sipeed Allwinner D1 board
        BUILD_DEVICES:=sipeed
endef

# ToDo. For each platform

# Note. Just u-boot targets that could be found in packages/boot/u-boot
UBOOT_TARGETS:= \
        sipeed_maix_bitm

#       onyx \
#       kwnic

define Build/InstallDev
        $(INSTALL_DIR) $(STAGING_DIR_IMAGE)
        $(CP) $(PKG_BUILD_DIR)/spl/boot.bin $(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-boot.bin
        $(CP) $(PKG_BUILD_DIR)/u-boot.img $(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-u-boot.img
endef

#    $(CP) ./files/uEnv-$(UENV).txt $(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-uEnv.txt

#define Build/Compile
#endef

#define Package/u-boot/install/default
#endef

$(warning "===== UBOOT_TARGETS=" $(UBOOT_TARGETS))
$(warning "===== BUILD_VARIANT=" $(BUILD_VARIANT))
#$(warning $(call BuildPackage/U-Boot))
$(eval $(call BuildPackage/U-Boot))

BuildPackage/U-Boot определен в <build_dir/target-riscv64_riscv64_musl/openwrt-imagebuilder-riscv64-sipeed.Linux-x86_64/include>

PKG_NAME ?= u-boot

ifndef PKG_SOURCE_PROTO
PKG_SOURCE = $(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL = \
        https://mirror.cyberbits.eu/u-boot \
        https://ftp.denx.de/pub/u-boot \
        ftp://ftp.denx.de/pub/u-boot
endif

PKG_BUILD_DIR = $(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)

PKG_TARGETS := bin
PKG_FLAGS:=nonshared

PKG_LICENSE:=GPL-2.0 GPL-2.0+
PKG_LICENSE_FILES:=Licenses/README

PKG_BUILD_PARALLEL:=1

export GCC_HONOUR_COPTS=s

define Package/u-boot/install/default
        $(CP) $(patsubst %,$(PKG_BUILD_DIR)/%,$(UBOOT_IMAGE)) $(1)/
endef

Package/u-boot/install = $(Package/u-boot/install/default)

define U-Boot/Init
  BUILD_TARGET:=
  BUILD_SUBTARGET:=
  BUILD_DEVICES:=
  NAME:=
  DEPENDS:=
  HIDDEN:=
  DEFAULT:=
  VARIANT:=$(1)
  UBOOT_CONFIG:=$(1)
  UBOOT_IMAGE:=u-boot.bin
endef

TARGET_DEP = TARGET_$(BUILD_TARGET)$(if $(BUILD_SUBTARGET),_$(BUILD_SUBTARGET))

UBOOT_MAKE_FLAGS = \
        HOSTCC="$(HOSTCC)" \
        HOSTCFLAGS="$(HOST_CFLAGS) $(HOST_CPPFLAGS) -std=gnu11" \
        HOSTLDFLAGS="$(HOST_LDFLAGS)" \
        LOCALVERSION="-OpenWrt-$(REVISION)" \
        STAGING_PREFIX="$(STAGING_DIR_HOST)" \
        PKG_CONFIG_PATH="$(STAGING_DIR_HOST)/lib/pkgconfig" \
        PKG_CONFIG_LIBDIR="$(STAGING_DIR_HOST)/lib/pkgconfig" \
        PKG_CONFIG_EXTRAARGS="--static" \
        $(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='')

define Build/U-Boot/Target
  $(eval $(call U-Boot/Init,$(1)))
  $(eval $(call U-Boot/Default,$(1)))
  $(eval $(call U-Boot/$(1),$(1)))

 define Package/u-boot-$(1)
    SECTION:=boot
    CATEGORY:=Boot Loaders
    TITLE:=U-Boot for $(NAME)
    VARIANT:=$(VARIANT)
    DEPENDS:=@!IN_SDK $(DEPENDS)
    HIDDEN:=$(HIDDEN)
    ifneq ($(BUILD_TARGET),)
      DEPENDS += @$(TARGET_DEP)
      ifneq ($(BUILD_DEVICES),)
        DEFAULT := y if ($(TARGET_DEP)_Default \
                $(patsubst %,|| $(TARGET_DEP)_DEVICE_%,$(BUILD_DEVICES)) \
                $(patsubst %,|| $(patsubst TARGET_%,TARGET_DEVICE_%,$(TARGET_DEP))_DEVICE_%,$(BUILD_DEVICES)))
      endif
    endif
    $(if $(DEFAULT),DEFAULT:=$(DEFAULT))
    URL:=http://www.denx.de/wiki/U-Boot
  endef

  define Package/u-boot-$(1)/install
        $$(Package/u-boot/install)
  endef
endef

define Build/Configure/U-Boot
        +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) $(UBOOT_CONFIGURE_VARS) $(UBOOT_CONFIG)_config
endef

DTC=$(wildcard $(LINUX_DIR)/scripts/dtc/dtc)

define Build/Compile/U-Boot
        +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
                CROSS_COMPILE=$(TARGET_CROSS) \
                $(if $(DTC),DTC="$(DTC)") \
                $(UBOOT_MAKE_FLAGS)
endef

define BuildPackage/U-Boot/Defaults
  Build/Configure/Default = $$$$(Build/Configure/U-Boot)
  Build/Compile/Default = $$$$(Build/Compile/U-Boot)
endef

define BuildPackage/U-Boot
  $(warning ============== BuildPackage/U-Boot ==============)
  $(warning "UBOOT_TARGETS=" $(UBOOT_TARGETS))
  $(warning "BUILD_VARIANT=" $(BUILD_VARIANT))
  $(warning "===== 1" )
  $(eval $(call BuildPackage/U-Boot/Defaults))
  $(foreach type,$(if $(DUMP),$(UBOOT_TARGETS),$(BUILD_VARIANT)), \
    $(eval $(call Build/U-Boot/Target,$(type)))
  )
  $(warning "===== 2" )
  $(eval $(call Build/DefaultTargets))
  $(foreach type,$(if $(DUMP),$(UBOOT_TARGETS),$(BUILD_VARIANT)), \
    $(call BuildPackage,u-boot-$(type))
  )
endef

То есть оно качается в процессе сборки «git clone» или «wget xxx.tar.gz» из сети. И попадает в каталог с этим страшным сгенерированным именем.

$(warning ...) это уже я добавил. Причем, в моем конфиге warning хоть что-то выводит, а в include-нутом нет. Возможно, из всего этого генерится нечто третье, что не чистится «make clean», и возможно только удалением /tmp, /build, /bin, /build_dir.

В итоге сборки по «make -j1 V=sc» (рекомендовано для поиска ошибок) все заканчивается

..........
..........
make[3]: Entering directory '/home/user/PROJECTS/openwrt-riscv/package/boot/uboot-riscv64'
Makefile:49: "===== UBOOT_TARGETS=" sipeed_maix_bitm
Makefile:50: "===== BUILD_VARIANT=" sipeed_maix_bitm
Makefile:52: *** missing separator.  Stop.
make[3]: Leaving directory '/home/user/PROJECTS/openwrt-riscv/package/boot/uboot-riscv64'
time: package/boot/uboot-riscv64/sipeed_maix_bitm/compile#0.08#0.01#0.09
    ERROR: package/boot/uboot-riscv64 failed to build (build variant: sipeed_maix_bitm).
make[2]: *** [package/Makefile:116: package/boot/uboot-riscv64/compile] Error 1
make[2]: Leaving directory '/home/user/PROJECTS/openwrt-riscv'
make[1]: *** [package/Makefile:110: /home/user/PROJECTS/openwrt-riscv/staging_dir/target-riscv64_riscv64_musl/stamp/.package_compile] Error 2
make[1]: Leaving directory '/home/user/PROJECTS/openwrt-riscv'
make: *** [/home/user/PROJECTS/openwrt-riscv/include/toplevel.mk:231: world] Ошибка 2

Был опробован «make --debug=basic ...», «make --debug=all». Ничего вразумительного по поводу происхождения «*** missing separator» это не дает. Какой сепаратор? Хоть бы как в С показывалось «^--вот тут» или «скобки ( где-то не хватает». Это случается на последней строчке 1-го Makefile «$(eval $(call BuildPackage/U-Boot))». В файлах проверил, блоки правил и define кончаются чисто пустой строкой (make к этому неравнодушен). Про саму ошибку в интернетах пишут, что самая распространенная и может значить что угодно.

Собственно вопросы.

Кто как отлаживает Makefile и как тут можно докопаться до причины?

Допиливал ли кто OpenWrt под новую платформу? (не сильно надеюсь, что кто-то это делал).

 ,

bugs-bunny
()

PCI ресурсы (диапазоны памяти, портов)

Форум — Development

Есть конфигурационное пространство устройства PCIe, которое в адресах PC даже не представлено, а читается косвенно, кажется через io-порты 0xC8C, 0xC8E. А вот в BAR реальный физ. адрес региона. Откуда диапазоны адресов, размеры берутся в описаниях устройств? Я не понимаю. BAR 1шт., а ресурсов 3шт.

Есть код

mqnic->hw_regs_size = pci_resource_len(pdev, 0);
mqnic->hw_regs_phys = pci_resource_start(pdev, 0);
mqnic->app_hw_regs_size = pci_resource_len(pdev, 2);
mqnic->app_hw_regs_phys = pci_resource_start(pdev, 2);
mqnic->ram_hw_regs_size = pci_resource_len(pdev, 4);
mqnic->ram_hw_regs_phys = pci_resource_start(pdev, 4);

pci_resource_xxx это макросы из <include/linux/pci.h>.

.....
/*
 * These helpers provide future and backwards compatibility
 * for accessing popular PCI BAR info
 */
#define pci_resource_start(dev, bar)	((dev)->resource[(bar)].start)
#define pci_resource_end(dev, bar)	((dev)->resource[(bar)].end)
.....

Но где оно заполняется, где бы было "->resource[" как lvalue, не нашел. В драйвере нет. В функциях ядра есть, но где и когда их драйвер вызывает не знаю.

Где эта таблица ресурсов может заполняться?

 

bugs-bunny
()

«God-mode» для чтения физ. памяти BAR регистров PCIe из userland

Форум — Development

Есть ли такое? Понятно, что если бы было, то Linux превратился бы в помойку для вирусов. Но вот для разработки надо. Припоминаю, была возможность увидеть память как файл.

 

bugs-bunny
()

KDE выставляет «LANG_xxx=cv_RU», а ru_RU локаль не предлагает выбрать.

Форум — Desktop

Debian 11. Среди вариантов выбора в KDE есть cv_RU, ba_RU, myv_RU. А ru_RU не предлагается. В итоге, в части файл-менеджеров русские имена видны крякозябрами. OpenOffice, даже если ФМ видит имена нормально, не открывает файлы и ругается на ошибку в параметрах запуска. На той же системе в Gnome все ОК.

Проблема древняя, лет 5 ей. И тут даже кажется обсуждалась. И в КДЕ 5.18 ее пофиксили, а в 5.19 она всплыла, регрессия так ее! Предлагалось доставить какой-то пакет, которого уже нет.

Подскажите кто как это решил? Как добавить выбор ru_RU в настройки? Предполагаю, это какой-то конфиг КДЕ.

 ,

bugs-bunny
()

Потоки буферов в сетевой карте.

Форум — Development

А вот скажите пожалуйста. Есть сетевуха и у нее буфферы Rx/Tx разбиты по 4/8 потоков, по 16/32 буферов.

Зачем так? Пакеты приходят в хронологическом порядке, рассыпаются на 16 потоков, а потом снова собираются в цепочку? Это как? Почему бы не завести по одному ринг-буферу на Rx/Tx. Никаких timestamp-ов и порядковых номеров у фреймов нет. Для сетевой карты это просто фреймы, без IP, без номеров. Ну http там соберет свое как-то, а остальные?

 ,

bugs-bunny
()

Отладка ядра с KGDB через Ethernet

Форум — Development

Собрал ядро с KGDB, вроде бы никаких опций не пропустил. Попробовал отладку с параметром ядра «kgdboc=ttyS0,115200». Останавливаю ядро в отладчике «echo g > /proc/sysrq-trigger», на хосте запускаю gdb, «target remote /dev/ttyUSB0». Все работает. Пробовал и из под Eclipse, тоже ОК, почти ОК...

Проблема в том, что ооочень мееееедленно, каждую команду на выполнение одной инструкции «si» gdb выполняет секунд по 20. Понятно, что со скоростью 115200 бод, гоняется содержимое регистров, памяти. Но не так же долго, не десятки килобайт же! Это просто несъедобно!

Вопросы.

1) Можно ли этот процесс ускорить? Вроде бы некоторые COM-порты могли до 960 КБод.

2) Попробовал ядро запустить с параметром «kdbgoe=@10.3.2.95/,@10.3.2.96». На sysrq-trigger не останавливается. Если разрешить тест KGDB на загрузке, то ядро виснет. Это вообще рабочий вариант, через ethernet запустить отладку? При старте, понятное дело, IP еще неизвестен, но потом то да.

 ,

bugs-bunny
()

А что из мессенджеров сейчас использовать?

Форум — Talks

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

Посоветуйте, пожалуйста, что-то распространенное--популярное, желательно с веб-мордой, кучей клиентов в т.ч. под офтопик, андроид, чтобы _обычные_ садоводы _из_РФ_ могли трещать о своем. Не Тор-чат с 1,5 клиентами, который я так и не посмотрел в итоге, не IRC для красноглазых.

 ,

bugs-bunny
()

Alt Linux, репозитории.

Форум — Development

Есть Alt Linux 8.3, который сертифицированный. Под него надо собрать пакеты. Для этого надо доустановить хотя бы git, gcc и прочее по зависимостям. А в основной базе пакетов их нет.

Что альт - уродец с пакетным менеджером apt и базой пакетов rpm я понял, как это работает - нет. Про Сизиф меня предупредили, что он может разнести всю систему, но попробовать надо, т.к. другого источника пакетов нет, судя по их же форумам.

Git из Сизифа не ставится - ошибки зависимостей пакетов. Из rpm-src его тоже не собрать - видимо требуется какой-то типа zlib-develop. Вообщем все упирается снова в репы.

Вот как сейчас выглядит sources.list.

# cat /etc/apt/sources.list.d/sources.list

#rpm cdrom:[ALT 8 SP Server 11100-01 x86_64 build 2019-10-25]/ ALTLinux main
rpm file:///mnt/iso0/ ALTLinux main

rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic
rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus noarch classic
rpm-src [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic
rpm-src [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus noarch classic
#rpm [alt] file:///mnt/builds

При подключении вместо Sysyphus репозиториев c8/branch, c8.1/branch, p8 сыплются ошибки на неправильную подпись базы пакетов.

Откуда добавить ключи, какую репу использовать? Кто с этой чебурашкой Альтом боролся?

 ,

bugs-bunny
()

После установки Debian 10 GRUB не грузит Windows 7

Форум — General

На ноуте Lenovo G700 (2014г.) стоит HDD 320G, разбивка MBR.

root@notebook:~# fdisk -l /dev/sda
Диск /dev/sda: 298,1 GiB, 320072933376 байт, 625142448 секторов
Disk model: HGST HTS545032A7
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 4096 байт
Размер I/O (минимальный/оптимальный): 4096 байт / 4096 байт
Тип метки диска: dos
Идентификатор диска: 0xd9fa2484

Устр-во    Загрузочный    начало     Конец   Секторы Размер Идентификатор Тип
/dev/sda1                   2048 157087743 157085696  74,9G            83 Linux
/dev/sda2              520384512 524290047   3905536   1,9G            82 Linux своп / Solaris
/dev/sda3  *           157087744 520384511 363296768 173,2G             7 HPFS/NTFS/exFAT
/dev/sda4              565127168 625142447  60015280  28,6G            12 Compaq диагностика

Элементы таблицы разделов упорядочены не так, как на диске.

Разделы упорядочены - 1,3,2,4. Нв /dev/sda1 стоял Debian 7 Wheezy, после попытки сделать apt dist-upgrade он успешно навернулся, что и следовало ожидать. Ранее раздел 2 свопа стоял за 1, я сжал раздел 3 и перенес своп за него. Раздел 1 создал заново.

Установил Debian 10 Buster на /dev/sda1 c DVD#1. Во время установки GRUB было сказано, что найдена Windows Vista, но пункты меню в grub.cfg добавлены не были.

Запустил os-prober, он сгенерировал /etc/grub.d/30_os-prober. Написал свой /etc/grub.d/40_custom. grub-update поместил изменения в /boot/grub/grub.cfg. И вот что получилось.

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}
function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  bec4ed44-96c0-444f-a773-31e15a701bb7
else
  search --no-floppy --fs-uuid --set=root bec4ed44-96c0-444f-a773-31e15a701bb7
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=ru_RU
  insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
  set timeout=30
else
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=menu
    set timeout=5
  # Fallback normal timeout code in case the timeout_style feature is
  # unavailable.
  else
    set timeout=5
  fi
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  bec4ed44-96c0-444f-a773-31e15a701bb7
else
  search --no-floppy --fs-uuid --set=root bec4ed44-96c0-444f-a773-31e15a701bb7
fi
insmod png
if background_image /usr/share/desktop-base/futureprototype-theme/grub/grub-4x3.png; then
  set color_normal=white/black
  set color_highlight=black/white
else
  set menu_color_normal=cyan/blue
  set menu_color_highlight=white/blue
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
	set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-bec4ed44-96c0-444f-a773-31e15a701bb7' {
	load_video
	insmod gzio
	if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
	insmod part_msdos
	insmod ext2
	set root='hd0,msdos1'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  bec4ed44-96c0-444f-a773-31e15a701bb7
	else
	  search --no-floppy --fs-uuid --set=root bec4ed44-96c0-444f-a773-31e15a701bb7
	fi
	echo	'Загружается Linux 4.19.0-8-amd64 …'
	linux	/boot/vmlinuz-4.19.0-8-amd64 root=UUID=bec4ed44-96c0-444f-a773-31e15a701bb7 ro  quiet
	echo	'Загружается начальный виртуальный диск …'
	initrd	/boot/initrd.img-4.19.0-8-amd64
}
submenu 'Дополнительные параметры для Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-bec4ed44-96c0-444f-a773-31e15a701bb7' {
	menuentry 'Debian GNU/Linux, с Linux 4.19.0-8-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-8-amd64-advanced-bec4ed44-96c0-444f-a773-31e15a701bb7' {
		load_video
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos1'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  bec4ed44-96c0-444f-a773-31e15a701bb7
		else
		  search --no-floppy --fs-uuid --set=root bec4ed44-96c0-444f-a773-31e15a701bb7
		fi
		echo	'Загружается Linux 4.19.0-8-amd64 …'
		linux	/boot/vmlinuz-4.19.0-8-amd64 root=UUID=bec4ed44-96c0-444f-a773-31e15a701bb7 ro  quiet
		echo	'Загружается начальный виртуальный диск …'
		initrd	/boot/initrd.img-4.19.0-8-amd64
	}
	menuentry 'Debian GNU/Linux, with Linux 4.19.0-8-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-8-amd64-recovery-bec4ed44-96c0-444f-a773-31e15a701bb7' {
		load_video
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos1'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  bec4ed44-96c0-444f-a773-31e15a701bb7
		else
		  search --no-floppy --fs-uuid --set=root bec4ed44-96c0-444f-a773-31e15a701bb7
		fi
		echo	'Загружается Linux 4.19.0-8-amd64 …'
		linux	/boot/vmlinuz-4.19.0-8-amd64 root=UUID=bec4ed44-96c0-444f-a773-31e15a701bb7 ro single 
		echo	'Загружается начальный виртуальный диск …'
		initrd	/boot/initrd.img-4.19.0-8-amd64
	}
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 7 (на /dev/sda3)' --class windows --class os $menuentry_id_option 'osprober-chain-2A9AA29A9AA261D5' {
	insmod part_msdos
	insmod ntfs
	set root='hd0,msdos3'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3  2A9AA29A9AA261D5
	else
	  search --no-floppy --fs-uuid --set=root 2A9AA29A9AA261D5
	fi
	parttool ${root} hidden-
	chainloader +1
}
menuentry 'Windows Recovery Environment (на /dev/sda4)' --class windows --class os $menuentry_id_option 'osprober-chain-4EEE508FEE5070E7' {
	insmod part_msdos
	insmod ntfs
	set root='hd0,msdos4'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4  4EEE508FEE5070E7
	else
	  search --no-floppy --fs-uuid --set=root 4EEE508FEE5070E7
	fi
	parttool ${root} hidden-
	drivemap -s (hd0) ${root}
	chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "Windows 7 (loader) (on /dev/sda3)" --class windows --class os {
    insmod ntfs
    set root='hd0,msdos3'
    search --no-floppy --fs-uuid --set=root 2A9AA29A9AA261D5
    chainloader +1
}
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

Не работают пункты ни из 30_os_prober, ни из 40_custom.

Вот что выводится в итоге при выборе пункта «Windows 7»
https://fastpic.ru/view/111/2020/0419/_47d54942c8838860c9fde7aa29763ea9.jpg.html
https://fastpic.ru/view/111/2020/0419/_5cc90c6ac75e57c61c691b00617edf8c.jpg.html

Что это такое и что с этим делать? Про какой UEFI речь, если загрузка в CFM режиме?

 ,

bugs-bunny
()

Установить ключи make чтобы он вызывал дочерние make тоже с ними

Форум — Development

Здравствуйте.

Вопрос #1. Есть makefile, где вызывается make для компонента системы, который вызывает еще make для сборки например библиотеки. make->make->make. Для 2-го make в 1-м я задаю ключ -np, чтобы видеть переменные, где ошибка произошла и т.п. Весь шквал сообщений отправляю в файл «make -np 2>&1 >m.log», какие-то все же пролезают на экран из дочерних makefile.

Возможно ли на время сборки задать этот ключ -np, чтобы с ним вызывался каждый вложенный make? Иными словами, есть ли какая-то переменная у make, чтобы задать ключи, какая-нибудь MAKE_OPTS или типа того, которую можно export-ировать и ее увидят дети?

Вопрос #2. Существуют ли в природе пошаговые отладчики makefile-ов, bash-скриптов? Чтоб с просмотром переменных среды и makefile-а, с CUI, а лучше GUI? Или я невозможного хочу?

 , ,

bugs-bunny
()

Astra Linux. Создание/удаление файлов/каталогов - «Операция не позволена»

Форум — General

Есть 2 виртуалки VMWare, на обоих стоит Астра, на одной стоит DE, вторая с консолью. Идея в том, чтобы на голой машине прописать репозиторий софтины в /etc/apt/sources.list и протестировать установку (зависимости пакетов, работоспособность софтины). И все было хорошо до сегодняшнего дня, коннектился PuTTY, заливал репозиторий, устанавливал софтину.

Что произошло мне не ведомо, но теперь на любую операцию с файлами в /home/user (чтение/запись/удаление) выдается «Операция не позволена». «ls -1al .» выдает у файлов права 777 и пользователя/группу user:user. Даже из под root («sudo su -») с файлами ничего не сделать.

lsattr выдает права "-------------e----" (что такое «e»? в мане нет) и аттрибута «i» (недосягаемый) там нет.

mount показывает, что ФС с каталогом /home замонтирована rw.

touch /tmp/111 создает файл, т.е. что-то только с /home/user.

В Astra при входе есть какой-то «Integrity level», но я всегда выбирал по дефолту. Из последнего была доустановлена samba.

 ,

bugs-bunny
()

Вставка bash-команд в Makefile. Передача переменных.

Форум — Development

Есть сборка RPM-пакетов софтины через rpmbuild. Задача стоит опакетить это под DEB. Для сборки запускается shell-скрипт, который тянет исходники из git, патчит их, парсит конфигурацию сборки и выставляет -D и -I для сборки в переменных для Makefile-ов через export, и запускает rpmbuild.

rpmbuild делает в итоге

make -C каталог all
и собирает RPM-ы из бинарников. На замену rpmbuild решено было использовать свой Makefile. Shell-скрипт поправлен так, чтобы вызывал этот скрипт
make -f make_deb.mak
. Из shell в Makefile переменные передаются через export, все нормально, переменные видны. Но в Makefile при сборке target-ов происходит что-то мне непонятное. Для теста сделал отдельный пример.

var = ""
val = "value"
num = 1

.PHONY: all

all: test6

test:
	echo "1#### "$$var ; \
	if [ -z $$var ] ; then \
	    var="$(val)";  \
	    echo "2#### var="$$var; \
	else \
	    echo "3#### FAIL"; \
	fi; \
	echo "4#### "$$var

test4:
	echo "##### test4"$(optflags)
	if [ -z "${CFLAGS}" ]; \
	then \
	    CFLAGS=${optflags}; \
	    echo $$CFLAGS ; \
	fi ; \
	echo $$CFLAGS

test6:
	@PYTHON=/usr/bin/python3 ; \
	TESTVAR=test ; \
	env ; \
	echo $(PYTHON) ; \
	./a.sh

Заданные в Makefile переменные, в нем же видны (test). Заданные в bash-консоли переменные видны (test4).

optflags=anyflags; make -f b.sh test4
Заданные во фрагменте shell-кода (test6) переменные не видны ни в следующих командах вставки, ни в вызываемом ./a.sh (там тоже просто echo $(PYTHON)). Какую магию нужно использовать в этом случае?

 , ,

bugs-bunny
()

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