Ubuntu 9.04 и Wubi, что б ей…
Юра — мой идеологический наставник — рассказал, что для Ubuntu есть такая штучка Wubi, которая позволяет устанавливать систему из-под Windows-а в обычный файл (образ диска) вместо настоящего раздела. И потом удобно загружать её через NTLDR. И так я решил посмотреть новую Ubuntu 9.04.
О первом горьком опыте работы рассказал ещё Юра. Он хотел установить Ubuntu на флешку, но Wubi отказалась запускаться. Вынимает флешку — запускается. Вставляет обратно — снова не хочет. По журналу он выяснил, что причина в русской метке раздела на флешке. Я попробовал воспроизвести — правда. Причем программа падает тихо, без каких либо уведомлений. Знающие о журнале работы обнаружат в нем что-то такое:
05-05 22:09 ERROR root: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) Traceback (most recent call last): File "Z:\home\evan\bzr\wubi.trunk\build\wubi\files\lib\wubi\application.py", line 54, in run File "Z:\home\evan\bzr\wubi.trunk\build\wubi\files\lib\wubi\backends\common\backend.py", line 153, in fetch_basic_info File "Z:\home\evan\bzr\wubi.trunk\build\wubi\files\lib\wubi\backends\win32\backend.py", line 73, in fetch_host_info File "Z:\home\evan\bzr\wubi.trunk\build\wubi\files\lib\wubi\backends\win32\backend.py", line 291, in get_drives File "Z:\home\evan\bzr\wubi.trunk\build\wubi\files\lib\wubi\backends\win32\drive.py", line 44, in __init__ File "Z:\home\evan\bzr\wubi.trunk\build\wubi\files\lib\wubi\backends\win32\drive.py", line 74, in get_volume_information UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
Теперь о моих личных приключениях. Пришёл домой, прожёг образ Ubuntu 9.04 на CD-R, запустил установку через Wubi. Проходит несколько минут и я получаю такое сообщение:
--------------------------- Ubuntu Installer --------------------------- An error occurred: Invalid argument For more information, please see the log file: c:\windows\temp\wubi-9.04-rev128.log --------------------------- ОК ---------------------------
В журнале информация малополезная:
05-05 22:16 ERROR TaskList: [Errno 22] Invalid argument Traceback (most recent call last): File "Z:\home\evan\bzr\wubi.trunk\build\wubi\files\lib\wubi\backends\common\tasklist.py", line 196, in __call__ File "Z:\home\evan\bzr\wubi.trunk\build\wubi\files\lib\wubi\backends\common\utils.py", line 206, in copy_file IOError: [Errno 22] Invalid argument 05-05 22:16 DEBUG TaskList: # Cancelling tasklist 05-05 22:16 ERROR root: [Errno 22] Invalid argument
Тыкал и туда, и сюда. Искал по базе багов. Просто искал. Ничего. Взялся
за изучение исходного кода. Оказалось, что Wubi обратно создает образ диска,
который я прожёг, а потом ей
что-то не удается прочесть в функции copy_file.
В конце-концов от проблемы избавился так:
положил образ ubuntu-9.04-desktop-i386.iso и wubi.exe в одну папку,
запустил установку без диска. Всё хорошо.
Потом пришёл к Юле, что бы установить Ubuntu на её компьютер. Наученный предыдущим опытом я сразу проверил метки дисков на наличие неугодных Wubi символов. Положил образ и wubi.exe в одну папку, запустил. Огрёб:
--------------------------- Ubuntu Installer --------------------------- Произошла ошибка: writelines() argument must be a sequence of strings Более подробную информацию смотрите в файле журнала: c:\windows\temp\wubi-9.04-rev128.log --------------------------- ОК --------------------------- 05-05 22:11 ERROR TaskList: writelines() argument must be a sequence of strings Traceback (most recent call last): File "Z:\home\evan\bzr\wubi.trunk\build\wubi\files\lib\wubi\backends\common\tasklist.py", line 196, in __call__ File "Z:\home\evan\bzr\wubi.trunk\build\wubi\files\lib\wubi\backends\win32\backend.py", line 161, in copy_installation_files File "Z:\home\evan\bzr\wubi.trunk\build\wubi\files\lib\wubi\backends\common\utils.py", line 257, in replace_line_in_file TypeError: writelines() argument must be a sequence of strings 05-05 22:11 DEBUG TaskList: # Cancelling tasklist
МПиО показал, что причина в выбранном украинском языке. С английским тоже не работало. Только с русским.
Ладно, процесс пошёл. Но ненадолго. Wubi снова молча куда-то исчезла, лишь оставив в журнале следующее:
05-05 22:50 ERROR TaskList: 'ascii' codec can't decode byte 0xf1 in position 0: ordinal not in range(128) Traceback (most recent call last): File "Z:\home\evan\bzr\wubi.trunk\build\wubi\files\lib\wubi\backends\common\tasklist.py", line 196, in __call__ File "Z:\home\evan\bzr\wubi.trunk\build\wubi\files\lib\wubi\backends\common\backend.py", line 578, in create_preseed UnicodeDecodeError: 'ascii' codec can't decode byte 0xf1 in position 0: ordinal not in range(128) 05-05 22:50 DEBUG TaskList: # Cancelling tasklist
Я долго думал, МПиО-пил, искал. В результае оказалось, что причина в русском названии профиля пользователя Windows-а. Какой кошмар.
Кстати, смотрю вот, что сегодня ошибка с не-ASCII символами, кажется, была исправлена.
Ох, уж этот оупенсорс.
Добавлено. Вспомнил, что была ещё одна ошибка у Юли на компьютере: Wubi требовала наличия какого-то bcdedit.exe. Пришлось скачать и подсунуть.