27.05.13
26.05.13
запуск virtualbox в другой tty
#Вот этот полезный алиас запускает virtualbox с машиной XP на отдельной виртуальной консоли,
в отдельном экземпляре X-сервера, очень удобно и выглядит будто машина запушена на
реальной аппаратуре
alias startXP="xinit /usr/bin/VirtualBox --startvm \"WinXP\" --fullscreen -- /usr/bin/Xorg :1"
Те, кто работает админом и занимается тех.поддержкой пользователей в крупных конторах, часто сталкиваются с необходимостью держать на рабочей машине Windows наряду с любимой ОС — в данном случае Debian GNU/Linux. Задачи, вынуждающие ставить винду могут быть разными. Средства тоже: кто-то ставит VMWare, кто-то qemu, я пользуюсь VirtualBox. В общем виртуальными машинами сейчас никого не удивить. Я хочу поделиться с людьми небольшим, но очень удобным финтом.
VirtualBox, как большинство современных VM умеет работать в так называемом headless-режиме, то есть без графической оболочки. Для доступа к консоли гостевой ОС в этом случае используется протокол VRDP.
Что мне не нравится в дефолтной схеме использования виртуальной машины. В процессе работы иногда приходится перезапускать иксы. И, как следствие этого, умирает виртуальная машина. Потом она снова нужна, снова ее запускаем, ждем когда загрузится винда — довольно муторно. Для решения этой проблемы я сделал следующее. В файл /etc/rc.local дописал следующие строчки:
su rigid -c "VBoxHeadless -a 127.0.0.1 -s WinXP" &
X :1 vt08 &
DISPLAY=":1" rdesktop-vrdp -f localhost &
Что делают эти строки. Сначала запускается сам VirtualBox в headless режиме с образом WinXP. При этом VRDP биндится только на локальный адрес 127.0.0.1 — чтобы нельзя было подключиться к морде мирт.машины извне. Затем запускается вторая копия X-сервера на восьмой консоли. И, наконец, в окружении только что запущенного X-сервера запускается VRDP-клиент в полноэкраннном режиме и подключается к уже запущенной машине.
Что в итоге я получил.
- Виртуальная машина не привязана к моей рабочей X-сессии, можно перезапускать иксы сколько вздумается, не прерывая работу вирт.машины.
- Морда винды рисуется на отдельную консоль в полноэкранном режиме. Есть возможность быстро переключаться между виндовой и гномьей сессиями стандартными сочетаниями: Ctrl-Alt-F7 и Ctrl-Alt-F8
Таким образом можно запустить не одну а несколько гостевых систем и повесить их морды на разные консоли (VBoxHeadless умеет менять порт, на который биндится). Кроме того, таким же образом можно запустить гостевые системы на отдельном мощном сервере, а на своей рабочей станции только рисовать к ним морды. В общем, насколько хватит фантазии.
25.05.13
Настройка fancontrol - демона управления вентиляторами компьютера
Надоело слушать постоянное жужжание домашнего компьютера, поэтому решил
заняться вопросом. Первым делом были закуплены и установлены тихие
вентиляторы на процессор и корпус.
Шум хоть и стал меньше, меня он всё равно не устроил. Компьютер и, соответственно, корпус у меня 2006 года, поэтому что-либо совсем уж тихое найти было сложновато. Опытным путём было выяснено, что больше всего шума даёт корпусной вентилятор (для этого достаточно на секунду остановить все вентиляторы поочерёдно пальцем или другим подходящим предметом). Поскольку на вентиляторе имелся не только стандартный 3-контактный разъём, но и разъём Molex, нашлось простое решение - перекинуть контакты, так чтобы снизилось питающее вентилятор напряжение. Подробнее это можно увидеть в разделе "Подключение вентиляторов" из статьи "Конструируем систему охлаждения компьютера". Жёлтый провод я всё-же воткнул в 3-контактный разъём на положенное место, дабы следить за скоростью вращения вентилятора, о чем будет написано чуть ниже.
Вторым кандидатом на настройку стал вентилятор процессора. В BIOS я узнал, что моя материнская плата поддерживает функцию PWM - управление скоростью вращения вентилятора в зависимости от показаний температурного датчика. Простейшее трёхскоростное управление я настроил прямо из BIOS, и если оно вас устроит, то нужды настраивать fancontrol в принципе нет. Меня эти три режима не устроили, захотелось более плавного разгона вентилятора по мере нагревания процессора.
Поскольку я пользуюсь Linux (Debian 6), то и настраивать управление будем в нём.
Первым делом, установим пакет для слежения за сенсорами и запустим обнаружение сенсоров:
Чтобы не перезагружать систему, загрузим эти модули вручную. У меня был добавлен модуль it87, поэтому я подгружаю его:
Теперь установим пакет для управления скоростью вращения вентиляторов.
Дальше программа по очереди пытается остановить каждый из вентиляторов и пытается по сенсорам вращения вентиляторов установить соответствие между устройством управления скоростью вращения вентилятора и связанным с ним сенсором.
У меня было обнаружено только одно соответствие:
То же самое произошло и с устройством hwmon1/device/pwm3. Я также ответил n.
Затем программа говорит о том, что программа fancontrol может следить за температурой устройств, управляя скоростью вращения вентиляторов. pwmconfig предлагает мне настроить fancontrol. Я соглашаюсь.
Пункт 3 позволяет просто выйти.
Пункт 4 - сохранить настройки и выйти.
Пункт 5 - показать конфигурацию.
Выбираем пункт 1, чтобы указать, какой из сенсоров температуры следует использовать для управления вентилятором. У меня таких сенсоров 4, я выбираю первый из них, который соответствует сенсору температуры на процессоре.
Дальше нужно ответить на несколько простых вопросов. Нам понадобится составленная выше таблица зависимости скорости вращения вентилятора от значения управляющего сигнала и немного здравого смысла. Судя по таблице, вентилятор работает на максимальной скорости уже при значении сигнала управления 105. Останавливается он при значении 2, а запускается при значении 4 (это я смог узнать только пробуя разные значения этого параметра в конфигурации fancontrol).
Как я выбирал предельные температуры? Очень просто - температура воздуха дома сейчас около 30 градусов Цельсия (на системнике висит магнит с термометром). Не вижу смысла насиловать кулер, заставляя его охлаждать процессор простым обдувом комнатным воздухом до 30 градусов или ниже - это просто невозможно. Накидываю 5 градусов и считаю такую температуру процессора нормальной. Пока температруа процессора ниже 35 градусов, включать охлаждение особого смысла нет. Включать его на полную мощность следует только при той температуре, при которой BIOS начнёт предупреждать о перегреве звуковым сигналом. У меня это 60 градусов Цельсия. Пока не достигнута эта температура, разгоняем вентилятор плавно, не в полную силу.
Все эти настройки вносятся в файл /etc/fancontrol, где их можно отредактировать вручную:
С такими настройками я могу редактировать тексты при полностью остановленном вентиляторе. При полной загрузке процессора температура его поднимается до 45 градусов и держится на этом уровне стараниями fancontrol.
Я пользуюсь XFCE и нашёл для него два интересных плагина для более удобного наблюдения за температурой и процессором: xfce4-cpufreq-plugin и xfce4-sensors-plugin.
Установим их вместе с другими рекомендованными пакетами:
Рядом с двумя индикаторами температур (процессора и жёсткого диска) удобно разместился индикатор текущей частоты процессора. Мой процессор умеет вдвое уменьшать свою рабочую частоту, когда он не сильно загружен - с 2 Гигагерц до 1 Гигагерца.
Впрочем, я не стремлюсь превратить свой компьютер в кабину самолёта, поэтому эти апплеты будут висеть в панели лишь некоторое время, пока конфигурация может потребовать доработки. Затем я скорее всего уберу эти апплеты, поскольку никакой жизненно важной информации они не предоставляют.
После всех этих манипуляций самым громким источником шума стал старенький жёсткий диск Seagate на 4,3 Гигабайта, на котором у меня установлена Windows XP. Во время работы он издаёт раздражающий свист. Осталось перенести Windows XP на менее шумный жёсткий диск WD на 1 Терабайт, где у меня установлена основная система - Debian GNU/Linux 6.0.
Вот пример одного из моих /etc/fancontrol:
расшифровка переменных такая:
INTERVAL - интервал (в секундах), с которым демон Fanconfig просыпается и перенастраивает скорость вращения вентиляторов, в зависимости от температуры
DEVPATH, DEVNAME, FCTEMPS, FCFANS - устройства, которыми управляет и которые мониторит fanconfig, в частности, в моем конфиге изменяется pwm2
в зависимости от temp1 и fan2
Дальше описывается как вести себя вентилятору:
MINTEMP - минимальная температура (если температура меньше, то скорость вращения вентилятора принимает значение MINSTOP, если равно - MINSTART)
MAXTEMP - максимальное значение температуры (если температура меньше, скорость вращения вентилятора принимает среднее значение, между максимально-возможной (параметр MAXPWM, если указан) и MINSTART, температура больше или равна MAXTEMP - вентилятор работает на полную катушку)
Параметр MAXPWM может отсутствовать, если вы выбрали значение по-умолчанию (255), во время настройки pwmconfig, он нужен чтобы ограничить максимальную скорость вращения вентилятора, независимо от его возможностей.
Мой конфиг
dima@katty ~ $ cat /etc/fancontrol
# Configuration file generated by pwmconfig, changes will be lost
INTERVAL=10
DEVPATH=hwmon1=devices/platform/it87.656
DEVNAME=hwmon1=it8712
FCTEMPS= hwmon1/device/pwm1=hwmon1/device/temp1_input
FCFANS= hwmon1/device/pwm1=hwmon1/device/fan1_input
MINTEMP= hwmon1/device/pwm1=40
MAXTEMP= hwmon1/device/pwm1=60
MINSTART= hwmon1/device/pwm1=90
MINSTOP= hwmon1/device/pwm1=0
MAXPWM= hwmon1/device/pwm1=210
Шум хоть и стал меньше, меня он всё равно не устроил. Компьютер и, соответственно, корпус у меня 2006 года, поэтому что-либо совсем уж тихое найти было сложновато. Опытным путём было выяснено, что больше всего шума даёт корпусной вентилятор (для этого достаточно на секунду остановить все вентиляторы поочерёдно пальцем или другим подходящим предметом). Поскольку на вентиляторе имелся не только стандартный 3-контактный разъём, но и разъём Molex, нашлось простое решение - перекинуть контакты, так чтобы снизилось питающее вентилятор напряжение. Подробнее это можно увидеть в разделе "Подключение вентиляторов" из статьи "Конструируем систему охлаждения компьютера". Жёлтый провод я всё-же воткнул в 3-контактный разъём на положенное место, дабы следить за скоростью вращения вентилятора, о чем будет написано чуть ниже.
Вторым кандидатом на настройку стал вентилятор процессора. В BIOS я узнал, что моя материнская плата поддерживает функцию PWM - управление скоростью вращения вентилятора в зависимости от показаний температурного датчика. Простейшее трёхскоростное управление я настроил прямо из BIOS, и если оно вас устроит, то нужды настраивать fancontrol в принципе нет. Меня эти три режима не устроили, захотелось более плавного разгона вентилятора по мере нагревания процессора.
Поскольку я пользуюсь Linux (Debian 6), то и настраивать управление будем в нём.
Первым делом, установим пакет для слежения за сенсорами и запустим обнаружение сенсоров:
# apt-get install lm-sensors # sensors-detectОтвечаем на все вопросы буквой y. Это важно, т.к. на один из вопросов ответ по умолчанию - n. Без этого пункта у меня не находились сенсоры материнской платы.
Now follows a summary of the probes I have just done. Just press ENTER to continue: Driver `it87': * ISA bus, address 0x290 Chip `ITE IT8712F Super IO Sensors' (confidence: 9) Driver `k8temp' (autoloaded): * Chip `AMD K8 thermal sensors' (confidence: 9) To load everything that is needed, add this to /etc/modules: #----cut here---- # Chip drivers it87 #----cut here---- If you have some drivers built into your kernel, the list above will contain too many modules. Skip the appropriate ones!Теперь можно заглянуть в /etc/modules и проверить, появились ли там новые модули, добавленные sensors-detect.
Чтобы не перезагружать систему, загрузим эти модули вручную. У меня был добавлен модуль it87, поэтому я подгружаю его:
# modprobe it87Теперь можно посмотреть информацию, предоставляемую сенсорами:
$ sensors k8temp-pci-00c3 Adapter: PCI adapter Core0 Temp: +32.0°C it8712-isa-0290 Adapter: ISA adapter in0: +1.07 V (min = +0.00 V, max = +4.08 V) in1: +2.58 V (min = +0.00 V, max = +4.08 V) in2: +3.33 V (min = +0.00 V, max = +4.08 V) in3: +2.21 V (min = +0.00 V, max = +4.08 V) in4: +3.02 V (min = +0.00 V, max = +4.08 V) in5: +1.76 V (min = +0.00 V, max = +4.08 V) in6: +2.00 V (min = +0.00 V, max = +4.08 V) in7: +2.35 V (min = +0.00 V, max = +4.08 V) Vbat: +4.08 V fan1: 0 RPM (min = 0 RPM, div = 8) fan3: 1670 RPM (min = 0 RPM, div = 8) temp1: +25.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor temp2: +29.0°C (low = +127.0°C, high = +60.0°C) sensor = thermistor temp3: +70.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor cpu0_vid: +1.100 VУ меня есть сенсоры температуры на процессоре и на материнской плате (не знаю, в каких именно местах).
Теперь установим пакет для управления скоростью вращения вентиляторов.
# apt-get install fancontrolИ запустим программу для автоматизированной настройки fancontrol:
# pwmconfigПрограмма сразу после запуска сообщает информацию об обнаруженных ею сенсорах температуры, устройствах управления вентиляторами и сенсорах скорости вращения вентиляторов:
Found the following devices: hwmon0/device is k8temp hwmon1/device is it8712 Found the following PWM controls: hwmon1/device/pwm1 hwmon1/device/pwm2 hwmon1/device/pwm3 Giving the fans some time to reach full speed... Found the following fan sensors: hwmon1/device/fan1_input current speed: 2556 RPM hwmon1/device/fan3_input current speed: 1654 RPMЛучше всего сразу куда-нибудь скопировать эту информацию, чтобы понимать, что за устройства программа имеет в виду, когда спрашивает вас о чём-то. Например, для меня было важно, что hwmon0/device - это процессор, а hwmon1/device - это материнская плата.
Дальше программа по очереди пытается остановить каждый из вентиляторов и пытается по сенсорам вращения вентиляторов установить соответствие между устройством управления скоростью вращения вентилятора и связанным с ним сенсором.
У меня было обнаружено только одно соответствие:
Testing pwm control hwmon1/device/pwm1 ... hwmon1/device/fan1_input ... speed was 2556 now 0 It appears that fan hwmon1/device/fan1_input is controlled by pwm hwmon1/device/pwm1После этого программа предложила составить таблицу соответствия между значениями управляющего байта (от 0 до 255) и скоростью вращения вентилятора:
Would you like to generate a detailed correlation (y)?Я ответил утвердительно.
PWM 255 FAN 2596 PWM 240 FAN 2596 PWM 225 FAN 2556 PWM 210 FAN 2556 PWM 195 FAN 2556 PWM 180 FAN 2556 PWM 165 FAN 2596 PWM 150 FAN 2556 PWM 135 FAN 2556 PWM 120 FAN 2596 PWM 105 FAN 2596 PWM 90 FAN 2596 PWM 75 FAN 2556 PWM 60 FAN 2556 PWM 45 FAN 2445 PWM 30 FAN 2280 PWM 28 FAN 2250 PWM 26 FAN 2191 PWM 24 FAN 2163 PWM 22 FAN 2109 PWM 20 FAN 2057 PWM 18 FAN 1985 PWM 16 FAN 1917 PWM 14 FAN 1834 PWM 12 FAN 1721 PWM 10 FAN 1622 PWM 8 FAN 1493 PWM 6 FAN 1339 PWM 4 FAN 1171 PWM 2 FAN 964 PWM 0 FAN 0 Fan Stopped at PWM = 0Программа не обнаружила, каким из вентиляторов управляло устройство hwmon1/device/pwm2 и спросила меня, слышал или видел ли я, что какой-то из вентиляторов во время теста останавливался.
Did you see/hear a fan stopping during the above test (n)?Я этого не видел и не заметил уменьшения шума, поэтому ответил n.
То же самое произошло и с устройством hwmon1/device/pwm3. Я также ответил n.
Затем программа говорит о том, что программа fancontrol может следить за температурой устройств, управляя скоростью вращения вентиляторов. pwmconfig предлагает мне настроить fancontrol. Я соглашаюсь.
The fancontrol script can automatically respond to temperature changes of your system by changing fanspeeds. Do you want to set up its configuration file now (y)?Задаёт вопрос о том, где должен находиться файл конфигурации fancontrol. Можно нажать enter и тем самым согласиться на предложенный файл, а можно ввести другое имя файла.
What should be the path to your fancontrol config file (/etc/fancontrol)?Дальше программа предлагает настроить устройство управления только одним из вентиляторов, для которого установлено соответствие канала управления и сенсора скорости вращения.
Select fan output to configure, or other action: 1) hwmon1/device/pwm1 3) Just quit 5) Show configuration 2) Change INTERVAL 4) Save and quitПункт 2 позволяет настроить периодичность проверки температуры и коррекции скорости вращения.
Пункт 3 позволяет просто выйти.
Пункт 4 - сохранить настройки и выйти.
Пункт 5 - показать конфигурацию.
Выбираем пункт 1, чтобы указать, какой из сенсоров температуры следует использовать для управления вентилятором. У меня таких сенсоров 4, я выбираю первый из них, который соответствует сенсору температуры на процессоре.
Select a temperature sensor as source for hwmon1/device/pwm1: 1) hwmon0/device/temp1_input 2) hwmon1/device/temp1_input 3) hwmon1/device/temp2_input 4) hwmon1/device/temp3_input 5) None (Do not affect this PWM output) select (1-n):Остальные сенсоры - это сенсоры температуры на материнской плате. Их положение мне неизвестно, да и управлять больше у меня нечем, кроме как скоростью вращения вентилятора на процессоре. Есть ещё корпусной вентилятор, но он, судя по тестам pwmconfig, фактически не управляется.
Дальше нужно ответить на несколько простых вопросов. Нам понадобится составленная выше таблица зависимости скорости вращения вентилятора от значения управляющего сигнала и немного здравого смысла. Судя по таблице, вентилятор работает на максимальной скорости уже при значении сигнала управления 105. Останавливается он при значении 2, а запускается при значении 4 (это я смог узнать только пробуя разные значения этого параметра в конфигурации fancontrol).
Как я выбирал предельные температуры? Очень просто - температура воздуха дома сейчас около 30 градусов Цельсия (на системнике висит магнит с термометром). Не вижу смысла насиловать кулер, заставляя его охлаждать процессор простым обдувом комнатным воздухом до 30 градусов или ниже - это просто невозможно. Накидываю 5 градусов и считаю такую температуру процессора нормальной. Пока температруа процессора ниже 35 градусов, включать охлаждение особого смысла нет. Включать его на полную мощность следует только при той температуре, при которой BIOS начнёт предупреждать о перегреве звуковым сигналом. У меня это 60 градусов Цельсия. Пока не достигнута эта температура, разгоняем вентилятор плавно, не в полную силу.
Enter the low temperature (degree C) below which the fan should spin at minimum speed (20): 35Указать самую высокую температуру, выше которой вентилятор должен включаться на полную мощность.
Enter the high temperature (degree C) over which the fan should spin at maximum speed (60): 60Минимальное значение канала управления, при котором вентилятор останавливается.
Enter the minimum PWM value (0-255) at which the fan STOPS spinning (press t to test) (100): 2Минимальное значение канала управления, при котором вентилятор начинает вращаться.
Enter the minimum PWM value (4-255) at which the fan STARTS spinning (press t to test) (150): 4Значение канала управления, если температура ниже минимальной.
Enter the PWM value (0-4) to use when the temperature is below the low temperature limit (0): 0Значение канала управления, если температура выше максимальной.
Enter the PWM value (4-255) to use when the temperature is over the high temperature limit (255): 105Теперь можно посмотреть конфигурацию (пункт 5) или сохранить изменения и закончить настройку (пункт 4). Можно снова ответить на вопросы, выбрав канал управления из списка.
Все эти настройки вносятся в файл /etc/fancontrol, где их можно отредактировать вручную:
# Configuration file generated by pwmconfig, changes will be lost INTERVAL=5 DEVPATH=hwmon0=devices/pci0000:00/0000:00:18.3 hwmon1=devices/platform/it87.656 DEVNAME=hwmon0=k8temp hwmon1=it8712 FCTEMPS= hwmon1/device/pwm1=hwmon0/device/temp1_input FCFANS= hwmon1/device/pwm1=hwmon1/device/fan1_input MINTEMP= hwmon1/device/pwm1=35 MAXTEMP= hwmon1/device/pwm1=60 MINSTART= hwmon1/device/pwm1=4 MINSTOP= hwmon1/device/pwm1=2 MAXPWM=hwmon1/device/pwm1=105Осталось только запустить службу fancontrol и вентиляторы будут управляться автоматически:
# /etc/init.d/fancontrol startСамое главное, что нужно от pwmconfig - это установить соответствие между сенсорами скорости вращения вентилятора, температуры и каналом управления скоростью вращения вентилятора. Остальное можно настраивать уже простым редактированием файла /etc/fancontrol с последующим перезапуском демона fancontrol. Следить за индикаторами можно с помощью команд watch sensors. Именно таким образом я настроил подходящие параметры fancontrol.
С такими настройками я могу редактировать тексты при полностью остановленном вентиляторе. При полной загрузке процессора температура его поднимается до 45 градусов и держится на этом уровне стараниями fancontrol.
Я пользуюсь XFCE и нашёл для него два интересных плагина для более удобного наблюдения за температурой и процессором: xfce4-cpufreq-plugin и xfce4-sensors-plugin.
Установим их вместе с другими рекомендованными пакетами:
# apt-get install xfce4-cpufreq-plugin xfce4-sensors-plugin xsensors hddtemp cpufreqДальше их нужно просто добавить в панель и настроить. Всё это делается через меню панели.
Рядом с двумя индикаторами температур (процессора и жёсткого диска) удобно разместился индикатор текущей частоты процессора. Мой процессор умеет вдвое уменьшать свою рабочую частоту, когда он не сильно загружен - с 2 Гигагерц до 1 Гигагерца.
Впрочем, я не стремлюсь превратить свой компьютер в кабину самолёта, поэтому эти апплеты будут висеть в панели лишь некоторое время, пока конфигурация может потребовать доработки. Затем я скорее всего уберу эти апплеты, поскольку никакой жизненно важной информации они не предоставляют.
После всех этих манипуляций самым громким источником шума стал старенький жёсткий диск Seagate на 4,3 Гигабайта, на котором у меня установлена Windows XP. Во время работы он издаёт раздражающий свист. Осталось перенести Windows XP на менее шумный жёсткий диск WD на 1 Терабайт, где у меня установлена основная система - Debian GNU/Linux 6.0.
Вот пример одного из моих /etc/fancontrol:
# Configuration file generated by pwmconfig, changes will be lost INTERVAL=10 DEVPATH=hwmon0=devices/pci0000:00/0000:00:18.3 hwmon1=devices/platform/w83627ehf.656 DEVNAME=hwmon0=k10temp hwmon1=w83627ehf FCTEMPS=hwmon1/device/pwm2=hwmon0/device/temp1_input FCFANS= hwmon1/device/pwm2=hwmon1/device/fan2_input MINTEMP=hwmon1/device/pwm2=40 MAXTEMP=hwmon1/device/pwm2=60 MINSTART=hwmon1/device/pwm2=150 MINSTOP=hwmon1/device/pwm2=0
INTERVAL - интервал (в секундах), с которым демон Fanconfig просыпается и перенастраивает скорость вращения вентиляторов, в зависимости от температуры
DEVPATH, DEVNAME, FCTEMPS, FCFANS - устройства, которыми управляет и которые мониторит fanconfig, в частности, в моем конфиге изменяется pwm2
в зависимости от temp1 и fan2
Дальше описывается как вести себя вентилятору:
MINTEMP - минимальная температура (если температура меньше, то скорость вращения вентилятора принимает значение MINSTOP, если равно - MINSTART)
MAXTEMP - максимальное значение температуры (если температура меньше, скорость вращения вентилятора принимает среднее значение, между максимально-возможной (параметр MAXPWM, если указан) и MINSTART, температура больше или равна MAXTEMP - вентилятор работает на полную катушку)
Параметр MAXPWM может отсутствовать, если вы выбрали значение по-умолчанию (255), во время настройки pwmconfig, он нужен чтобы ограничить максимальную скорость вращения вентилятора, независимо от его возможностей.
Мой конфиг
dima@katty ~ $ cat /etc/fancontrol
# Configuration file generated by pwmconfig, changes will be lost
INTERVAL=10
DEVPATH=hwmon1=devices/platform/it87.656
DEVNAME=hwmon1=it8712
FCTEMPS= hwmon1/device/pwm1=hwmon1/device/temp1_input
FCFANS= hwmon1/device/pwm1=hwmon1/device/fan1_input
MINTEMP= hwmon1/device/pwm1=40
MAXTEMP= hwmon1/device/pwm1=60
MINSTART= hwmon1/device/pwm1=90
MINSTOP= hwmon1/device/pwm1=0
MAXPWM= hwmon1/device/pwm1=210
19.05.13
настройка xterm
dima@katty ~ $ cat ~/.Xresources
xterm*faceName:PT Mono:size=12:antialias=true
xterm*font:8x14
xterm*boldMode:false
xterm*metaSendsEscape:true
xterm*altSendsEscape:true
xterm*keepSelection:true
xterm*borderWidth:0
xterm*color1: #9e1828
xterm*color9: #cf6171
xterm*color2: #30c030
xterm*color10: #c5f779
xterm*color3: #968a38
xterm*color11: #fff796
xterm*color4: #404090
xterm*color12: #67CDE9
xterm*color5: #963c59
xterm*color13: #cf9ebe
xterm*color6: #418179
xterm*color14: #71bebe
xterm*color7: #bebebe
xterm*color15: #FFFFFF
xterm*cursorColor:#d8d8d8
Xterm*saveLines: 4096
xterm*geometry: 120x32
dima@katty ~ $ xrdb -merge ~/.Xresources
xterm*faceName:PT Mono:size=12:antialias=true
xterm*font:8x14
xterm*boldMode:false
xterm*metaSendsEscape:true
xterm*altSendsEscape:true
xterm*keepSelection:true
xterm*borderWidth:0
xterm*color1: #9e1828
xterm*color9: #cf6171
xterm*color2: #30c030
xterm*color10: #c5f779
xterm*color3: #968a38
xterm*color11: #fff796
xterm*color4: #404090
xterm*color12: #67CDE9
xterm*color5: #963c59
xterm*color13: #cf9ebe
xterm*color6: #418179
xterm*color14: #71bebe
xterm*color7: #bebebe
xterm*color15: #FFFFFF
xterm*cursorColor:#d8d8d8
Xterm*saveLines: 4096
xterm*geometry: 120x32
dima@katty ~ $ xrdb -merge ~/.Xresources
18.05.13
Find out what is using your swap
Have you ever logged in to a server, ran `free`, seen that a
bit of swap is used and wondered what’s in there? It’s usually not very
indicative of anything, or even overly helpful knowing what’s in there,
mostly it’s a curiosity thing.
Either way, starting from kernel 2.6.16, we can find out using smaps which can be found in the proc filesystem. I’ve written a simple bash script which prints out all running processes and their swap usage.
It’s quick and dirty, but does the job and can easily be modified to work on any info exposed in /proc/$PID/smaps
If I find the time and inspiration, I might tidy it up and extend it a bit to cover some more alternatives. The output is in kilobytes.
This will need to be ran as root for it to be able to gather accurate numbers. It will still work even if you don’t, but it will report 0 for any processes not owned by your user.
Needless to say, it’s Linux only. The output is ordered alphabetically according to your locale (which admittedly isn’t a great thing since we’re dealing with numbers), but you can easily apply your standard shell magic to the output. For instance, to find the process with most swap used, just run the script like so:
Don’t want to see stuff that’s not using swap at all?
… and so on and so forth
Either way, starting from kernel 2.6.16, we can find out using smaps which can be found in the proc filesystem. I’ve written a simple bash script which prints out all running processes and their swap usage.
It’s quick and dirty, but does the job and can easily be modified to work on any info exposed in /proc/$PID/smaps
If I find the time and inspiration, I might tidy it up and extend it a bit to cover some more alternatives. The output is in kilobytes.
#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0
done
echo "Overall swap used: $OVERALL"
This will need to be ran as root for it to be able to gather accurate numbers. It will still work even if you don’t, but it will report 0 for any processes not owned by your user.
Needless to say, it’s Linux only. The output is ordered alphabetically according to your locale (which admittedly isn’t a great thing since we’re dealing with numbers), but you can easily apply your standard shell magic to the output. For instance, to find the process with most swap used, just run the script like so:
$ ./getswap.sh | sort -n -k 5
Don’t want to see stuff that’s not using swap at all?
$ ./getswap.sh | egrep -v "Swap used: 0" |sort -n -k 5
… and so on and so forth
17.05.13
14.05.13
Скачиваем сайты целиком - утилита wget
wget — это утилита, которая предназначена для загрузки файлов по сети
(из интернета). Я расскажу, как использовать wget, чтобы скачивать
сайты из интернета целиком и затем просматривать их в автономном режиме.
С помощью wget можно скачивать сайты, включая картинки,
всего лишь указав адрес сайта и определенные параметры. wget будет
автоматически переходить по ссылкам на сайте и скачивать страницу
за страницей. Рассмотрим несколько примеров от простых к более сложным
использования wget для скачивания сайтов.
Чтобы скачать сайт целиком с помощью wget нужно выполнить команду:
Рассмотрим используемые параметры:
Мы рассмотрели лишь одно из возможных применений утилиты wget. На самом деле область применения wget значительно шире и wget обладает большим числом дополнительных параметров. За более подробной информацией обращайтесь к руководству, выполнив в командной строке: man wget.
Чтобы скачать сайт целиком с помощью wget нужно выполнить команду:
wget -r -k -l 7 -p -E -nc http://site.com/
После
выполнения данной команды в директорию site.com будет загружена
локальная копия сайта http://site.com. Чтобы открыть главную страницу
сайта нужно открыть файл index.html.Рассмотрим используемые параметры:
-r | — | указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы. |
-k | — | используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме). |
-p | — | указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.). |
-l | — | определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l. |
-E | — | добавлять к загруженным файлам расширение .html. |
-nc | — | при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз. |
Мы рассмотрели лишь одно из возможных применений утилиты wget. На самом деле область применения wget значительно шире и wget обладает большим числом дополнительных параметров. За более подробной информацией обращайтесь к руководству, выполнив в командной строке: man wget.
08.05.13
Install LiveDVD 12.1 to hard disk drive
Contents
- 1 Boot into the LiveDVD
- 2 Create your filesystems
- 3 Copy the DVD to your new filesystem
- 4 Configure the new system
- 4.1 Bind the LivDVD proc and dev filesystems to the new filesystem
- 4.2 Chroot in to the new filesystem
- 4.3 Remove the autoconfig service from default boot otherwise your root password is reset every time it starts
- 4.4 Configure FSTAB
- 4.5 Copy kernel image and initramfs from the LiveDVD to your new system
- 4.6 Configure and install GRUB
- 5 reboot in to your newly installed Gentoo System
Boot into the LiveDVD
From Terminal, become root
sudo su -
Create your filesystems
Partition the HDD
- If your harddrive is larger then 2TB, you'll have to use "parted".
- If your harddrive is less them 2TB, you can use "fdisk" (which is a little easier).
- If you are not familiar with partitioning your harddrive in Linux, refer to the Gentoo Handbook for more information and directions.
- Using parted to Partition your Disk
- Using fdisk to Partition your Disk
fdisk /dev/sda
- Create a primary partition for boot (/boot) that is 512M. E.g.
Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-62914559, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559): +512M Partition 1 of type Linux and of size 512 MiB is set
- Create a swap partition (usually somewhere between 512M and 2G). E.g.
Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1-4, default 2): 2 First sector (1050624-62914559, default 1050624): Using default value 1050624 Last sector, +sectors or +size{K,M,G} (1050624-62914559, default 62914559): +2G Partition 2 of type Linux and of size 2 GiB is set
- Create a primary partition for the root filesystem (/) that is at least 15G. E.g.
Command (m for help): n Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): p Partition number (1-4, default 3): 3 First sector (5244928-62914559, default 5244928): Using default value 5244928 Last sector, +sectors or +size{K,M,G} (5244928-62914559, default 62914559): Using default value 62914559 Partition 3 of type Linux and of size 27.5 GiB is set
- Write the changes to the disk using "w". E.g.
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. Gentoo-2012 ~ #
Format the filesystems
mkfs.ext2 -L BOOT /dev/sda1
mkswap /dev/sda2
mkfs.ext4 -L ROOT /dev/sda3
Mount the filesystems
mount /dev/sda3 /mnt/gentoo
mkdir /mnt/gentoo/boot
mount /dev/sda1 /mnt/gentoo/boot
Copy the DVD to your new filesystem
- Will take around 12GB
eval `grep '^ROOT_' /usr/share/genkernel/defaults/initrd.defaults`
cd /
cp -avx /$ROOT_LINKS /mnt/gentoo
cp -avx /$ROOT_TREES /mnt/gentoo
mkdir /mnt/gentoo/proc
mkdir /mnt/gentoo/dev
mkdir /mnt/gentoo/sys
mkdir -p /mnt/gentoo/run/udev
Then run these two commands... tar cvf - -C /dev/ . | tar xvf - -C /mnt/gentoo/dev/
tar cvf - -C /etc/ . | tar xvf - -C /mnt/gentoo/etc/
- You might want to drop the "-v"s on the cp operations in order to not jam important error messages.
- Apparently due to the underlying aufs messing up inode numbers, it has been observed that cp attempts to make hardlinks in strange places.
- If you encounter this, try copying the affected subtrees once more, over the first attempt.
- If the copyin' failes (ex. /emul) - then remove the folder name (ex. emul) in /usr/share/genkernel/defaults/initrd.defaults
Configure the new system
Bind the LivDVD proc and dev filesystems to the new filesystem
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
Chroot in to the new filesystem
chroot /mnt/gentoo /bin/bash
env-update && source /etc/profile
cd /dev
rm null
mknod console c 5 1
chmod 600 console
mknod null c 1 3
chmod 666 null
mknod zero c 1 5
chmod 666 zero
Remove the autoconfig service from default boot otherwise your root password is reset every time it starts
rc-update del autoconfig default
rc-update del fixinittab boot
Configure FSTAB
File: nano -w /etc/fstab
/dev/sda3 / ext4 defaults,noatime 1 1 /dev/sda1 /boot ext2 defaults,noatime 1 2 /dev/sda2 none swap sw 0 0 /dev/cdrom /mnt/cdrom auto noauto,user 0 0 proc /proc proc defaults 0 0 shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
Copy kernel image and initramfs from the LiveDVD to your new system
mkdir -p /mnt/cdrom/
mount /dev/cdrom /mnt/cdrom/
cp /mnt/cdrom/boot/gentoo /boot/kernel
cp /mnt/cdrom/boot/gentoo.igz /boot/initramfs
Configure and install GRUB
File: nano -w /boot/grub/grub.conf
default 0 timeout 30 title Gentoo Linux root (hd0,0) kernel /boot/kernel real_root=/dev/sda3 vga=791 splash=silent,theme:livecd-12.0 console=tty1 quiet initrd /boot/initramfs
grub
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
reboot in to your newly installed Gentoo System
05.05.13
EУстановка gentoo
Сегодня будем развенчивать миф о сложности установки Gentoo. Почему
установка "по-русски"? Потому что настраивать станем русскую локаль,
раскладку и временную зону. Статья получилась довольно объёмной, для
тех, кто не знает, как скоротать долгий вечер).
1. Загрузитесь с СD-диска.
Грузимся с параметрами по умолчанию.
-Настройка интернет-соединения:
автор использует модемное соединение, данные передаются автоматически при помощи DHCP.
# /sbin/ifconfig
если кроме интерфейса lo больше ничего нет, значит делаем следующее:
# dhcpcd eth0 (где ваш сетевой интерфейс - eth0)
после чего повторяем команду /sbin/ifconfig
теперь у нас появились данные интерфейса eth0.
Для настройки adsl-соединения:
# pppoe-setup
# net-setup eth0 (для обычных или беспроводных сетей)
# ping ya.ru - пингуем яндекс
чтобы прервать пинги:
Ctrl+C
Интернет настроили, идём дальше
2. Создание разделов диска
Для этого воспользуемся cfdisk:
перед тем,как создавать разделы,сядьте и подумайте какие,какого размера и с какой файловой системой.
/ - корневой каталог
/home - директории пользователей
/boot - загрузочные файлы
/usr - пользовательские приложения.
/var - изменяемые приложения, лучше не жадничать хотя бы потому,что там будут компилироваться наши пакеты
/opt - большой размер нужен для игрового сервера
Лучше записать то, что вы себе насочиняли. Для домашнего использования можно обойтись стандартными каталогами /boot, / , swap.
-Непосредственно создание разделов:
# cfdisk /dev/sda - где sda - SCSI-диск; hda - IDE-диск. Выбирайте что нужно вам.
news - создание нового раздела
type - выбор типа файловой системы (83 - Linux, 82 - swap)
bootable - отметить как загрузочный (укажите для раздела,в который хотите смонтировать /boot!)
write - записать изменения
delete - удалить
quit - выйти
-Назначение файловой системы:
# mke2fs /dev/sda1 - создание ext2 на разделе /dev/sda1
# mke2fs -j /dev/sda3 - создание ext3 на разделе /dev/sda3
# mkswap /dev/sda2 - создание раздела подкачки на /dev/sda2
# swapon /dev/sda2 - и его активация
# mkfs.ext4 - создание ext4, если не желаете использовать ext3
-Назначение точек монтирования:
# mount /dev/sda3 /mnt/gentoo - монтируем корень
# mkdir /mnt/gentoo/boot - раздел под загрузчик
# mount /dev/sda1 /mnt/gentoo/boot - монтирование раздела загрузчика
3. Архив стадии, дерево портежей
-В качестве источника загрузки автором было использовано зеркало mirror.yandex.ru
Внимательно следите за тем,чтобы загрузить подходящий скачанному вами образу архив. В примере использован amd64.
# cd /mnt/gentoo
# links http://mirror.yandex.ru/gentoo-distfiles/releases/amd64/current-stage3/
Выберите файл stage*.tar.bz и нажмите enter. Начнётся загрузка архива, это 161 Мб, так что пока можно попить кофейку.
Загрузили? Распаковываем:
# tar xvjpf stage3-*.tar.bz
- Теперь сделаем снимок дерева портежей
# links http://mirror.yandex.ru/gentoo-distfiles/snapshots/
выбираем внизу portage-latest.tar.bz2
Начнётся загрузка.
распаковываем (из корневого каталога):
# tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
4. Настройка компиляции ядра
Настройки хранятся в файле mnt/gentoo/etc/portage/make.conf. Его и открываем любимым редактором (joe, nano, vi?)
Здесь используются переменные и значения. Пример:
переменная - CHOST, её значение - x86_64-pc-linux-gnu - указывает на архитектуру процессора
CFLAGS="-march=k8 -pipe -O2" - где "-march=k8"-название целевой архитектуры,k8 прописывается для amd64, -О2 - классс оптимизации. Допустимые значения: -s оптимизация по размеру -0 без оптимизации -1 -2 -3 - по скорости
CXXFLAGS="${CFLAGS}" - не изменяйте её
MAKEOPTS="-j2" - определяет сколько параллельных процессов компиляции можно запускать при установке пакета. Обычно ставят значение равное количеству ядер процессора +1. Если ваш процессор поддерживает технологию Hyper-threading, разумное значение будет: количество доступных ядер, умноженное на 2 +1.
USE-флаги. Можно пока ничего не дописывать, займётесь этим позже.
5. Выбор зеркал, DNS, chroot
Действия в примере производятся из каталога /
-Выбор зеркала загрузки
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
- Выбор зеркала rsync:
mirrorselect -i -r -o >> /mnt/gentoo/etc/portage/make.conf
Из предложенного списка выберите зеркала России.
-Нелишним будет скопировать информацию о DNS
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
-Монтируем /proc & /dev
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
-Переходим в новую среду с помощью chroot
# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile
# export PS1="(chroot) $PS1"
6. Прочие премудрости
- Обновите дерево портежей:
# mkdir /usr/portage
# emerge --sync
это может занять какое-то время, не пугайтесь
# emerge portage - если выдаёт сообщение о новой версии портежей
- Выбор профиля:
# eselect profile list
# eselect profile set 3
Думаю, приведённые действия не нуждаются в пояснении, всё ясно из названий профилей. Нужно лишь выбрать нужный вам, исходя из ваших задач.
-USE-флаги
Служат для включения/отключения поддержки необязательных функций при компиляции программ.
Вам не нужен X-сервер? Допишите значение "-X". Не нужна поддержка qt? Значит "-qt". И наоборот включите поддержку unicode: "unicode".
Посмотреть допустимые значения:
# less /usr/portage/profiles/use.desc
Значения дописываются в /etc/portage/make.conf в строку USE
# nano -w /etc/portage/make.conf
Например:
-Настройка кодировки:
# nano -w /etc/locale.gen
вы увидите список закомментированных строк с кодировками, вот сверху или же ниже его впишите:
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
сохраните изменения и выйдите: Ctrl+O, Ctrl+Q
# locale-gen
- Настройка времени:
# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Теперь наше локальное время идёт по Кремлёвским курантам))
Можете скопировать любое место вашей дислокации из /usr/share/zoneinfo
7. Ядро
- Скачаем исходники ядра
# USE="-doc symlink" emerge gentoo-sources
- Установка ядра
Способ 1 - всё и сразу
# emerge genkernel
# genkernel all
В результате получим ядро с поддержкой разного ненужного хлама. Плюс этого способа - простота.
Примечание: можно подправить /etc/genkernel.conf, включив в нём параметры:
В таком случае вы сможете собрать своё ядро, а genkernel сделает всё остальное.
После сборки можете просто проверить название созданного ядра и initrd, а затем обратиться к пункту 8:
# ls /boot/kernel* /boot/initramfs*
Способ 2 - только то, что нужно
# emerge pcutils (с её помощью вы сможете посмотреть аппаратную часть своего ПК)
# cd /usr/src/linux (переход в каталог с исходниками)
# make menuconfig (вызов меню с настройками)
Здесь всё строго индивидуально. Используете usb-мышь или клавиатуру? Проверьте включена ли их поддержка. Хотите, чтобы система понимала NTFS? Проверьте включена ли её поддержка. Настроек хватит на всё: тип процессора, видео, звук, поддержка файловых систем, девайсов устройств, поддерживаемых кодировок. Просто пройдитесь по пунктам меню и поразбирайтесь,что вам нужно,а что нет. Если вы испытываете затруднения с этим, можете ознакомиться со следующей заметкой, а затем продолжить.
Примеры:
Включение поддержки файловых систем:
Поддержка DOS/FAT/NTFS:
Выбор поддерживаемых кодировок:
Настроили? Теперь ядро нужно скомпилировать и установить:
# make && make modules_install - для тех, кто занимался ручной сборкой.
И скопировать ядро в /boot:
# cp arch/x86_64/boot/bzImage /boot/
Пример:
# cp arch/x86_64/boot/bzImage /boot/2.6.37-gentoo-r4
Если вы собрали ядро с initrg, следует всё же установить genkernel и скомандовать:
# genkernel --install initramfs
8. Сборка программ, конфигурирование модулей, настройка загрузчика
# emerge udev (автоматическое распознавание устройств) syslog-ng (служба журналирования) vixie-cron (что такое cron, думаю, знают все)dhcpcd (автоматическое получение IP-адреса, если у вас это дело статично, можете не ставить)
Теперь добавляем эти вещи в автозагрузку:
# rc-update add udev boot
# rc-update add syslog-ng default
# rc-update add vixie-cron default
# rc-update add dhcpcd default
-Проверяем наши устройства:
# nano -w /ets/fstab
Должно получится примерно так:
Обратите внимание: нужно убрать параметр noauto напротив /boot (в данном примере /boot расположен на /sda1)
- Имя хоста:
# nano -w /etc/conf.d/hostname
Укажите здесь имя своего ПК
- Сеть:
# nano -w /etc/conf.d/net
дописываем:
config_eth0="dhcp" - для получения динамического IP-адреса
если адрес статичен,то впишите вместо dhcp свою информацию. Например:
config_eth0="192.168.0.2 netmask 255.255.255.0" - IP-адрес и адрес сети
routes_eth0="default via 192.168.0.1" - роутер
dns_servers_eth0="192.168.0.1 8.8.8.8" - DNS-адреса
Теперь следует указать gentoo на существующий интерфейс. Для этого создайте символьную ссылку на net.eth0:
# cd /etc/init.d
# ln -s net.lo net.eth0
- Добавление сетевого интерфейса в автозагрузку:
# rc-update add net.eth0 default
- Создание пароля для суперпользователя:
# passwd
впишите пароль для учётной записи root
Примечание: можете также ознакомиться с настройками файла /etc/rc.conf (редактор по умолчанию, графическая среда и прочее)
- Настройка раскладки клавиатуры:
# nano /etc/conf.d/keymaps
KEYMAP="ru"
- Настройка часов:
# nano /etc/conf.d/clock
CLOCK="local"
TIMEZONE="Europe/Moscow"
- Загрузчик:
# emerge grub
# nano /boot/grub/menu.lst
splashimage - расскоментируете - будет картинка при загрузке
timeout - время, после истечения которого начнётся загрузка
kernel - можно дописать в конец этой строки разрешение экрана консоли, например, vga=0x318.
Обязательно проверьте, чтобы указанная здесь версия ядра полностью совпадала с версией собранного вами. Если это не так, исправьте на верную, иначе загрузчик просто не найдёт ядро.
Для тех у кого параллельно установлена Windows (на /dev/sda1):
title=Windows XP
rootnoverify (hd0,0)
makeactive
chainloader +1
Примечание: на практике информация про Windows не проверена
- Установка загрузчика:
# grep -v rootfs /proc/mounts > /etc/mtab
# grub install /dev/sda - где sda - ваш диск
9. Финиш
# exit
# cd
# umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo (в общем последовательно отмонтируйте всё, что смонтировали в /mnt)
# reboot
Перезагрузка, загрузка ПК с винчестера и вас встречают приглашением входа в систему.
Поздравляю, вы победили!
10. Локализация системы
Перезагрузившись, мы обнаружим прескверную вещь: кириллица отображается квадратиками. Что ж, в locale.gen нужные настройки внесены, продолжим квест по русификации системы.
# emerge terminus-font intlfonts freefonts cronyx-fonts corefonts kbd
В файле /etc/env.d/02locale:
В /etc/conf.d/keymaps :
В /etc/conf.d/consolefont :
Можно также установить различные шрифты и поэкспериментировать с ними. После пересборки/установки шрифтов желательно выполнить:
# fc-cache -fv
1 source /etc/profile
2 export PS1="(chroot) $PS1"
3 emerge genkernel
4 nano -w /etc/fstab
5 nano -w /etc/conf.d/hostname
6 nano -w /etc/conf.d/net
7 cd /etc/init.d
8 ln -s net.lo net.eth0
9 rc-update add net.eth0 default
10 passwd
11 nano -w /etc/conf.d/keymaps
12 nano -w /etc/conf.d/hwclock
13 nano -w /etc/locale.gen
14 locale-gen
15 nano -w /etc/conf.d/keymaps
16 env-update && source /etc/profile
17 emerge vixie-cron
18 rc-update add vixie-cron default
20 grep -v rootfs /proc/mounts > /etc/mtab
22 grub-install --no-floppy /dev/sda
23 nano -w /boot/grub/grub.conf
24 ls /boot/kernel-3.7.10-gentoo
26 ls /boot/initramfs-genkernel-x86_64-3.7.10-gentoo-r1
27 nano -w /boot/grub/grub.conf
28 emerge terminus-font intlfonts freefonts cronyx-fonts corefonts kbd
29 fc-cache -fv
1 source /etc/profile
2 export PS1="(chroot) $PS1"
3 nano /etc/env.d/02locale
4 nano /etc/conf.d/keymaps
5 nano /etc/conf.d/consolefont
6 useradd -m -G users,wheel,audio -s /bin/bash dimon
7 passwd dimon
8 history
1. Загрузитесь с СD-диска.
Грузимся с параметрами по умолчанию.
-Настройка интернет-соединения:
автор использует модемное соединение, данные передаются автоматически при помощи DHCP.
# /sbin/ifconfig
если кроме интерфейса lo больше ничего нет, значит делаем следующее:
# dhcpcd eth0 (где ваш сетевой интерфейс - eth0)
после чего повторяем команду /sbin/ifconfig
теперь у нас появились данные интерфейса eth0.
Для настройки adsl-соединения:
# pppoe-setup
# net-setup eth0 (для обычных или беспроводных сетей)
# ping ya.ru - пингуем яндекс
чтобы прервать пинги:
Ctrl+C
Интернет настроили, идём дальше
2. Создание разделов диска
Для этого воспользуемся cfdisk:
перед тем,как создавать разделы,сядьте и подумайте какие,какого размера и с какой файловой системой.
/ - корневой каталог
/home - директории пользователей
/boot - загрузочные файлы
/usr - пользовательские приложения.
/var - изменяемые приложения, лучше не жадничать хотя бы потому,что там будут компилироваться наши пакеты
/opt - большой размер нужен для игрового сервера
Лучше записать то, что вы себе насочиняли. Для домашнего использования можно обойтись стандартными каталогами /boot, / , swap.
-Непосредственно создание разделов:
# cfdisk /dev/sda - где sda - SCSI-диск; hda - IDE-диск. Выбирайте что нужно вам.
news - создание нового раздела
type - выбор типа файловой системы (83 - Linux, 82 - swap)
bootable - отметить как загрузочный (укажите для раздела,в который хотите смонтировать /boot!)
write - записать изменения
delete - удалить
quit - выйти
-Назначение файловой системы:
# mke2fs /dev/sda1 - создание ext2 на разделе /dev/sda1
# mke2fs -j /dev/sda3 - создание ext3 на разделе /dev/sda3
# mkswap /dev/sda2 - создание раздела подкачки на /dev/sda2
# swapon /dev/sda2 - и его активация
# mkfs.ext4 - создание ext4, если не желаете использовать ext3
-Назначение точек монтирования:
# mount /dev/sda3 /mnt/gentoo - монтируем корень
# mkdir /mnt/gentoo/boot - раздел под загрузчик
# mount /dev/sda1 /mnt/gentoo/boot - монтирование раздела загрузчика
3. Архив стадии, дерево портежей
-В качестве источника загрузки автором было использовано зеркало mirror.yandex.ru
Внимательно следите за тем,чтобы загрузить подходящий скачанному вами образу архив. В примере использован amd64.
# cd /mnt/gentoo
# links http://mirror.yandex.ru/gentoo-distfiles/releases/amd64/current-stage3/
Выберите файл stage*.tar.bz и нажмите enter. Начнётся загрузка архива, это 161 Мб, так что пока можно попить кофейку.
Загрузили? Распаковываем:
# tar xvjpf stage3-*.tar.bz
- Теперь сделаем снимок дерева портежей
# links http://mirror.yandex.ru/gentoo-distfiles/snapshots/
выбираем внизу portage-latest.tar.bz2
Начнётся загрузка.
распаковываем (из корневого каталога):
# tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
4. Настройка компиляции ядра
Настройки хранятся в файле mnt/gentoo/etc/portage/make.conf. Его и открываем любимым редактором (joe, nano, vi?)
Здесь используются переменные и значения. Пример:
переменная - CHOST, её значение - x86_64-pc-linux-gnu - указывает на архитектуру процессора
CFLAGS="-march=k8 -pipe -O2" - где "-march=k8"-название целевой архитектуры,k8 прописывается для amd64, -О2 - классс оптимизации. Допустимые значения: -s оптимизация по размеру -0 без оптимизации -1 -2 -3 - по скорости
CXXFLAGS="${CFLAGS}" - не изменяйте её
MAKEOPTS="-j2" - определяет сколько параллельных процессов компиляции можно запускать при установке пакета. Обычно ставят значение равное количеству ядер процессора +1. Если ваш процессор поддерживает технологию Hyper-threading, разумное значение будет: количество доступных ядер, умноженное на 2 +1.
USE-флаги. Можно пока ничего не дописывать, займётесь этим позже.
5. Выбор зеркал, DNS, chroot
Действия в примере производятся из каталога /
-Выбор зеркала загрузки
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
- Выбор зеркала rsync:
mirrorselect -i -r -o >> /mnt/gentoo/etc/portage/make.conf
Из предложенного списка выберите зеркала России.
-Нелишним будет скопировать информацию о DNS
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
-Монтируем /proc & /dev
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
-Переходим в новую среду с помощью chroot
# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile
# export PS1="(chroot) $PS1"
6. Прочие премудрости
- Обновите дерево портежей:
# mkdir /usr/portage
# emerge --sync
это может занять какое-то время, не пугайтесь
# emerge portage - если выдаёт сообщение о новой версии портежей
- Выбор профиля:
# eselect profile list
Available profile symlink targets:
[1] default/linux/amd64/10.0 *
[2] default/linux/amd64/10.0/desktop
[3] default/linux/amd64/10.0/server
# eselect profile set 3
Думаю, приведённые действия не нуждаются в пояснении, всё ясно из названий профилей. Нужно лишь выбрать нужный вам, исходя из ваших задач.
-USE-флаги
Служат для включения/отключения поддержки необязательных функций при компиляции программ.
Вам не нужен X-сервер? Допишите значение "-X". Не нужна поддержка qt? Значит "-qt". И наоборот включите поддержку unicode: "unicode".
Посмотреть допустимые значения:
# less /usr/portage/profiles/use.desc
Значения дописываются в /etc/portage/make.conf в строку USE
# nano -w /etc/portage/make.conf
Например:
-Настройка кодировки:
# nano -w /etc/locale.gen
вы увидите список закомментированных строк с кодировками, вот сверху или же ниже его впишите:
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
сохраните изменения и выйдите: Ctrl+O, Ctrl+Q
# locale-gen
- Настройка времени:
# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Теперь наше локальное время идёт по Кремлёвским курантам))
Можете скопировать любое место вашей дислокации из /usr/share/zoneinfo
7. Ядро
- Скачаем исходники ядра
# USE="-doc symlink" emerge gentoo-sources
- Установка ядра
Способ 1 - всё и сразу
# emerge genkernel
# genkernel all
В результате получим ядро с поддержкой разного ненужного хлама. Плюс этого способа - простота.
Примечание: можно подправить /etc/genkernel.conf, включив в нём параметры:
OLDCONFIG="yes"
MENUCONFIG="yes"
CLEAN="no"
MRPROPER="no"
В таком случае вы сможете собрать своё ядро, а genkernel сделает всё остальное.
После сборки можете просто проверить название созданного ядра и initrd, а затем обратиться к пункту 8:
# ls /boot/kernel* /boot/initramfs*
Способ 2 - только то, что нужно
# emerge pcutils (с её помощью вы сможете посмотреть аппаратную часть своего ПК)
# cd /usr/src/linux (переход в каталог с исходниками)
# make menuconfig (вызов меню с настройками)
Здесь всё строго индивидуально. Используете usb-мышь или клавиатуру? Проверьте включена ли их поддержка. Хотите, чтобы система понимала NTFS? Проверьте включена ли её поддержка. Настроек хватит на всё: тип процессора, видео, звук, поддержка файловых систем, девайсов устройств, поддерживаемых кодировок. Просто пройдитесь по пунктам меню и поразбирайтесь,что вам нужно,а что нет. Если вы испытываете затруднения с этим, можете ознакомиться со следующей заметкой, а затем продолжить.
Примеры:
Включение поддержки файловых систем:
Поддержка DOS/FAT/NTFS:
Выбор поддерживаемых кодировок:
Настроили? Теперь ядро нужно скомпилировать и установить:
# make && make modules_install - для тех, кто занимался ручной сборкой.
И скопировать ядро в /boot:
# cp arch/x86_64/boot/bzImage /boot/
Пример:
# cp arch/x86_64/boot/bzImage /boot/2.6.37-gentoo-r4
Если вы собрали ядро с initrg, следует всё же установить genkernel и скомандовать:
# genkernel --install initramfs
8. Сборка программ, конфигурирование модулей, настройка загрузчика
# emerge udev (автоматическое распознавание устройств) syslog-ng (служба журналирования) vixie-cron (что такое cron, думаю, знают все)dhcpcd (автоматическое получение IP-адреса, если у вас это дело статично, можете не ставить)
Теперь добавляем эти вещи в автозагрузку:
# rc-update add udev boot
# rc-update add syslog-ng default
# rc-update add vixie-cron default
# rc-update add dhcpcd default
-Проверяем наши устройства:
# nano -w /ets/fstab
Должно получится примерно так:
Обратите внимание: нужно убрать параметр noauto напротив /boot (в данном примере /boot расположен на /sda1)
- Имя хоста:
# nano -w /etc/conf.d/hostname
Укажите здесь имя своего ПК
- Сеть:
# nano -w /etc/conf.d/net
дописываем:
config_eth0="dhcp" - для получения динамического IP-адреса
если адрес статичен,то впишите вместо dhcp свою информацию. Например:
config_eth0="192.168.0.2 netmask 255.255.255.0" - IP-адрес и адрес сети
routes_eth0="default via 192.168.0.1" - роутер
dns_servers_eth0="192.168.0.1 8.8.8.8" - DNS-адреса
Теперь следует указать gentoo на существующий интерфейс. Для этого создайте символьную ссылку на net.eth0:
# cd /etc/init.d
# ln -s net.lo net.eth0
- Добавление сетевого интерфейса в автозагрузку:
# rc-update add net.eth0 default
- Создание пароля для суперпользователя:
# passwd
впишите пароль для учётной записи root
Примечание: можете также ознакомиться с настройками файла /etc/rc.conf (редактор по умолчанию, графическая среда и прочее)
- Настройка раскладки клавиатуры:
# nano /etc/conf.d/keymaps
KEYMAP="ru"
- Настройка часов:
# nano /etc/conf.d/clock
CLOCK="local"
TIMEZONE="Europe/Moscow"
- Загрузчик:
# emerge grub
# nano /boot/grub/menu.lst
splashimage - расскоментируете - будет картинка при загрузке
timeout - время, после истечения которого начнётся загрузка
kernel - можно дописать в конец этой строки разрешение экрана консоли, например, vga=0x318.
Обязательно проверьте, чтобы указанная здесь версия ядра полностью совпадала с версией собранного вами. Если это не так, исправьте на верную, иначе загрузчик просто не найдёт ядро.
Для тех у кого параллельно установлена Windows (на /dev/sda1):
title=Windows XP
rootnoverify (hd0,0)
makeactive
chainloader +1
Примечание: на практике информация про Windows не проверена
- Установка загрузчика:
# grep -v rootfs /proc/mounts > /etc/mtab
# grub install /dev/sda - где sda - ваш диск
9. Финиш
# exit
# cd
# umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo (в общем последовательно отмонтируйте всё, что смонтировали в /mnt)
# reboot
Перезагрузка, загрузка ПК с винчестера и вас встречают приглашением входа в систему.
Поздравляю, вы победили!
10. Локализация системы
Перезагрузившись, мы обнаружим прескверную вещь: кириллица отображается квадратиками. Что ж, в locale.gen нужные настройки внесены, продолжим квест по русификации системы.
# emerge terminus-font intlfonts freefonts cronyx-fonts corefonts kbd
В файле /etc/env.d/02locale:
LC_ALL=""
LANG="ru_RU.UTF-8"
В /etc/conf.d/keymaps :
keymap="ruwin_alt_sh-UTF-8"
windowkeys="NO"
extended_keymaps=""
dumpkeys_charset=""
fix_euro="NO"
В /etc/conf.d/consolefont :
consolefont="cyr-sun16"
consoletranslation=""
Можно также установить различные шрифты и поэкспериментировать с ними. После пересборки/установки шрифтов желательно выполнить:
# fc-cache -fv
1 source /etc/profile
2 export PS1="(chroot) $PS1"
3 emerge genkernel
4 nano -w /etc/fstab
5 nano -w /etc/conf.d/hostname
6 nano -w /etc/conf.d/net
7 cd /etc/init.d
8 ln -s net.lo net.eth0
9 rc-update add net.eth0 default
10 passwd
11 nano -w /etc/conf.d/keymaps
12 nano -w /etc/conf.d/hwclock
13 nano -w /etc/locale.gen
14 locale-gen
15 nano -w /etc/conf.d/keymaps
16 env-update && source /etc/profile
17 emerge vixie-cron
18 rc-update add vixie-cron default
20 grep -v rootfs /proc/mounts > /etc/mtab
22 grub-install --no-floppy /dev/sda
23 nano -w /boot/grub/grub.conf
24 ls /boot/kernel-3.7.10-gentoo
26 ls /boot/initramfs-genkernel-x86_64-3.7.10-gentoo-r1
27 nano -w /boot/grub/grub.conf
28 emerge terminus-font intlfonts freefonts cronyx-fonts corefonts kbd
29 fc-cache -fv
1 source /etc/profile
2 export PS1="(chroot) $PS1"
3 nano /etc/env.d/02locale
4 nano /etc/conf.d/keymaps
5 nano /etc/conf.d/consolefont
6 useradd -m -G users,wheel,audio -s /bin/bash dimon
7 passwd dimon
8 history
03.05.13
Подсветка в nano
Всем известен простой текстовый редактор nano. Он поставляется как
редактор по умолчанию в большинстве дистрибутивов linux и имеет огромное
количество пользователей, пожалуй, больше, чем какой-либо другой
редактор. Но зачастую в нём не хватает одной приятной мелочи - подсветки
синтаксиса. Впрочем, это можно легко и быстро исправить.
Шаблоны с различной подсветкой находятся по пути /usr/share/nano. Что там удастся найти?
Итак, в нашем распоряжении подсветка языков программирования c, python, php и java. Можно раскрасить html и css файлы и кое-что ещё. Не так уж много, но для дел насущных должно хватить.
Дело за малым: создать файл .nanorc в домашней директории и включить в него необходимые стили. Это может выглядеть так:
$ cat .nanorc
Шаблоны с различной подсветкой находятся по пути /usr/share/nano. Что там удастся найти?
/usr/share/nano
├── asm.nanorc
├── awk.nanorc
├── cmake.nanorc
├── c.nanorc
├── css.nanorc
├── debian.nanorc
├── fortran.nanorc
├── gentoo.nanorc
├── groff.nanorc
├── html.nanorc
├── java.nanorc
├── makefile.nanorc
Итак, в нашем распоряжении подсветка языков программирования c, python, php и java. Можно раскрасить html и css файлы и кое-что ещё. Не так уж много, но для дел насущных должно хватить.
Дело за малым: создать файл .nanorc в домашней директории и включить в него необходимые стили. Это может выглядеть так:
$ cat .nanorc
include /usr/share/nano/man.nanorc
include /usr/share/nano/asm.nanorc
include /usr/share/nano/python.nanorc
include /usr/share/nano/html.nanorc
include /usr/share/nano/perl.nanorc
include /usr/share/nano/ocaml.nanorc
include /usr/share/nano/groff.nanorc
include /usr/share/nano/awk.nanorc
include /usr/share/nano/java.nanorc
include /usr/share/nano/cmake.nanorc
include /usr/share/nano/tex.nanorc
include /usr/share/nano/xml.nanorc
include /usr/share/nano/c.nanorc
include /usr/share/nano/patch.nanorc
include /usr/share/nano/objc.nanorc
include /usr/share/nano/php.nanorc
include /usr/share/nano/mgp.nanorc
include /usr/share/nano/nanorc.nanorc
include /usr/share/nano/makefile.nanorc
include /usr/share/nano/debian.nanorc
include /usr/share/nano/pov.nanorc
include /usr/share/nano/sh.nanorc
include /usr/share/nano/css.nanorc
include /usr/share/nano/gentoo.nanorc
include /usr/share/nano/ruby.nanorc
include /usr/share/nano/mutt.nanorc
include /usr/share/nano/fortran.nanorc
include /usr/share/nano/tcl.nanorc
Теперь посмотрим как отображается файл с одним из влюченных шаблонов.
Не так уж плохо. По крайней мере, это гораздо удобнее, чем отсутствие подсветки как таковой. И - да - это всё, пользуемся.
Плагин multiload для lxpanelx
Плагин multiload для lxpanelx. Некий добрый человек портировал плагин multiload, который был для gnome-panel, на xfce4 и lxpanel. И попросил меня портировать его и на lxpanelx. Что я и сделал. Исходники: https://github.com/geekless/multiload-nandhp В AUR: https://aur.archlinux.org/packages/lxpanelx-multiload-plugin-git/ Алсо, для пользователей Xfce: https://aur.archlinux.org/packages/xfce4-multiload-nandhp-plugin-git/ |
Підписатися на:
Дописи (Atom)