LINUX.ORG.RU

Сообщения SaintSatanist

 

Исправить флэшку. Fdisk не помогает.

Сегодня воткнул флэху, винда видит, спрашивает форматнуть, но форматнуть не может. Принёс домой, система у меня такая:

root@ss-Vostro1310:/home/ss# uname -a
Linux ss-Vostro1310 3.5.0-36-generic #57~precise1-Ubuntu SMP Thu Jun 20 18:21:09 UTC 2013 x86_64 GNU/Linux
root@ss-Vostro1310:/home/ss# lsb_release -r
Release:	12.04
Воткнул флэшку, появилось это:
root@ss-Vostro1310:/home/ss# dmesg
[ 8607.168212] usb 2-2: new high-speed USB device number 2 using ehci_hcd
[ 8607.301015] usb 2-2: New USB device found, idVendor=0204, idProduct=6025
[ 8607.301027] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 8607.301035] usb 2-2: Product: USB Mini Rubber
[ 8607.301042] usb 2-2: Manufacturer: takeMS
[ 8607.301049] usb 2-2: SerialNumber: AA04012700101060
[ 8607.353015] Initializing USB Mass Storage driver...
[ 8607.353197] scsi5 : usb-storage 2-2:1.0
[ 8607.353292] usbcore: registered new interface driver usb-storage
[ 8607.353294] USB Mass Storage support registered.
[ 8608.353130] scsi 5:0:0:0: Direct-Access     takeMS   USB Mini Rubber  5.00 PQ: 0 ANSI: 2
[ 8608.363541] sd 5:0:0:0: [sdb] 8279040 512-byte logical blocks: (4.23 GB/3.94 GiB)
[ 8608.364168] sd 5:0:0:0: [sdb] Write Protect is off
[ 8608.364179] sd 5:0:0:0: [sdb] Mode Sense: 0b 00 00 08
[ 8608.364332] sd 5:0:0:0: Attached scsi generic sg2 type 0
[ 8608.364636] sd 5:0:0:0: [sdb] No Caching mode page present
[ 8608.364641] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[ 8608.367393] sd 5:0:0:0: [sdb] No Caching mode page present
[ 8608.367399] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[ 8608.369905]  sdb: unknown partition table
[ 8608.372414] sd 5:0:0:0: [sdb] No Caching mode page present
[ 8608.372419] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[ 8608.372423] sd 5:0:0:0: [sdb] Attached SCSI removable disk
Вроде физически видит. Дальше fdisk:
root@ss-Vostro1310:/home/ss# fdisk -l /dev/sdb

Disk /dev/sdb: 4238 MB, 4238868480 bytes
131 heads, 62 sectors/track, 1019 cylinders, total 8279040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xffffffff

Disk /dev/sdb doesn't contain a valid partition table
Это уже смущает. Почитал выборку гугла по этой ошибке, решил прибегнуть к суровому дд:
root@ss-Vostro1310:/home/ss# dd if=/dev/zero of=/dev/sdb bs=64k
dd: writing `/dev/sdb': No space left on device
64681+0 records in
64680+0 records out
4238868480 bytes (4.2 GB) copied, 622.8 s, 6.8 MB/s
dd отрабатывает без сбоев. Далее попытка создать раздел:
root@ss-Vostro1310:/home/ss# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x26ae3553.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
Partition number (1-4, default 1): 
Using default value 1
First sector (2048-8279039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-8279039, default 8279039): 
Using default value 8279039

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)

Command (m for help): p

Disk /dev/sdb: 4238 MB, 4238868480 bytes
131 heads, 62 sectors/track, 1019 cylinders, total 8279040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x26ae3553

   Device Boot      Start         End      Blocks   Id  System
dev/sdb1            2048     8279039     4138496    6  FAT16

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
Главное в конце перед write оно показывает /dev/sdb1, но на деле я увидел, что fdisk схалтурил и ничего не сделал:
root@ss-Vostro1310:/home/ss# ls /dev/sd
sda   sda1  sda2  sda3  sda4  sda5  sda6  sdb   
root@ss-Vostro1310:/home/ss# mkfs.vfat -F 32 /dev/sdb1
mkfs.vfat 3.0.12 (29 Oct 2011)
/dev/sdb1: No such file or directory
Пробовал ещё стандартную disk-utility, после попытки форматировать выдаёт ошибку Error formating drive:
Error creating partition table: timeout (10s) waiting for change
Как исправить флэшку?

Буду рад любому совету и предписанию.

 ,

SaintSatanist
()

Подключение библиотек ".а" к модулю ядра

Есть исходники модуля ядра pf_ring.ko. Возникла необходимость пересобрать модуль с использованием своих ассемблерных функций, специализированных под 64-битную архитектуру. Скомпилированная as-ом функция теперь лежит в библиотеке libasm.a

В Makefile нету прямого вызова gcc, поэтому дописать параметром -lasm не имею возможности. Содержимое Makefile:

obj-m := pf_ring.o

SVNDEF := -DSVN_REV="\"$(shell svnversion -n .)\""

ifeq (,$(BUILD_KERNEL))
BUILD_KERNEL=$(shell uname -r)
endif

EXTRA_CFLAGS += -I$(PWD) $(SVNDEF)

HERE=$(PWD)

# set the install path
INSTDIR := $(DESTDIR)/lib/modules/$(BUILD_KERNEL)/kernel/net/pf_ring

all: Makefile pf_ring.c linux/pf_ring.h
    make -C /lib/modules/$(BUILD_KERNEL)/build SUBDIRS=$(HERE) EXTRA_CFLAGS='$(EXTRA_CFLAGS)' modules

clean:
...
install:
...
Собственно по адресу /lib/modules/2.6.35-22-server/build/Makefile лежит файл на 50килобайт, зацитирую только часть:
.....
ifdef CONFIG_MODULES

# By default, build modules as well

all: modules

#   Build modules
#
#   A module can be listed more than once in obj-m resulting in
#   duplicate lines in modules.order files.  Those are removed
#   using awk while concatenating to the final file.

PHONY += modules
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
    $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
    @$(kecho) '  Building modules, stage 2.';
    $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
    $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild
.....
Как подключить библиотеку при сборке модуля?

SaintSatanist
()

Unable to cd $home

ось Ubuntu 9.04, нечаянно испортил chmod-ом права домашней папки, теперь не могу залогиниться. Рекурсия в том, что логин root убунту не принимает, она ведь хочет от меня «sudo su», которую я не могу выполнить ввиду невозможности логина под юзером. Попытка логина выглядит примерно так:

mylaptop login:<username>
Password:.........
Last login <data-time>
<Потом несколько строк о официальном сайте убунту, потом собственно сабж>

Unable to cd /home/<username>

mylaptop login:

Как выйти из рекурсии? Если я не смогу зайти под рутом, то альтернативой будет лишь mount ext3-раздела из под винды, с целью восстановить права доступа домашней папки.

SaintSatanist
()

У gcc есть disassembler?

только что я жёстко лохонулся. Ну просто очень жёстко. Было 2 файла qwerty.c и qwerty.s, из первого я вызывал функцию написанную на ассемблере и компилил строкой «gcc qwerty.c qwerty.s -o out». И вот мне захотелось посмотреть как компилится в ассемблерный код первый файл и запустил «gcc qwerty.c qwerty.s -S», а тот даже не спросив выдал результат заменив 10килобайт асм-кода написанного потом и кровью. Видимо моя функция осталась только в бинарнике «out» виде опкода.

Подскажите, как дизассемблировать гццшкой??

SaintSatanist
()

Проблема с оптической сетевой картой под Debian 5.0.6

Итак есть Debian без Х-ов, и оптическая 10Г сетевуха. lspci называет её так: «NetXen Incorporated NX3031 Multifunction 1/10 Gigabit Server Adapter»

Модуль ядра netxen_nic скомпилирован и был установлен сначала при помощи modprobe, а потом и в автозагрузку etc/modules.

lsmod выводит, что модуль netxen_nic подгружен, тем не менее команда «lspci -k» не выводит для данного адаптера никаких Kernel driver in use && Kernel Module.

Как собственно привязать модуль netxen_nic к сетевому адаптеру?

SaintSatanist
()

Отправка пакетов СОКЕТами не доходит до интерфейса eth0. Wireshark видит их только на any-интерфейсе

Создание сокета происходит вот так:
argv[1]=IP;
argv[2]=Interface name;

	unsigned char dst_mac[6] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
	int sock=socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
	struct ifreq ifr;
	strncpy((char*)ifr.ifr_name, argv[2], IFNAMSIZ);
	if (ioctl(sock, SIOGIFINDEX, &ifr) < 0) {
		perror("getting device index number");
		return 1;
	}
	printf("Interface index=%d\n",ifr.ifr_ifindex);
	if(ioctl(sock, SIOCGIFHWADDR, &ifr)<0){
		perror("getting device addr");
		return 1;
	}
	memcpy(scr_mac,ifr.ifr_hwaddr.sa_data,ETH_ALEN);
	printf("MAC=%.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",scr_mac[0],scr_mac[1],scr_mac[2],scr_mac[3],scr_mac[4],scr_mac[5]);
	struct sockaddr_in sa_in;
	if(ioctl(sock, SIOCGIFADDR, &ifr) < 0) {
		perror("ioctl SIOCGIFADDR");
		return -1;
	}
	memset((void *)&sa_in, 0, sizeof(struct sockaddr_in));
	memcpy((void *)&sa_in, (void *)&ifr.ifr_addr, sizeof(struct sockaddr));
	    //memcpy((void *)&ifp->ip, (void *)&s.sin_addr.s_addr, sizeof(__u32));
	printf("Interface addr=%x\n",ntohl(sa_in.sin_addr.s_addr));

	struct sockaddr_ll sall;
	  memset(&sall,0,sizeof(sall));
	  sall.sll_family=AF_PACKET;
	  sall.sll_ifindex=ifr.ifr_ifindex;
	  sall.sll_protocol=htons(ETH_P_ALL);
	  sall.sll_halen = ETH_ALEN;
	  memcpy(sall.sll_addr, scr_mac, ETH_ALEN);

	if(bind(sock,(struct sockaddr *)&sall,sizeof(sall))<0) {
		perror("bind");
		exit(1);
	}
Заполнение Ethernet, IP, UDP заголовков производится вручную и корректно.
На одной машине установлена fedora 10 rus, ядро 2.6.27.41, интерфейсы eth0,lo - всё работает правильно.
На другой машине установлена openSuse 11.1, ядра есть разные 2.6.27.7, 2.6.27.41, 2.6.31.3, интерфейсы eth0, eth1, eth2, lo.
eth1,eth2 вроде работают правильно, а вот при посылке пакета на интерфейс eth0 пакеты не отправляются, хотя sendto возвращает правильное число отправленных байт (1052 bytes).
Wireshark видит эти призрачные пакеты только в Any-интерфейсе, соответственно с приписанными заголовками «Linux cooked capture».

На неверно работающей машине iptables -L:
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Моя программа выводит что для интерфейсов lo/eth0/eth1/eth2:Interface index= 1/4/2/3 соответственно.
ЗЫ:Простите за «многа букаф»)

SaintSatanist
()

RSS подписка на новые темы