LINUX.ORG.RU

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

Можно ли собрать Линукс совсем с нуля?

Форум — Linux-install

Лфс требует gcc и вообще toolchain, а если нырнуть глубже, и собрать gcc старым gcc, его ещё более старым, и так до 1.27 (первая версия на x86). А дальше? Дальше мы возьмём какой-нибудь K&R компилятор, да? А его как собрать? На самом дне, наверное, будет какой-то минимальный ассемблер, набранный вручную в кодах? Но его надо будет запустить на какой-то примитивной ос. Dos 1.0? Minix?

Хардмод - сделать всё это, не пользуясь несвободными инструментами.

Не знаю, какие теги ставить, и вообще не лучше ли перенести в development.

 

true_old
()

Organic Maps в Google Summer of Code 2024

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

Organic Maps призывает всех желающих принять участие в ежегодной программе Google Summer of Code 2024 (GSoC), в рамках которой контрибьюторы (не только студенты!) со всего мира участвуют в разработке программного обеспечения с открытым исходным кодом под руководством опытных наставников из различных организаций. Мы участвуем в программе третий год подряд.

Мы делаем открытые мобильные офлайн-карты для путешественников и любителей активного отдыха на основе данных OpenStreetMap. Приложение уже установили более миллиона пользователей из 186 стран мира. Приложение доступно в F-Droid, Google Play, AppStore и даже FlatHub (desktop версия для разработки). Про нас пишут в блогах и упоминают в ведущих СМИ. На GitHub проекте более 8k ⭐ и около 700 forks.

Мы призываем всех желающих попробовать силы для участия в проекте и программе GSoC в частности.

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

 , , , ,

rtsisyk
()

Rust is not safe!

Форум — Development

https://youtu.be/vfMpIsJwpjU

Для Ъ: в этом вашем Rust с 2015 года существует уязвимость, позволяющая неограниченно расширить время жизни любой переменной и воспроизвести любые уязвимости, связанные с памятью.

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

А Linux тут при том, что и на нём эти уязвимости прекрасно воспроизведутся.

 ,

shkolnick-kun
()

Как разобраться в формате файла? (было: Как заинструментировать код на Си)

Форум — Development

Пост обновлен, предыдущее название: «Как заинструментировать код на Си и понять что он делает? Реверсинг формата файла»


Вступление

Есть какой-то файл и я хочу понять его внутреннее устройство. В качестве примера, возмем файл формата PNG, так как он достаточно простой и хорошо документирован. Но далеко не все форматы хорошо документированы, поэтому полагаться только на документацию - нельзя.

Итак, у нас есть какой-то файл формата PNG - что с ним дальше можно сделать? Можно было бы взять готовую библиотеку для чтения данного формата (libpng), но она содержит более 100 000 строк кода, что крайне сложно для понимания.

Я предполагаю, что более наглядным для изучения будет разглядывать такие картинки:

Здесь сразу видны байтики и их значение. По крайней мере, лично мне, такое изучение было бы наиболее близким и понятным. В этом месте можно назвать меня гуманитарием и посоветовать биореактор^Wчтение исходников, но это не так наглядно.

К сожалению, не все форматы файлов так хорошо описаны, как описан формат PNG. Далеко не для всех форматов файлов есть такие картинки и тем более шаблоны для hex-редакторов. И я бы хотел делать такие картинки самостоятельно.


Идея

Я предполагаю, что если для этого формата есть открытая библиотека (libpng), то для него можно написать свою читалку (my_png_reader). В свою очередь, у нашей библиотеки (libpng) могут быть свои зависимости (zlib) и я предполагаю, что нужно будет разобраться и с устройством этой библиотеки тоже.

Само собой, для тестирования, нужно будет собрать некий тестовый датасет (набор png-файлов с разными разрешениями, режимами компрессии, битые файлы). Для этого было бы неплохо использовать утилиты из набора AFL для уменьшения датасета и уменьшения самих исходных данных: https://youtu.be/0dqL6vfPCek (фаззинг файла вместе с ffmpeg)

Вопрос: как бы заинструментировать имеющийся софт (программу, библиотеки), чтобы понять, что такое оно делает с файлом, что внутри и как его вообще читать? Да и вообще, что можно вытащить из подобной затеи?

Например, очень бы хотелось узнать:

  • Сигнатуру файла (\x89PNG в начале файла)
  • Структуру «чанков», что она представляет собой 4 поля: длинна, тип, данные, CRC32
  • Алгоритм расчета CRC32: какая часть данных считается, с заголовком или без, какой полином
  • Какая часть файла пожата zlib, какие части файла просто являются несжатыми массивами
  • Нарисовать какую-то диаграмму, где какой байт чему соответстует, вроде https://i.imgur.com/eLd44xQ.png или https://i.imgur.com/AwpmSxV.png

Я себе это представляю как-то так:

  1. Читаем кусочек файла и помечаем, что это наш файл (перехватываем read/fread, «отравляем» эти участки памяти)
  2. Ставим брейтпоинт на чтение памяти, логгируем, смотрим по map-файлу где мы это читали, желательно размотать стек
  3. По коду уже можно представить, читаем мы float или int16, находимся ли в структурке или еще где. Если мы внутри функции check_file_signature(), то это вообще очевидно. Можно пометить как ручками, так и чем-то вроде IDA.

Зачем? Это поможет в написании файлов-шаблонов для таких программ как https://ide.kaitai.io/ или 010 Editor. Конечно, в идеале запустить на входе PNG-файл, а на выходе получить KSY (формат описания файлов kaitai) или BT (формат для 010 Editor), но понятно, что идеальной документации не будет. Но я стремлюсь именно к этому.

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

Буду благодарен на статьи просто по инструментации сишного кода. Или не только сишного.


Референсы и идеи

  • https://github.com/AFLplusplus/AFLplusplus - отличное средство для фаззинга (пример фаззинга libpng: https://youtu.be/LsdDRat4S0U), но я не очень понимаю как это применить именно к описанию файла. А вот тулзы вроде afl-cmin - чистое золото
  • https://www.intel.com/content/www/us/en/developer/articles/tool/pin-a-dynamic-binary-instrumentation-tool.html - Intel PIN
  • Address Sanitizer or ASAN - можно попробовать поиграться с ним и залоггировать доступ к памяти
  • valgrind + lackey - очень многообещающе, но боюсь не осилить
  • Попробовать сделать доступ к страничке PROT_NONE, получить сегфолт, но непонятно как возвращать управление (сделал, но споткнулся на последнем пункте)

 , , , ,

ruzisufaka
()

Помогите настроить OPENVPN c обфускацией

Форум — Admin

Ребят, подскажите по братски. Есть сервер с OPENVPN для частной ЛОКАЛЬНОЙ сети между компами (10 шт) Доступ идет чисто как локалка чтобы работало пару прог типа базы данных. Вот такой конфиг сервера и клиента

port 1194
proto udp
dev tap
#crl-verify /etc/openvpn/crl.pem
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem
server 172.28.55.0 255.255.255.0
route 172.28.55.1 255.255.255.0
push «route 172.28.55.1 255.255.255.0»
client-config-dir /etc/openvpn/ccd
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0
cipher AES-256-CBC
persist-key
persist-tun
client-to-client
push «dhcp-option DNS 172.28.0.1»
sndbuf 524288
rcvbuf 524288
push «sndbuf 524288»
push «rcvbuf 524288»
duplicate-cn
verb 4

. . .

Клиенты

. . .

client
remote ip.мое.го.серва 1194 
dev tap
proto udp
auth-nocache
nobind
persist-key
persist-tun
cipher AES-256-CBC
sndbuf 524288
rcvbuf 524288
verb 3
key-direction 1
<ca>
-----BEGIN CERTIFICATE-----
123
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
123
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
123
-----END PRIVATE KEY-----
</key>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
123
-----END OpenVPN Static key V1-----
</tls-auth>

Все работало более чем идеально, но в связи с тестами ТПСУ компы не видят друг друга. Помогите с настройками обфускации. чтобы на клиентских компах не ставить ничего нового.

 ,

Wosh
()

Embox v0.6.1

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

8 января 2024 года вышла очередная версия открытой операционной системы реального времени Embox.

Среди изменений:

  • Улучшена поддержка архитектуры AARCH64.
  • Улучшена поддержка архитектуры RISC-V.
  • Добавлена поддержка платы STM32F103 Blue Pill.
  • Добавлена поддержка платы Vostok Uno-VN035.
  • В язык Mybuild добавлена аннотация @NoCode.
  • Улучшена подсистема устройств (devices subsystem).
  • Переработана поддержка flash-устройств.
  • Переработана подсистема журналирования (Logger).
  • Улучшена поддержка STM32.
  • Переработан контроллер прерываний GIC.
  • В систему портирован проект libIEC61850 (реализация IEC 61850, стандарта сетей и систем связи на энергетических подстанциях).
  • Портирован Mbed TLS.
  • Множество других исправлений и улучшений.

>>> Подробности

 , ,

abondarev
()

Оставим любителям яблок их 8Gb как 16...

Галерея — Скриншоты

Пришел мой новый рабочий аппарат из Поднебесной.

На HP ожидаемо завелся Linux, и всё оборудование под этой ОС работает корректно.

Аппарат ожидаемо оказался тихим и легким. Странно, что в одном сервисе по по доставке товаров из-за рубежа он выставлен как HP Star Book 14 Pro, именно там я его и заказал. Подобных надписей на устройстве нет, по сути это HP Pavilion 14 Plus, о чем гласят надписи на корпусе.

В комплект поставки входит NVMe Solidigm на 2Tb, что так же отмечено только на сайте этой малоизвестной конторки, на маркетплейсах аппарат отмечен как оснащенный только 1Tb. Сначала меня насторожило название незнакомого бренда, но вот википедия сообщает нам, что Solidigm принадлежит Hynix и является бывшим подразделением Intel по производсву NAND-чипов.

Также есть вопрос, расширяется ли объем ОЗУ, поскольку в одних местах пишут что да, а в других что нет. Но вопрос о расширении оперативной памяти пока не актуален.

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

Теперь мой HP Elitbook 840 G8 отправляется в резерв.

Отличия от «старого» аппарата:

  • естественно актуальный CPU AMD Ryzen 7840H;
  • OLED экран 120Hz, 2880х1800;
  • встроенная камера дает приличное изображение, чего в «элитбуке» не наблюдалось;
  • рабочие температуры колеблются от 39 до 49 градусов, вместо 50-60 (на моих задачах естественно), если брать чисто практический аспект шума, «Рязань» тут работает потише;
  • естественно, более производительная встройка. Intel с какого то времени начала маркировть все видеокарты как Iris Xe, что явное лукавство, во всех процессорах это совершенно разные по возможностям устройства, AMD же честно пишет модель видеочипа.

Что напрягало, но удалось устранить:

  • Windows в поставке;
  • традиционный китайский язык в BIOS;
  • английская клавиатура, в итоге решил что поскольку владею слепым методом печати, просто научусь работать без русских букв.

Сейчас аппарат стоит ~87К рублей, считаю это отличной ценой за подобное устройство.

>>> Просмотр (2560x1440, 3580 Kb)

 , ,

user13
()

Immutable-дистрибутивы, что это такое, и с чем это едят?

Статьи — Desktop
Immutable-дистрибутивы, что это такое, и с чем это едят?

Начнем с простого

Как часто вы сталкиваетесь с ситуацией когда ваш любимый линукс вдруг перестает работать? А как часто после обновления выясняется что что-то отвалилось или вообще отказывается грузится?

Если вы один из таких «счастливчиков», то добро пожаловать в мир immutable-дистрибутивов! В этой статье мы наглядно разберем все плюсы и минусы, а также выясним, действительно ли immutable лучше традиционных дистрибутивов?

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

 , ,

Unixson
()

Вышел srsRAN 4G 23.11 — OpenSource-реализация стека 4G/LTE

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

Проект software radio systems Radio Access Network или srsRAN нацелен на реализацию стеков 4G/LTE и 5G. Ранее проект известен был как srsLTE.

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

>>> Подробности

 ,

Root-msk
()

Какая СУБД для OLAP?

Форум — Development

Добрый вечер. Скажите, пожалуйста, какие сейчас есть СУБД для OLAP? Нужно быстро крутить ~5ТБ, делать группировки и отдавать в BI. Единственное, что приходит в голову - затюненный под DWH Оракл. Ещё есть Кликхаус, но кажется, это немного локальный продукт. Т.к. важна скорость отклика, экосистема хадупа не подходит.

 , ,

Paka_RD
()

Нужны ваши мысли по code review

Форум — Development

Вообщем у меня есть один долгоживущий проект, посвященный теме ревью кода. Что он делает можно увидеть из этого gif

На данный момент, вся логика максимально отдалена от структур проекта, репозиториев, коммитов и всего такого, поэтому можно комментировать любой кусок кода или произвольный текст, что использовалось на практике для «тыкания носом» в выдержку из какого-нибудь лога или YAML-конфига.

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

Хотелось бы услышать ваши мысли и пожелания, в первую очередь по интерфейсу - как это должно выглядеть для максимального удобства проведения code review.

Например тот же Gerrit мне всегда казался слишком сложным и его использование на практике в коммерческой разработке я не видел.

 ,

alex0x08
()

В чем фишка Qt Quick

Форум — Development

Изучаю Qt. Вижу, что есть два подхода к разработке приложения: Qt Widgets и Qt Quick. Судя по всему за Qt Quick активно топят. На официальной странице нашел сравнение этих технологий. И вроде как пишут, что Qt Quick для стильных модных молодежных, а Qt Widgets если не Deprecated, то для старперов. На всяких Reddit-ах тоже активно нахваливают QML.

Интуитивно кажется, что Quick потянет за собой либо какой-то встроенный интерпретатор JavaScript, либо какой-то хитрый компилятор, но в любом случае добавит накладные расходы на взаимодействие между JavaScript и C++ кодом. Кажется, что это будет работать медленнее, чем если всё написано сразу на C++.

С другой стороны, если хочется быстрой разработки, чтобы раз-два и в продакшен - это же точно не про C++. Для этого есть Electron или Web в браузере. C++ для GUI, на мой взгляд, имеет смысл выбирать только если хочется максимальной производительности и минимального расхода ресурсов, а сроки разработки не особо важны.

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

Поэтому возникает вопрос: какой практический смысл в Qt Quick?

 , ,

Goganchic
()

Claim to support the GTK_FRAME_EXTENTS (enables full GTK CSD)

Галерея — Скриншоты

Поддержка клиентского декорирования GTK добавлена в openbox. Pull-request с соответсвующим заголовком уже месяц остается без внимания. Результат на снимке. Исходники взяты из ветки work по адресу https://github.com/Mikachu/openbox.

>>> Просмотр (1680x1050, 170 Kb)

 ,

zombi_pony
()

GUI best practices

Форум — Development

А есть ли какие-то best practices, если не стандарты для современного UI? Я не имею в виду всякие бензоколонки и терминалы самообслуживания в магазинах, а системы для компов общего назначения. Например, в классическом UI из 90х есть модели SDI/MDI, есть понятие главного меню, как должны выглядеть и вести себя пункты этого меню, есть тулбары, статус-бар и проч. джентльменский набор.

А для современного UI например на электроне есть подобное или кто как хочет, так и дрочит /// или разраб электрона уже всё на ходу «стандартизировал», а разраб только использует, что дают?

 

seiken
()

Утечки памяти в golang приложении - как найти?

Форум — Development

Изучаю сетевое программирование в golang, нашел в каком-то блоге вот такой пример websocket чат-сервера. Как он работает - вполне понятно - тупо бродкастит сообщения от клиентов. Но почему после нескольких коннектов ядро прибивает процесс из-за OOM - не могу разобраться. Вроде все ресурсы освобождаются, каналы закрываются. Пробовал проанализировать кучу с помощью pprof - не могу поймать момент, когда происходит утечка. Как вообще отлаживаются подобные ошибки в go?


package main

import (
  "encoding/json"
  "fmt"
  "net"
  "net/http"

  "github.com/gorilla/websocket"
  uuid "github.com/satori/go.uuid"
)

//Client management
type ClientManager struct {
  //The client map stores and manages all long connection clients, online is TRUE, and those who are not there are FALSE
  clients map[*Client]bool
  //Web side MESSAGE we use Broadcast to receive, and finally distribute it to all clients
  broadcast chan []byte
  //Newly created long connection client
  register chan *Client
  //Newly canceled long connection client
  unregister chan *Client
}

//Client
type Client struct {
	//User ID
	id string
	//Connected socket
	socket *websocket.Conn
	//Message
	send chan []byte
}

//Will formatting Message into JSON
type Message struct {
	//Message Struct
	Sender    string `json:"sender,omitempty"`
	Recipient string `json:"recipient,omitempty"`
	Content   string `json:"content,omitempty"`
	ServerIP  string `json:"serverIp,omitempty"`
	SenderIP  string `json:"senderIp,omitempty"` 
}

//Create a client manager
var manager = ClientManager{
	broadcast:  make(chan []byte),
	register:   make(chan *Client),
	unregister: make(chan *Client),
	clients:    make(map[*Client]bool),
}

func (manager *ClientManager) start() {
  for {
    select {
    //If there is a new connection access, pass the connection to conn through the channel
    case conn := <-manager.register:
      //Set the client connection to true
      manager.clients[conn] = true
      //Format the message of returning to the successful connection JSON
      jsonMessage, _ := json.Marshal(&Message{Content: "/A new socket has connected. ", ServerIP: LocalIp(), SenderIP: conn.socket.RemoteAddr().String()})
      //Call the client's send method and send messages
      manager.send(jsonMessage, conn)
      //If the connection is disconnected
    case conn := <-manager.unregister:
      //Determine the state of the connection, if it is true, turn off Send and delete the value of connecting client
      if _, ok := manager.clients[conn]; ok {
      	close(conn.send)
      	delete(manager.clients, conn)
      	jsonMessage, _ := json.Marshal(&Message{Content: "/A socket has disconnected. ", ServerIP: LocalIp(), SenderIP: conn.socket.RemoteAddr().String()})
      	manager.send(jsonMessage, conn)
      }
    	//broadcast
    case message := <-manager.broadcast:
    	//Traversing the client that has been connected, send the message to them
    	for conn := range manager.clients {
          select {
          case conn.send <- message:
      	  default:
      	    close(conn.send)
            delete(manager.clients, conn)
      	  }
    	}
    }
  }
}

//Define the send method of client management
func (manager *ClientManager) send(message []byte, ignore *Client) {
  for conn := range manager.clients {
    //Send messages not to the shielded connection
    if conn != ignore {
      conn.send <- message
    }
  }
}

//Define the read method of the client structure
func (c *Client) read() {
  defer func() {
    manager.unregister <- c
    _ = c.socket.Close()
  }()

  for {
    //Read message
    _, message, err := c.socket.ReadMessage()
    //If there is an error message, cancel this connection and then close it
    if err != nil {
    	manager.unregister <- c
    	_ = c.socket.Close()
    	break
    }
    //If there is no error message, put the information in Broadcast
    jsonMessage, _ := json.Marshal(&Message{Sender: c.id, Content: string(message), ServerIP: LocalIp(), SenderIP: c.socket.RemoteAddr().String()})
    manager.broadcast <- jsonMessage
  }
}

func (c *Client) write() {
  defer func() {
    _ = c.socket.Close()
  }()

  for {
    select {
    //Read the message from send
    case message, ok := <-c.send:
      //If there is no message
      if !ok {
        _ = c.socket.WriteMessage(websocket.CloseMessage, []byte{})
        return
      }
      //Write it if there is news and send it to the web side
      _ = c.socket.WriteMessage(websocket.TextMessage, message)
    }
  }
}

func main() {
	fmt.Println("Starting application...")

	//Open a goroutine execution start program
	go manager.start()
	//Register the default route to /ws, and use the wsHandler method
	http.HandleFunc("/ws", wsHandler)
	http.HandleFunc("/health", healthHandler)
	//Surveying the local 8011 port
	fmt.Println("chat server start.....")
	//Note that this must be 0.0.0.0 to deploy in the server to use
	_ = http.ListenAndServe("0.0.0.0:8448", nil)
}

var upgrader = websocket.Upgrader{
  ReadBufferSize:  1024 * 1024 * 1024,
  WriteBufferSize: 1024 * 1024 * 1024,
  //Solving cross-domain problems
  CheckOrigin: func(r *http.Request) bool {
    return true
  },
}

func wsHandler(res http.ResponseWriter, req *http.Request) {
  //Upgrade the HTTP protocol to the websocket protocol
  conn, err := upgrader.Upgrade(res, req, nil)
  if err != nil {
    http.NotFound(res, req)
    return
  }

  //Every connection will open a new client, client.id generates through UUID to ensure that each time it is different
  client := &Client{id: uuid.Must(uuid.NewV4(), nil).String(), socket: conn, send: make(chan []byte)}
  //Register a new link
  manager.register <- client

  //Start the message to collect the news from the web side
  go client.read()
  //Start the corporation to return the message to the web side
  go client.write()
}

func healthHandler(res http.ResponseWriter, _ *http.Request) {
  _, _ = res.Write([]byte("ok"))
}

func LocalIp() string {
  address, _ := net.InterfaceAddrs()
  var ip = "localhost"
  for _, address := range address {
    if ipAddress, ok := address.(*net.IPNet); ok && !ipAddress.IP.IsLoopback() {
      if ipAddress.IP.To4() != nil {
        ip = ipAddress.IP.String()
      }
    }
  }
  return ip
}

 , ,

C
()

Добавить фичу в /proc/cpuinfo для работоспособности эмуляции SSE4.2

Форум — Development

Суть такова, программа определяет что у меня мой Phenomчик не умеет в sse4.2 говорит про это и всё дальше не работает.
А мне надо чтобы она валилась на traps illegal instruction.

Чуть расширенная суть csgo обновилась до cs2 и теперь на моём Phenom2 X6 не работает.

Завёл issue

И там человек посоветовал попробовать модуль ядра opemu-linux для эмуляции недостающих инструкций и попутно он его подправил для сборки на свежих ядрах.
Им (удобно) я определил что валится игра на инструкциях: Типа

OPEMU:  pmaxud xmm0, xmm1
traps: cs2[blabla] trap invalid opcode
...
OPEMU:  pminud xmm0, xmm1
traps: cs2[blabla] trap invalid opcode

Как видно нужные инструкции в этом модуле не реализованы и я кое как добавил в ядромодуль эмуляцию этих инструкций, благо они простые, найти в двух 128 битных регистрах максимальные 32 битные значения и вернуть их, а теперь ксДва грит

Launcher Error: A CPU that supports the `SSE4.2` instruction set is required.

А мне надо чтобы именно что программа бы падала на invalid opcode/illegal instruction а для этого программе надо соврать что процессор умеет SSE4.2 =) Вроде можно было фичи процессора подменять не, ну в смысле без правки ядра? В голове усердно торчит мысль что можно, но как не вспомню, гуглить не получается, сырцы сейчас рыть лень просто хочется ответа, голёва болит, носъ пихтит, горьло как сарделька, болякаю ой нимагу, пожалейте, подскажити болезному боляке йуууууу.

Да знаю я что можно просто через objdump получить все инструкции и вычислить те что не хватает дело не в этом.

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

 cpu feachures, , , sse4.2,

LINUX-ORG-RU
()

Как ограничить скорость, отдельным зарвавшимся IP, с помошью TC

Форум — Admin

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

Показалось более понятно совет коллеги @Pinkbyte отсюда Как ограничить скорость трафика с конкретным ip адресом? (комментарий) сделал все как он советует, потом наткнулся на вопрос @gobot проштудировал его пост Ограничение скорости, все вроде перепроверил, счетчики ростут никакого ограничения скорости не наблюдаю, может кто кинет какой примерчик.

Мне надо временно ограничить именно входящий трафик на сервере Fedora34 качальщикам клиентам.

 ,

alex_sim
()

Описать в dts устройство на шине PCI

Форум — Development

Например, у меня есть устройство 0001:01:00.0, я хочу его поконфигурировать через dts. Как это сделать?

У меня в dts есть описание нужного контроллера, pcie@ffкакой-то адрес. Описание устройства нужно вставить внутрь? А что указать, чтобы компьютер понял, что речь об устройстве 0 на шине 1?

 ,

anarquista
()

А нужен ли Wayland?

Форум — Desktop

На фоне Arch Wiki

Да, пока установка xorg-server для нуба нетривиальна (кроме пользователей Arch). Нужно скачать исходники с git, собрать, поставить, не забыть зависимости, но!..

Недокомпозиторы в виде Picom теперь не заставляют выть вентиляторы ноута, Firefox пишет - Compositing - WebRender (чего не было на xf86-intel и его можно выбросить), а «Картинка - ожила»! Никакого разрыва, всё гладко, кадр - идеален :) Нет глюков с нестандартными раскладками под Wayland, нет глюков с отрисовкой меню, нет проблем с размерами шрифта, можно share screen, и всё это на любимом Xmonad…

А патч принимали 7 месяцев, а версию нам ждать и ждать (мы знаем, почему).

Так нужен ли Wayland?

 , ,

Neuromagus
()

Курсы QA

Форум — Development

Есть чего годного по курсам QA (тестировщик)? Или литературу накидайте годную чтоли...

 ,

untitl3d
()