По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Каждое семейство операционных систем производит загрузку по-своему. Это связанно с различной архитектурой ядра операционной системы, разными инструкциями по работе с подключенными устройствами. В данной статье попробую разобрать загрузку популярной операционной системы на ядре Linux Ubuntu.
Схематично процесс загрузки можно отобразить следующим образом.
Загружаемся
Итак, Нажимаем кнопку включения компьютера, и центральный процессор переходит на адрес BIOS. BIOS или UEFI, в более современных компьютерах, проводит систему проверок и выбирает носитель информации с которого будет производится загрузка операционной системы. На носителе находится MBR (Master Boot Record) или GPT (Guid Partition table) на новых компьютерах в которых находится загрузчик. А дальше уже в зависимости от настройки. Загрузчик может самостоятельно загружать операционную систему, а может передавать управление следующему загрузчику. Например, если Windows и Linux установлены на одном компьютере и находятся на разных разделах жесткого диска.
В любом случае, если идет речь о Linux у нас есть первая стадия с небольшой частью кода, которая загружает у нас загрузчик. Загрузчик знает где лежит ядро операционной системы, загружает ядро, загружает initial run disk, там находятся необходимые файлы и модули для загрузки ядра. Далее уже ядро берет процесс управления на себя. Происходит инициализация устройств, конфигурирование процессов памяти и так далее. После всех этих процессов ядро запускает процесс init.
Вернемся к вопросу загрузчиков, для каждой операционной системы разработан свой загрузчик, а иногда и несколько. NTLDR - Загрузчик операционной системы Windows, LILO - один из стандартных загрузчиков для Linux и BSD системы. GRUB - загрузчик операционной системы от проекта GNU. Нас интересуют последние два. Данные загрузчики работают в два этапа. На первом этапе у них крошечный код на MBR или GPT, который запускает исполнение кода второго этапа.
Перейдем непосредственно к самой загрузке.
Данное меню мы можем получить при загрузке если зажать клавишу Shift. Как видно на картинке в данном примере загрузчик GRUB версии 2.04. У нас есть несколько вариантов. Загрузка Ubuntu по умолчанию и вариант загрузки с расширенными опциями. В нашем случае расширенные опции не дают многого, а всего лишь позволяют начать загрузку в режиме восстановления recovery mode. Данная опция не является целью стати, и мы ее опустим. Вернемся к первому пункту загрузки. Выбираем, нажимаем "e" получаем следующую картину загрузки.
На данной картинке можно увидеть, что корневой раздел монтируется по uuid, он будет корневым root и непосредственно сам id. ID раздела можно посмотреть после загрузки операционной системы командой blkid. Можно часть параметров отредактировать или большинство. Более подробно можно поискать в интернете. По нажатию F10 осуществляется продолжение загрузки операционной системы.
После загрузки операционной системы, мы можем с помощью команды dmesg посмотреть, сообщения ядра, все что происходило с ядром. Нужно различать сообщения ядра и лог ядра. Который можно посмотреть cat /var/log/dmesg. Данный файл содержи информацию только о загрузке операционной системы. В данном файле содержится информация с самого начала загрузки операционной системы и до конца. Если событие происходит позднее, то в данном файле этой информации вы не найдете.
Система инициализации ОС
Есть такое понятие Init - это первый или родительский процесс, который запускает все последующие процессы. Это может быть проверка и монтирование файловых систем запуск служб и.т.д. Существует 3 варианта работы этого родительского процесса.
Init в стиле SysV - родительский процесс инициализации системы на одном из заданных уровней запуска (runlevel); Т.е. есть несколько уровней загрузки (runlevel) обычно их 7 штук. Один из них - это обычный многопользовательский режим. Другие это выключение компьютера, перезагрузка, режим восстановления и т.д.
Init в стиле systemd - родительский процесс инициализации системы в ускоренном режиме, за счёт параллельного запуска задач; Ускоренный режим достигается за счет использования процессора в частности Intel, который позволяет запускать процессы инициализации параллельно. К этому режиму есть еще куча софта библиотек, которые расширяют функционал.
Init в стиле Upstart - родительский процесс инициализации системы на основе отслеживания событий; Данный режим используется на Ubuntu уже давным - давно, тут не только запускаются скрипты инициализации, но и запускаются скрипты отслеживания событий и реагирования на них. Т.е. это более гибкий процесс инициализации, например, если какая-то служба не запустилась или упала в процессе загрузки то, upstart умеет это отследить и запустить это повторно
В операционной систему Ubuntu можно посмотреть дерево процессов использую команду pstree. В результате ее вывода мы можем увидеть, что родительским процессом являлся процесс systemd. Который запускал уже свои, какие-то дочерние процессы. Перейдем в корневую директорию boot.
Здесь мы можем увидеть директорию загрузчика grub. Ядра линуксовые vmlinuz (ссылка на ядро) и до обновления старое ядро vmlinux.old (ссылка на старое ядро). Соответственно пара initrd* - файлы диска, эти файлы содержат диск, который грузится в оперативную память, данный диск содержит файлы необходимые самому ядру Linux для нормальной загрузки.
Перейдя в директорию grub, мы можем найти конфигурационный файл grub.cfg и несколько вспомогательных, но не менее важных фалов. Соответственно мы можем внести изменения в данный файл на постоянной основе и соответственно данный код будет выполнятся при каждой загрузке операционной системы.
Компания Cisco сейчас, безусловно, является лидером среди производителей сетевого оборудования, однако немалую часть этого рынка занимает оборудование компаний Huawei и Juniper, в которых команды для CLI отличаются от команд в Cisco IOS. Поэтому, мы собрали в таблицы основные и наиболее часто используемые команды для траблшутинга у Cisco и привели их аналоги в Huawei и Juniper. Поэтому, если вы знакомы с системой IOS, то эта таблица поможет на начальных этапах освоиться в других ОС.
Список основных команд, конечно, шире, поэтому если мы забыли упомянуть какие-то команды, напишите их комментариях.
Cisco
Huawei
show
display
traceroute
tracert
configure terminal
system-view
exit
quit
end
return
no
undo
reload
reboot
erase
delete
hostname
sysname
enable
super
disable
super 0
write memory / copy running-config startup-config
save
show ip route
display ip routing-table
show flash
dir flash:
clear
reset
show logging
display logbuffer
write terminal / show run
display current-configuration
show startup
display saved-configuration
show tech
display diagnostic-information
show ip nat translation
display nat session
enable secret
super pass cipher
snmp-server
snmp-agent
router ospf
ospf
router rip
rip
router bgp
bgp
show ospf neighbours
display ospf peer
show interfaces
display interface
show version
display version
show history
display history-command
show access-list
display acl all
shop ip nat translations
display nat session all
show mac address-table
display mac-address
show spanning-tree
display stp
debug / no debug
debugging / undo debugging
Получается как-то так. А если сравнить команды Cisco и Juniper?
Cisco
Juniper
show run
show configuration
show history
show cli history
show running-config
show configuration
show ip route
show route
show ip interface brief
show interface terse
show controller
show interfaces intfc extensive
show tech-support
request support info
reload
request system reboot
clock set
set date
show ip bgp
show route protocol bgp
show ip bgp neighbors
show ip bgp neighbor
show ip bgp summary
show bgp summary
clear ip bgp
clear bgp neighbor
show ip ospf database
show ospf database
show ip ospf interface
show ospf interface
show ip ospf neighbor
show ospf neighbor
show ip traffic
show system statistic
show logging
show log
no
delete
Конфигурация вашей сетевой карты напрямую влияет, насколько эффективно взаимодействуют ваши сервера.
Необходимо понимать, как настройки автосогласования, скорости и дуплекса влияют на передачу данных, чтобы успешно поддерживать сетевое соединение. А также расскажем про дополнительные фичи, которые помогут находить и устранять сетевые неполадки.
В этой статье вы узнаете, как изменить настройки скорости, дуплекса и автосогласования в Linux с помощью команд ethtool.
Что такое полудуплекс, полный дуплекс и автосогласование?
Полудуплексный режим (Half-duplex) позволяет устройству отправлять или получать пакеты по очереди. Устройство, установленное в этот режим, не может выполнять оба действия одновременно.
Когда режим устройства находится в полнодуплексном режиме (Full-duplex), он также может отправлять и получать пакеты одновременно.
Автосогласование (Auto-Negotiation) - это механизм, с помощью которого устройство автоматически выбирает наиболее эффективный режим передачи на основе характеристик своих аналогов. Рекомендуется оставить автосогласование включенным, поскольку оно позволяет устройствам выбирать наиболее эффективные средства для передачи данных.
Что такое дуплексное несоответствие?
Такое происходит когда устройство с включенным автосогласованием подключается к устройству, которое не использует автосогласование. Конец соединения с активным автосогласованием все еще может определить скорость другого конца, но не может правильно определить дуплексный режим. Как правило, конец соединения с автоматическим согласованием будет использовать полудуплекс, тогда как другой конец может быть в дуплексном режиме. Эта ситуация считается дуплексным несоответствием (duplex mismatch).
Несоответствие дуплекса не прекращает связь полностью. Передача отдельных пакетов и небольших объемов данных не вызывают больших проблем. Однако при отправке большого объема данных с любого конца скорость значительно падает. Соединение работает, но производительность снижается, поскольку скорость передачи данных асимметрична и может привести к потере пакетов.
Как использовать команду Ethtool для настройки параметров сетевого адаптера
Ethtool - это команда конфигурации платы сетевого интерфейса, которая позволяет вам получать информацию и изменять настройки сетевого адаптера. Эти настройки включают скорость, дуплекс, автосогласование и многие другие параметры.
Помимо этого, ethtool используется для:
Получения идентификационной и диагностической информации
Получения расширенной статистики устройства
Контроля контрольной суммы
Контроля размеров кольца DMA и модерации прерываний
Контроля выбора очереди приема для устройств с несколькими очередями
Обновления прошивки во флеш-памяти
Для установки ethtool используйте следующие команды:
yum install ethtool [в Fedora, CentOS, RHEL]
sudo apt-get install ethtool [в Ubuntu, Debian]
Чтобы продолжить, вам нужно знать имя вашей сетевой карты.
Чтобы найти имя вашей сетевой карты, введите в командном терминале следующую команду:
ifconfig
Вывод покажет нам имя сетевой карты устройства.
enp0s3 Link encap:Ethernet HWaddr 00:1A:2B:3C:4D:5E
Теперь, когда вы определили имя устройства, проверьте текущие настройки скорости, автосогласования и дуплексного режима с помощью команды: ethtool имя_устройства.
В нашем конкретном примере команда выглядит так:
ethtool enp0s3
Выходные данные показывают, что текущая скорость равна 1000 Мбит/с, что дуплекс находится в режиме «Full», и что автосогласование включено.
Изменение настроек сетевого адаптера
Команда ethtool –s может использоваться для изменения текущих настроек путем определения значений скорости speed, дуплекса duplex и автосогласования autoneg в следующем формате:
sudo ethtool –s [device_name] speed [10/100/1000] duplex [half/full] autoneg [on/off]
Например, чтобы установить скорость 1000 Мбит/с, дуплексный режим - «полный», а автоматическое согласование - «включено», команда будет выглядеть так:
sudo ethtool –s enp0s3 speed 1000 duplex full autoneg on
Команда ethtool [имя_устройства] необходима для подтверждения того, что изменения были применены.
Сохранение настроек
Изменения, сделанные с помощью Ethtool, по умолчанию отменяются после перезагрузки системы.
Чтобы применить пользовательские настройки при каждой загрузке системы, отредактируйте файл для интерфейса устройства:
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
Добавьте нужные значения в виде строки в конце файла, используя следующий синтаксис:
ETHTOOL_OPTS="speed [100|1000|10000] duplex [half|full] autoneg [on|off]”
Например:
ETHTOOL_OPTS="speed 1000 duplex full autoneg on”
Сохраните изменения и выйдите из файла.
Теперь изменения применяются после каждой перезагрузки и являются постоянными, если файл не будет изменен снова.
Просмотр статистики интерфейса
Если вы хотите получить статистику о вашей сетевой карте, введите команду:
sudo ethtool -S имя_устройства
Вывод этой команды будет выглядеть так:
NIC statistics:
rx_packets: 108048475
tx_packets: 125002612
rx_bytes: 17446338197
tx_bytes: 113281003056
rx_broadcast: 83067
tx_broadcast: 1329
rx_multicast: 3
tx_multicast: 9
rx_errors: 0
tx_errors: 0
tx_dropped: 0
multicast: 3
collisions: 0
rx_length_errors: 0
rx_over_errors: 0
rx_crc_errors: 0
rx_frame_errors: 0
rx_no_buffer_count: 0
rx_missed_errors: 0
tx_aborted_errors: 0
tx_carrier_errors: 0
tx_fifo_errors: 0
tx_heartbeat_errors: 0
tx_window_errors: 0
tx_abort_late_coll: 0
tx_deferred_ok: 0
tx_single_coll_ok: 0
tx_multi_coll_ok: 0
tx_timeout_count: 0
tx_restart_queue: 2367
rx_long_length_errors: 0
rx_short_length_errors: 0
rx_align_errors: 0
tx_tcp_seg_good: 0
tx_tcp_seg_failed: 0
rx_flow_control_xon: 0
rx_flow_control_xoff: 0
tx_flow_control_xon: 0
tx_flow_control_xoff: 0
rx_long_byte_count: 17446338197
rx_csum_offload_good: 107876452
rx_csum_offload_errors: 2386
rx_header_split: 0
alloc_rx_buff_failed: 0
tx_smbus: 0
rx_smbus: 0
dropped_smbus: 0
rx_dma_failed: 0
tx_dma_failed: 0
Использование приведенной выше команды - отличный способ устранения проблем с конкретной сетевой картой.
Физическое расположение конкретного сетевого адаптера
Вот действительно полезный трюк, который предлагает ethtool: допустим у вас есть сервер с несколькими сетевыми картами, и одна из них работает со сбоями, но вы не уверены, какая именно это карта. Вы можете использовать ethtool, чтобы заставить мигать индикатор сетевого адаптера, чтобы определить, какой сетевой адаптер вам нужен. Скажем, если вы хотите мигать светодиодом устройства Ethernet enp0s3 в течение 15 секунд - команда для этого будет выглядеть так:
sudo ethtool -p enp0s3 15
Светодиод начнет мигать, чтобы вы знали, с какой картой вы имеете дело.
Тестирование сетевой карты
Команда ethtool предлагает пару удобных тестов, которые вы можете запустить на сетевой карте:
Online - тесты nvram и тест ссылок
Offline - тестирует регистр, память, loopback, прерывание
Давайте запустим онлайн-тест на нашей сетевой карте. Эта команда выглядит так:
sudo ethtool -t enp0s3 online
После выполнения команда покажет нам результаты:
Учтите, что некоторые устройства не поддерживают offline тестирование.
Информация о драйвере
Чтобы узнать имя драйвера и связанную информацию о драйвере используйте:
ethtool -i eth0
Вывод:
driver: via-rhine
version: 1.5.0
firmware-version:
bus-info: 0000:00:06.0
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
Заключение
Следуя этому руководству, вы успешно изменили настройки своей сетевой карты с помощью команд ethtool. Вы также лучше поняли, как режимы автосогласования и дуплекса влияют на производительность сервера. И заодно узнали пару интересных функций команды ethtool.