Статья уже не актуальна и клавиатура работает после обновления BIOS. Подробности тут
Итак, сегодня я могу сказать, что на Lenovo S10 3C уже можно устанавливать Ubuntu и нормально пользоваться, включая ACPI.
Я попытаюсь обобщить в одном посте всю информацию собранную мною в сети, а также предоставленную пользователями этого сайта. Все описанное ниже будет справедливо для Ubuntu 10.04 Netbook Remix. В новых релизах возможно что то заработает «искаропки»
Для начала готовим загрузочную флешку с Ubuntu Netbook Remix и загружаемся с нее с параметрами
noapic acpi=off
Выбор опций загрузки в Ubuntu вызывается по клавише F6.
Первым делом после установки нам нужно завести клавиатуру, ибо совместно с ACPI она не работает. Для этого создаем файл с произвольным названием, скажем lenovo.c и вставляем в него следующий код:
#include #include #define I8042_COMMAND_REG 0x64 int main(int argc, char *argv[]) { char data = 0xae; // enable keyboard ioperm(I8042_COMMAND_REG, 1, 1); if (argc == 2 && argv[1][0] == '0') data = 0xad; // disable keyboard outb(data, I8042_COMMAND_REG); return 0; }
Далее скомпилируем исходник получив бинарный файл который и будет «лечить» клавиатуру
gcc lenovo.c -o lenovo_keyboard
Кому лень это делать или не знает как внизу поста я прикреплю скомпилированные бинарники для архитектуры x86 и x86_64
Копируем получившийся файл в /usr/local/bin и дадим права на его исполнение:
sudo cp lenovo_keyboard /usr/local/bin
sudo chmod 777 /usr/local/bin/lenovo_keyboard
Теперь нужно сделать так чтобы данный код исполнялся каждый раз при загрузке системы. Для этого откроем /etc/rc.local и приведем его в такой вид:
#!/bin/sh -e /usr/local/bin/lenovo_keyboard 1 exit 0
Теперь перезагрузившись клавиатура должна работать.
Wi-Fi на Lenovo S10 3C искаропки на 10.04 тоже отказалась работать. Я не буду повторяться, так как уже написал небольшой пост о том как поднять на данном устройства Wi-Fi.
Для полноценной работы с нетбуком нужен работоспособный спящий режим (S2RAM). Спящий режим сам по себе работает, только клавиатура после выхода из спячки отваливается и приходится либо перезагружаться либо подключать внешнюю клавиатуру чтобы запустить lenovo_keyboard, что очень омрачает. Выход из этой ситуации я нашел. Наверняка таких способов может быть куча, но я сделал так:
Создаем событие acpid и скрипт который будет выполняться когда это событие будет отловленно системой. (Открытие закрытие крышки нетбука)
sudo nano -w /etc/acpi/events/wakeup
В открывшийся файл вставляем следующее:
event=button/lid LID 00000080 action=/etc/acpi/wakeup.sh
Сохраняем, закрываем и перейдем к самому скрипту. Скриптом это назвать сложно, но оно работает.
sudo nano -w /etc/acpi/wakeup.sh
В открывшийся файл вставляем:
#!/bin/bash cd /usr/local/bin ./lenovo_keyboard
Сохраним и дадим скрипту права на исполнение
sudo chmod 777 /etc/acpi/wakeup.sh
Теперь при выходе из спящего режима уже начиная с этапа ввода пароля клавиатура должна работать..
Скачать архив с исходниками