воскресенье, 31 января 2010 г.

ReadyNAS Duo. How to compile Midnight Commader 4.7.0.1

Хочу сказать спасибо разработчикам mc из конференции mc-dev@conference.jabber.ru
il.smind, slavazanko, andrew_b, repolainen за терпение и позитивный настрой.
Без их помощи я потратил бы, наверняка, значительно больше времени с неизвестным результатом.

В репозитории ReadyNas Duo есть сбранный midnight commander. И проще всего установить именно из репозитериев. Но в нем отсутствует поддержка utf-8, что затрудняет работу с файлами в русской кодировке. Поэтому я решил собрать из исходников последнюю версию.

Итак.
  1. Должны быть установлены add-on: EnableRootSSH_1.0.bin, APT_1.0.bin

  2. Установить компилятор

    # apt-get update # apt-get install libc6-dev gcc gdb libtag1-dev uuid-dev pkg-config gettext bzip2

  3. Полезно установить какой нибудь редактор. Например nano
    # apt-get install nano

  4. Компилировать все пакеты будем в директории staff. В моем случае полный путь к staff будет /homes/akhromov/staff.

    # cd /homes/akhromov # mkdir staff # cd staff

  5. Установить checkinstall (чтобы было можно создавать установочные пакеты)

    # wget http://asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz # tar xvfz checkinstall-1.6.2.tar.gz # cd checkinstall-1.6.2 # make # make install # checkinstall ... ... The package documentation directory ./doc-pak does not exist. Should I create a default set of package docs? [y]: n ... Please choose the packaging method you want to use. Slackware [S], RPM [R] or Debian [D]? D ... This package will be built according to these values: 0 - Maintainer: [ root@rnd ] 1 - Summary: [ CheckInstall installations tracker, version 1.6.2 ] 2 - Name: [ checkinstall ] 3 - Version: [ 1.6.2 ] 4 - Release: [ 1 ] 5 - License: [ GPL ] 6 - Group: [ checkinstall ] 7 - Architecture: [ sparc ] 8 - Source location: [ checkinstall-1.6.2 ] 9 - Alternate source location: [ ] 10 - Requires: [ ] 11 - Provides: [ ] 12 - Conflicts: [ ] 13 - Replaces: [ ] ... ... # dpkg -i checkinstall_1.6.2-1_sparc.deb # cd ..

    Курсивом показаны вопросы, которые задает checknstall. Жирным - ответы. Аналогично ответить нужно будет и дальше при создании дистрибутивов slang, glib и mc.

  6. Компиляция glib-2.14.6 (~20 минут)

    # wget http://ftp.gnome.org/pub/gnome/sources/glib/2.14/glib-2.14.6.tar.bz2 # tar xjf glib-2.14.6.tar.bz2 # cd glib-2.14.6 # ./configure --build='sparc-linux' # make # chechinstall # dpkg -i glib_2.14.6-1_sparc.deb # cd ..


  7. Компилируем slang-2.2 (~15 минут)

    # wget ftp://space.mit.edu/pub/davis/slang/v2.2/slang-2.2.0.tar.bz2 # tar xjf slang-2.2.0.tar.bz2

    В модуле slang-2.2.0/modules/fork-module.c (line 273) добавить
    #ifndef WCONTINUED
    #  define WCONTINUED 0                /* not available on ReadyNas Duo */
    #endif
    
    # cd slang-2.2.0 # ./configure --build='sparc-linux' # make # checkinstall # dpkg -i slang_2.2.0-1_sparc.deb # cd ..


  8. компилируем mc (~ 20 минут)

    # wget http://www.midnight-commander.org/downloads/22 -O mc-4.7.0.1.tar.bz2 # tar xjf mc-4.7.0.1.tar.bz2 # cd mc-4.7.0.1 # ./configure --disable-vfs --build='sparc-linux' # make # checkinstall # dpkg -i mc_4.7.0.1-1_sparc.deb


Ну и вот что из этого получилось:



Кому лениво все это проделывать, тот может установить из собранных мной пакетов # cd /tmp # wget http://www.opendrive.com/files/8633064_sal1L_8351/glib_2.16.6-1_sparc.deb # wget http://www.opendrive.com/files/8633061_FyV1y_b1e9/slang_2.2.0-1_sparc.deb # wget http://www.opendrive.com/files/8633065_WMLjj_84b1/mc_4.7.4-1_sparc.deb # dpkg -i glib_2.16.6-1_sparc.deb slang_2.2.0-1_sparc.deb mc_4.7.4-1_sparc.deb

Подводные камни.

Я нарвался на такой фокус. Установил из репозитория предыдущую версию mc и старый glib. Компилируя новый glib, старый я не удалал. Из-за этого в библиотеках получалась мешанина и линкер не мог правильно собрать mc.


Если нет подходящей темы, открывайте новую.

суббота, 16 января 2010 г.

Как смонтировать образ iso на ReadyNAS Duo.

Предистория.
В моей сети успешно трудится великолепный RAID ReadyNAS Duo.
Скачал я как то с torrents.ru библиотеку траума, которая была в виде образа iso размером 29 GB. Зачем ее разархивировать, не лучше ли ее смонтировать как файловую систему?
Но оказалось, что в штатной установке нет необходимых драйверов. На команду mount выдается вот такое сообщение:
mount: unknown filesystem type 'udf'
Это несложно исправить. Нужно всего-навсего скомпилировать недостающий модуль. Итак:

Убедиться, что уже установлено и работает подключение к устройству по ssh: http://axa-ru.blogspot.com/2009/05/telnet-readynas-duo.html

  1. Установить компилятор и необходимые бибилиотеки. (http://www.readynas.com/?p=145)
    # apt-get update # apt-get install libc6-dev gcc gdb libtag1-dev uuid-dev libncurses5-dev libglib2.0-dev
    На прошивке RAIDiator 4.1.7 [1.00a043] уже установлена библиотека uuid-dev и возможно получение ошибки ее инсталляции. В этом случае не устанавливайте uuid-dev.

  2. Загрузить и распаковать дистрибутив ядра и утилит.

    # mkdir -p /c/media/stuff/rnd # cd /c/media/stuff/rnd # wget http://www.readynas.com/download/GPL/RNR4_RND4_RND2_4.1.7_WW_src.zip # unzip RNR4_RND4_RND2_4.1.7_WW_src.zip # cd linux-2.6.17.14
  3. Настроить опции компиляции

    # make menuconfig

    File systems ---> CD-ROM/DVD Filesystems --->


  4. Установить опцию нативной компиляции
    В файле arch/padre/Makefile заменить CROSS_COMPILE = на CROSS_COMPILE ?=

  5. Скомпилировать модули ядра.

    rnd:/c/home/akhromov/staff/rnd/linux-2.6.17.8# make modules make: Circular arch/padre/kernel/asm-offsets.s <- prepare dependency dropped. HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/split-include HOSTCC scripts/basic/docproc HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/kxgettext.o HOSTCC scripts/kconfig/mconf.o HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf scripts/kconfig/conf -s arch/padre/Kconfig arch/padre/Kconfig:107:warning: type of 'OBSOLETE_INTERMODULE' redefined from 'tristate' to 'boolean' arch/padre/Kconfig:180:warning: 'select' used by config symbol 'PADRE_FLASH' refer to undefined symbol 'MTD_NAND_ECC' net/bluetooth/hidp/Kconfig:4:warning: 'select' used by config symbol 'BT_HIDP' refer to undefined symbol 'INPUT' fs/Kconfig:1724:warning: 'select' used by config symbol 'CIFS_UPCALL' refer to undefined symbol 'CONNECTOR' drivers/usb/host/Kconfig:68:warning: 'select' used by config symbol 'USB_OHCI_HCD' refer to undefined symbol 'ISP1301_OMAP' drivers/usb/Kconfig:100:warning: 'select' used by config symbol 'USB_USS720' refer to undefined symbol 'PARPORT_NOT_PC' drivers/usb/misc/sisusbvga/Kconfig:18:warning: 'select' used by config symbol 'USB_SISUSBVGA_CON' refer to undefined symbol 'FONT_8x16' drivers/usb/gadget/Kconfig:161:warning: 'select' used by config symbol 'USB_GADGET_OMAP' refer to undefined symbol 'ISP1301_OMAP' # # using defaults found in .config # SPLIT include/linux/autoconf.h -> include/config/* HOSTCC scripts/genksyms/genksyms.o HOSTCC scripts/genksyms/lex.o HOSTCC scripts/genksyms/parse.o HOSTLD scripts/genksyms/genksyms CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/file2alias.o HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/sumversion.o HOSTLD scripts/mod/modpost HOSTCC scripts/kallsyms CHK include/linux/version.h CC arch/padre/kernel/asm-offsets.s CHK include/asm-padre/asm_offsets.h UPD include/asm-padre/asm_offsets.h GEN include/asm-padre/asm-offsets.h CC [M] fs/fat/cache.o CC [M] fs/fat/dir.o CC [M] fs/fat/fatent.o CC [M] fs/fat/file.o CC [M] fs/fat/inode.o CC [M] fs/fat/misc.o LD [M] fs/fat/fat.o CC [M] fs/fuse/dev.o CC [M] fs/fuse/dir.o CC [M] fs/fuse/file.o CC [M] fs/fuse/inode.o CC [M] fs/fuse/control.o fs/fuse/control.c: In function `fuse_ctl_add_dentry': fs/fuse/control.c:100: warning: assignment discards qualifiers from pointer target type LD [M] fs/fuse/fuse.o CC [M] fs/hfs/bitmap.o CC [M] fs/hfs/bfind.o CC [M] fs/hfs/bnode.o CC [M] fs/hfs/brec.o CC [M] fs/hfs/btree.o CC [M] fs/hfs/catalog.o CC [M] fs/hfs/dir.o CC [M] fs/hfs/extent.o CC [M] fs/hfs/inode.o CC [M] fs/hfs/attr.o CC [M] fs/hfs/mdb.o CC [M] fs/hfs/part_tbl.o CC [M] fs/hfs/string.o CC [M] fs/hfs/super.o CC [M] fs/hfs/sysdep.o CC [M] fs/hfs/trans.o LD [M] fs/hfs/hfs.o CC [M] fs/hfsplus/super.o CC [M] fs/hfsplus/options.o CC [M] fs/hfsplus/inode.o CC [M] fs/hfsplus/ioctl.o CC [M] fs/hfsplus/extents.o CC [M] fs/hfsplus/catalog.o CC [M] fs/hfsplus/dir.o CC [M] fs/hfsplus/btree.o CC [M] fs/hfsplus/bnode.o CC [M] fs/hfsplus/brec.o CC [M] fs/hfsplus/bfind.o CC [M] fs/hfsplus/tables.o CC [M] fs/hfsplus/unicode.o CC [M] fs/hfsplus/wrapper.o CC [M] fs/hfsplus/bitmap.o CC [M] fs/hfsplus/part_tbl.o LD [M] fs/hfsplus/hfsplus.o CC [M] fs/isofs/namei.o CC [M] fs/isofs/inode.o CC [M] fs/isofs/dir.o CC [M] fs/isofs/util.o CC [M] fs/isofs/rock.o CC [M] fs/isofs/export.o CC [M] fs/isofs/joliet.o CC [M] fs/isofs/compress.o LD [M] fs/isofs/isofs.o CC [M] fs/msdos/namei.o LD [M] fs/msdos/msdos.o CC [M] fs/nls/nls_cp437.o CC [M] fs/nls/nls_cp850.o CC [M] fs/nls/nls_cp852.o CC [M] fs/nls/nls_cp866.o CC [M] fs/nls/nls_cp932.o CC [M] fs/nls/nls_euc-jp.o CC [M] fs/nls/nls_cp936.o CC [M] fs/nls/nls_cp949.o CC [M] fs/nls/nls_cp950.o CC [M] fs/udf/balloc.o CC [M] fs/udf/dir.o CC [M] fs/udf/file.o CC [M] fs/udf/ialloc.o CC [M] fs/udf/inode.o CC [M] fs/udf/lowlevel.o CC [M] fs/udf/namei.o CC [M] fs/udf/partition.o CC [M] fs/udf/super.o CC [M] fs/udf/truncate.o CC [M] fs/udf/symlink.o CC [M] fs/udf/fsync.o CC [M] fs/udf/crc.o CC [M] fs/udf/directory.o CC [M] fs/udf/misc.o CC [M] fs/udf/udftime.o CC [M] fs/udf/unicode.o LD [M] fs/udf/udf.o CC [M] fs/vfat/namei.o LD [M] fs/vfat/vfat.o CC [M] drivers/block/aoe/aoeblk.o CC [M] drivers/block/aoe/aoechr.o CC [M] drivers/block/aoe/aoecmd.o CC [M] drivers/block/aoe/aoedev.o CC [M] drivers/block/aoe/aoemain.o CC [M] drivers/block/aoe/aoenet.o LD [M] drivers/block/aoe/aoe.o CC [M] drivers/net/mii.o CC [M] drivers/net/8139too.o drivers/net/8139too.c: In function `__rtl8139_cleanup_dev': drivers/net/8139too.c:721: warning: implicit declaration of function `ioport_unmap' drivers/net/8139too.c: In function `rtl8139_init_board': drivers/net/8139too.c:837: warning: implicit declaration of function `ioport_map' drivers/net/8139too.c:837: warning: assignment makes pointer from integer without a cast CC [M] drivers/net/r8169.o CC [M] drivers/net/e1000/e1000_main.o CC [M] drivers/net/e1000/e1000_hw.o CC [M] drivers/net/e1000/e1000_ethtool.o CC [M] drivers/net/e1000/e1000_param.o LD [M] drivers/net/e1000/e1000.o CC [M] drivers/net/wireless/rt2500/rtmp_main.o drivers/net/wireless/rt2500/rtmp_main.c:89: warning: `wireless_hotplug' defined but not used CC [M] drivers/net/wireless/rt2500/mlme.o CC [M] drivers/net/wireless/rt2500/connect.o CC [M] drivers/net/wireless/rt2500/sync.o CC [M] drivers/net/wireless/rt2500/assoc.o CC [M] drivers/net/wireless/rt2500/auth.o CC [M] drivers/net/wireless/rt2500/auth_rsp.o CC [M] drivers/net/wireless/rt2500/rtmp_data.o CC [M] drivers/net/wireless/rt2500/rtmp_init.o CC [M] drivers/net/wireless/rt2500/sanity.o CC [M] drivers/net/wireless/rt2500/rtmp_wep.o CC [M] drivers/net/wireless/rt2500/rtmp_info.o CC [M] drivers/net/wireless/rt2500/eeprom.o CC [M] drivers/net/wireless/rt2500/rtmp_tkip.o CC [M] drivers/net/wireless/rt2500/wpa.o CC [M] drivers/net/wireless/rt2500/md5.o LD [M] drivers/net/wireless/rt2500/rt2500.o CC [M] drivers/scsi/scsi.o CC [M] drivers/scsi/hosts.o CC [M] drivers/scsi/scsi_ioctl.o CC [M] drivers/scsi/constants.o CC [M] drivers/scsi/scsicam.o CC [M] drivers/scsi/scsi_error.o CC [M] drivers/scsi/scsi_lib.o CC [M] drivers/scsi/scsi_scan.o CC [M] drivers/scsi/scsi_sysfs.o CC [M] drivers/scsi/scsi_devinfo.o CC [M] drivers/scsi/scsi_sysctl.o CC [M] drivers/scsi/scsi_proc.o CC [M] drivers/scsi/sd.o LD [M] drivers/scsi/scsi_mod.o LD [M] drivers/scsi/sd_mod.o CC [M] drivers/scsi/sg.o CC [M] drivers/usb/class/usblp.o CC [M] drivers/usb/host/ehci-hcd.o CC [M] drivers/usb/host/uhci-hcd.o CC [M] drivers/usb/input/hid-core.o CC [M] drivers/usb/input/hiddev.o LD [M] drivers/usb/input/usbhid.o CC [M] drivers/usb/misc/usbtest.o CC [M] drivers/usb/net/rtl8150.o CC [M] drivers/usb/storage/scsiglue.o CC [M] drivers/usb/storage/protocol.o CC [M] drivers/usb/storage/transport.o CC [M] drivers/usb/storage/usb.o CC [M] drivers/usb/storage/initializers.o CC [M] drivers/usb/storage/shuttle_usbat.o CC [M] drivers/usb/storage/sddr09.o CC [M] drivers/usb/storage/sddr55.o CC [M] drivers/usb/storage/freecom.o CC [M] drivers/usb/storage/dpcm.o CC [M] drivers/usb/storage/datafab.o CC [M] drivers/usb/storage/jumpshot.o CC [M] drivers/usb/storage/alauda.o LD [M] drivers/usb/storage/usb-storage.o CC [M] lib/zlib_inflate/infblock.o CC [M] lib/zlib_inflate/infcodes.o CC [M] lib/zlib_inflate/inffast.o CC [M] lib/zlib_inflate/inflate.o CC [M] lib/zlib_inflate/inflate_sync.o CC [M] lib/zlib_inflate/inftrees.o CC [M] lib/zlib_inflate/infutil.o CC [M] lib/zlib_inflate/inflate_syms.o LD [M] lib/zlib_inflate/zlib_inflate.o Building modules, stage 2. MODPOST CC drivers/block/aoe/aoe.mod.o LD [M] drivers/block/aoe/aoe.ko CC drivers/net/8139too.mod.o LD [M] drivers/net/8139too.ko CC drivers/net/e1000/e1000.mod.o LD [M] drivers/net/e1000/e1000.ko CC drivers/net/mii.mod.o LD [M] drivers/net/mii.ko CC drivers/net/r8169.mod.o LD [M] drivers/net/r8169.ko CC drivers/net/wireless/rt2500/rt2500.mod.o LD [M] drivers/net/wireless/rt2500/rt2500.ko CC drivers/scsi/scsi_mod.mod.o LD [M] drivers/scsi/scsi_mod.ko CC drivers/scsi/sd_mod.mod.o LD [M] drivers/scsi/sd_mod.ko CC drivers/scsi/sg.mod.o LD [M] drivers/scsi/sg.ko CC drivers/usb/class/usblp.mod.o LD [M] drivers/usb/class/usblp.ko CC drivers/usb/host/ehci-hcd.mod.o LD [M] drivers/usb/host/ehci-hcd.ko CC drivers/usb/host/uhci-hcd.mod.o LD [M] drivers/usb/host/uhci-hcd.ko CC drivers/usb/input/usbhid.mod.o LD [M] drivers/usb/input/usbhid.ko CC drivers/usb/misc/usbtest.mod.o LD [M] drivers/usb/misc/usbtest.ko CC drivers/usb/net/rtl8150.mod.o LD [M] drivers/usb/net/rtl8150.ko CC drivers/usb/storage/usb-storage.mod.o LD [M] drivers/usb/storage/usb-storage.ko CC fs/fat/fat.mod.o LD [M] fs/fat/fat.ko CC fs/fuse/fuse.mod.o LD [M] fs/fuse/fuse.ko CC fs/hfs/hfs.mod.o LD [M] fs/hfs/hfs.ko CC fs/hfsplus/hfsplus.mod.o LD [M] fs/hfsplus/hfsplus.ko CC fs/isofs/isofs.mod.o LD [M] fs/isofs/isofs.ko CC fs/msdos/msdos.mod.o LD [M] fs/msdos/msdos.ko CC fs/nls/nls_cp437.mod.o LD [M] fs/nls/nls_cp437.ko CC fs/nls/nls_cp850.mod.o LD [M] fs/nls/nls_cp850.ko CC fs/nls/nls_cp852.mod.o LD [M] fs/nls/nls_cp852.ko CC fs/nls/nls_cp866.mod.o LD [M] fs/nls/nls_cp866.ko CC fs/nls/nls_cp932.mod.o LD [M] fs/nls/nls_cp932.ko CC fs/nls/nls_cp936.mod.o LD [M] fs/nls/nls_cp936.ko CC fs/nls/nls_cp949.mod.o LD [M] fs/nls/nls_cp949.ko CC fs/nls/nls_cp950.mod.o LD [M] fs/nls/nls_cp950.ko CC fs/nls/nls_euc-jp.mod.o LD [M] fs/nls/nls_euc-jp.ko CC fs/udf/udf.mod.o LD [M] fs/udf/udf.ko CC fs/vfat/vfat.mod.o LD [M] fs/vfat/vfat.ko CC lib/zlib_inflate/zlib_inflate.mod.o LD [M] lib/zlib_inflate/zlib_inflate.ko rnd:/c/home/akhromov/staff/rnd/linux-2.6.17.8#

  6. Установить драйверы.

    # mkdir /lib/modules/2.6.17.14ReadyNAS/kernel/fs/udf # mkdir /lib/modules/2.6.17.14ReadyNAS/kernel/lib # mkdir /lib/modules/2.6.17.14ReadyNAS/kernel/fs/isofs # cp /media/staff/rnd/linux-2.6.17.14/fs/udf/udf.ko /lib/modules/2.6.17.14ReadyNAS/kernel/fs/udf # cp /media/staff/rnd/linux-2.6.17.14/lib/zlib_inflate/zlib_inflate.ko /lib/modules/2.6.17.14ReadyNAS/kernel # cp /media/staff/rnd/linux-2.6.17.14/fs/isofs/isofs.ko /lib/modules/2.6.17.14ReadyNAS/kernel/fs/isofs # insmod /lib/modules/2.6.17.14ReadyNAS/kernel/fs/udf/udf.ko # insmod /lib/modules/2.6.17.14ReadyNAS/kernel/zlib_inflate.ko # insmod /lib/modules/2.6.17.14ReadyNAS/kernel/fs/isofs/isofs.ko

Собственно теперь можно и смонтировать образ iso диска (для этого я все и затевал)
# mkdir /c/media/traum # mount -o loop /media/Book/Traum.213.lrf/traum_2.13_lrf.iso /c/media/traum
Все. Теперь по smb доступен наш архив .iso



Получить доступ с рабочей станции из под gnome через nfs я пока не смог.
Знающие люди говорят это баг в ядре: http://www.linux.org.ru/view-message.jsp?msgid=4461325&lastmod=1264089416813.
Если у кого есть соображения - буду признателен.

Если нет подходящей темы, открывайте новую.