FAQ

FAQ - Frequently Asked Questions - Часто Задаваемые Вопросы. Мой FAQ собран проблемах и ошибках моих сотрудников при работе с Linux-ом в нашем офисе. В основном он относится к использованию дистрибутивов AltLinux , но должен подходить к любому Linux-у.


 


Загрузчик Linux

 


 


 

 

Я переустановил Windows и не могу загрузиться с Linux.

Что ж, умельцы из Microsoft даже не представляют, что на компьютерах может стоять что-нибудь кроме Windows, и поэтому их система во время установки перезатирает стартовый сектор диска, вписывая туда свою программу-загрузчик. Этот загрузчик игнорирует ранее стоявшие системы и умеет загружать только Windows. Исправление ситуации очень примитивно:

  • запускаетесь с дистрибутивного CD-диска,
  • загружаетесь в режиме восстановления системы
  • получив приглашение системы, вводите команду chroot /mnt
  • вводите команду lilo
  • Ура, загрузочная запись восстановлена!

 

В последних версиях Linux, где файлы устройств в /dev динамически создаются при загрузке, действия немного усложнились. 
Предположим, что корень вашей системы с Linux расположен на /dev/sda3. Тогда после загрузки в режиме восстановления системы:

  • # Делаем каталог, куда вмонтируем нашу файловую систему 
    mkdir /mnt/my
  • # Монтируем файловую систему 
    mount /dev/sda3 /mnt/my
  • # Вставляем в нашу файловую систему каталог /proc от текущей загруженной системы: 
    mount /proc  /mnt/my/proc -o bind
  • # Вставляем в нашу файловую систему каталог /dev со всеми файлами устройств от текущей загруженной системы: 
    mount /dev /mnt/my/dev -o bind
  • # Подменяем корень текущей системы: 
    chroot /mnt/my
  • # Восстанавливаем загрузчик 
    lilo

 

Примечание: Если у вас загрузчик не LILO, а GRUB, то:

       cd /boot/grub
       grub-mkconfig >grub.cfg
       grub-install --no-floppy /dev/sda


 

 

 

Как клонировать диск с Linux?

 

  1. Создать на нём такие же разделы(fdisk), как и на исходном диске, и создать файловые системы (mkfs).
  2. Смонтировать их. Например, корневой раздел на исходнике у нас /dev/sda2, а на клоне пока что /dev/sdb2
    mkdir /mnt/sdb2
    mount /dev/sdb2 /mnt/sdb2
  3. Перейти в корневой каталог и скопировать файлы с него на корневой раздел клона:
    cd /
    find . -xdev | cpio -pm /mnt/sdb2
  4. Скопировать из /dev файлы устройств "console" и "null" в /mnt/sdb2/dev
  5. Скопировать остальные разделы.
  6. Запустить blkid, посмотреть UUID корневого раздела и вписать новое значение в /etc/lilo.conf и /etc/fstab.
  7. Выключить комп, отключить исходный диск, на его место подключить клона.
  8. Загрузиться с установочного диска в режиме "Восстановление системы" или как там оно называется.
  9. Смонтируем наш клон диск, подсунем в его динамические каталоги каталоги системы, с которой загрузились(mount -o bind...), и сделаем корневую систему клона корнем(chroot) загруженной системы:
    mkdir /mnt/sda2  
    mount /dev/sda2 /mnt/sda2
    mount -o bind /proc /mnt/sda2/proc
    mount -o bind /sys /mnt/sda2/sys
    mount -o bind /dev /mnt/sda2/dev
    chroot /mnt/sda2
  10. Переходим в каталог /boot и делаем новый образ INITRD (диск в памяти в момент загрузки ядря со всеми необходимыми драйверами для работы ядра Linux на этом новом оборудовании). Например, если
    ядро у нас называется vmlinuz-2.6.38, команда создания INITRD выглядит так:
    mkinitrd  initrd-2.6.38.img   2.6.38

10. Устанавливаем lilo:
      lilo
 

11. Успешно загружаемся с клона.
 

Если загрузчик не LILO, а GRUB2, то после монтирования раздела клона и создания INITRD, делаем следующее:
Переходим в каталог /boot/grub
grub-mkconfig >grub.cnf
grub-install /dev/sda

 

Диск /dev/sda приведён только для примера.
 

 


 

 

Монтирование NTFS

  •   Как смонтировать раздел с NTFS на запись? 
    Проект, описанный на http://www.ntfs-3g.org даёт наиболее хорошие средства для этого. В моей системе всё из этого проекта было сразу, так что мне было достаточно сделать: 
    mount -t ntfs-3g /dev/sda1 /mnt/windows
    

 

 

Как узнать версию X-Window, которая у меня стоит?

Запустить:X -version

Где лежит файл конфигурации X-Window, что делать если его нет?

В каталоге /etc/X11 
Для 3-й версии X файл называется XF86Config 
Для 4-й версии X файл называется XF86Config-4 
Для Xorg файл называетс xorg.conf.

Если файла конфигурации нет, то запустите:

X -configure

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

 

 

Как изменить переключатель клавиатуры RU/EN?

1. Правим /etc/X11/XF86Config 
        или    /etc/X11/XF86Config-4 
        или    /etc/X11/xorg.conf

В секции InputDevice для клавиатуры добавляем:

Option "XkbLayout" "us,ru" 
Option "XkbVariant" ",winkeys" 
Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"

 

Эти опции описывают раскладки клавиатуры. 
Обычно там стоит "grp:caps_toggle" - переключать с помощью клавиши CapsLock, что довольно непривычно и неудобно. 
Также через запятую добавим, что индикатором раскладки будет служить лампочка ScrollLock.

2. Выключаем в KDE выбор раскладок клавиатуры.

 

3. Для современного X-сервера от xorg (версия 1.6.1), который добавляет устройства с помощью службы HAL, к вышенаписанному следует добавить в секции ServerLayout запрет на работу HAL:

 

Section "ServerLayout"

        .................

        Option "AllowEmptyInput" "false"
        Option  "AutoAddDevices" "false"
EndSection

 

 

Как повернуть изображение на 90 градусов на втором дисплее, подключенном к Nvidia?

Для KDE3 и KDE4 в момент написания этого пункта FAQа решения были разные.

Nvidia позволяет по-разному работать с двумя дисплеями.

1. Это могут быть отдельные Screen.

2. Это может быть общий дисплей, объединённые технологией TwinView.

3. Это может быть общий дисплей, объединённый расширением Xinerama.

 

Настройки /etc/rc.d/xorg.conf удобно делать с помощью программы nvidia-settings.

 

Для KDE3 удобно работать с отдельными Screen.

Чтобы настройки KDE3 позволили поворачивать изображение, в /etc/X11/xorg.conf

надо вручную в секции драйверов вставить опцию "RandrRotation":

Section "Device"

     Driver "nvidia"

     ...

     Option "RandrRotation" "on"

EndSection

Ну и перезапустить графическую подсистему.

 

 

Для KDE4 немного не так. KDE4.3 пока не умеет работать с отдельными Screen.

TwinView позволяет растягивать Рабочий стол на 2 монитора, но вращать можно

только оба экрана вместе (да и то это не работает, разве что вверх ногами можно крутнуть).

Подходит только Xinerama и доп. опция "Rotate" для того монитора, где изображение

надо крутить в /etc/X11/xorg.conf:

 

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" RightOf "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "1"
EndSection
...

Section "Monitor"
    Identifier     "Monitor1"

    ...

    Option         "Rotate" "CCW"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"

    ....
    Option         "RandrRotation" "on"
    Screen          0
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"

    ...

    Option         "RandrRotation" "on"
    Screen          1
EndSection

 

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "TwinViewXineramaInfoOrder" "CRT-0"
    Option         "metamodes" "CRT: 1024x768_85 +0+0; CRT: 800x600 +0+0; CRT: 640x480 +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "DFP: 1280x1024 +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

 

 


Как сделать автоматический вход пользователя в графической сессии?

Для GDM:

В файле /etc/X11/gdm/custom.conf должно быть:

 

[daemon]

 

TimedLoginEnable=true
TimedLogin=user_name
TimedLoginDelay=0

 

 


MySQL

Как дать доступ новому пользователю?

GRANT ALL PRIVILEGES ON MYDB.* TO newuser@localhost  IDENTIFIED BY 'verysecret'

Как просмотреть список таблиц?

SHOW TABLES;

Как просмотреть список колонок таблицы?

SHOW COLUMNS FROM MYTABLE;