LINUX.ORG.RU

Написать патч к модулю используемой ФС?

Anon
()

А зачем собсно?

Если окружающее пространство не шифровано, будут логи, журналы.

И как следить за тем чтоб не затереть хедеры или блоки внутри этого подозрительного куска энтропии?

Umberto ★☆
()
Ответ на: комментарий от registrant

нет никакой гарантии, что все 5 гигов запишутся в самый конец

kto_tama ★★★★★
()

Запись:

dd if=file_name of=/dev/sdxN obs=1M seek=(size_of_disk - size_of_file)

Cчитывание:

dd if=/dev/sdxN of=file_name obs=1M skip=(size_of_disk - size_of_file)

Файловой системы не надо! Желательно, для удобства файл в конце дополнить нулями до размера N * 1M

multihead
()
Ответ на: комментарий от multihead

Cчитывание:

dd if=/dev/sdxN of=file_name ibs=1M skip=(size_of_disk - size_of_file)

s/obs/ibs/

multihead
()

Только не забудь размер файла и радел куда писал, а то не найдёшь потом.

ЗЫ: Файлы от кого-то прячишь или вири пишешь?

ЗЫЗЫ: Зашифруй файл перед записью, а то ты не один такой маньяк, есть и те которые физически ищут на диске лишние файлы...

multihead
()

bash-скрипт:
#!/bin/bash
#skip & write
SKIP_PRE=<здесь размер файла в гигабайтах>
HDD_PRE=<здесь размер твоего HDD в гигабайтах>
HDD_BYTE=«${HDD_PRE}*1024*1024*1024»
SKIP=«${SKIP_PRE}*1024*1024*1024»
ESKIP=«$(echo -en ${SKIP}|bc)»
EHDD=«$(echo -en ${HDD_BYTE}|bc)»
NSKIP=«${EHDD}-${ESKIP}»
ENSKIP=«$(echo -en ${ENSKIP}|bc)»
dd if=/dev/zero of=/dev/sda bs=1 count=«${ESKIP}» skip=«${ENSKIP}»
#КОНЕЦ

не уверен, но это должно помочь!

ubuntuawp ★★
()
Ответ на: комментарий от multihead

ЗЫ: Файлы от кого-то прячишь или вири пишешь?

Ты не так понял, мне нужно не скрытый файл сделать, а тупо записать файл, который будет видно стандартными средствами, но физически он должен быть в конце раздела. т.е. та же дефрагментация его переместит в начало.

Siado ★★★★★
() автор топика
Последнее исправление: Siado (всего исправлений: 1)
Ответ на: комментарий от registrant

5 гигов? ты дольше свой пост писал

Это же надо отмонтировать хоум, взять жпартед и ждать три года.

Siado ★★★★★
() автор топика
Ответ на: комментарий от ubuntuawp

bs=1 сколько времени занимает запись 1G?

Всепеременные можно найти:

SKIP_PRE: ls -l

HDD_PRE: parted -l

Таки надо, как минимум, скриптом округлять в большую сторону размер файла до N * 1M и использовать bs=1M иначе скорость никакая. но и размер файла надо помнить с точностью до бита, чтобы конец его потом четко рубать. И при считывании тоже bs=1M надо ставить чтобы не ждать до утра, а конец отдельно потом рубать: cut -M${точный-размер} имя_файла

multihead
()

Можно попробовать так:

  • Добавить блоки из конца диска в список бэд-блоков ФС (e2fsck -l).
  • Сделать на эти же блоки /dev/loopN с соответствующим смещением и максимальным размером.
  • Использовать /dev/loopN.

    Но непонятно зачем тебе такой изврат 8).

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Siado

мне нужно не скрытый файл сделать, а тупо записать файл, который будет видно стандартными средствами, но физически он должен быть в конце раздела. т.е. та же дефрагментация его переместит в начало.

0. Перечитать доки по всех ФС в Линукс, может какая-то и имеет такие фичи.. Как минимум для отмены автодефрагментации в некоторых ФС.

1. Писать патч для любимой ФС.

2. Есть вариант костыля: берёшь ФС extN, пишешь файл как я сказал dd. Потом берёш прогу anysurect c пакета anyfs-tools и указываешь ей начать поиск файла в том диапазоне диска где он записан, переименовываешь найденый файл. Там можно посмотреть код этих прог и на основе их написать непосредственно патч который по dd запишет файл и внесёт нужные изменения в таблицу ФС чтобы файл было видно по нужному имени.

3. Тоже что 2 но используя прогу photorec с пакета testdisk.

multihead
()

хочу чтобы он лежал в конце раздела.

1) уменьшить раздел и ФС на 5 гигов;
2) в освободившемся месте создать шифрованный раздел;
3) PROFIT!

Pinkbyte ★★★★★
()
Ответ на: комментарий от Siado

а тупо записать файл, который будет видно стандартными средствами, но физически он должен быть в конце раздела

Ну вот скажем, можно такой костыль сделать — уменьшить файловую систему на 5 гигабайт (или чуть больше) (e2fsresize), заполнить всё свободное место мусором (cat /dev/zero > /mnt/fs/somefile.z — создавать от рута, потому что для рута резервируется часть места по умолчанию, недоступная юзерам, убедиться что свободно 0 байт), расширить файловую систему чтоб она занимала весь раздел и записать нужный тебе файл. После этого /mnt/fs/somefile.z удалить.

Можно ещё с debugfs пошаманить, но по-моему как я предложил проще, хоть и костыльно.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 2)
Ответ на: комментарий от multihead

Запись:

Ты что советуешь? Ты не в курсе, что нормальные файловые системы используют всё пространство раздела? И ты так вполне можешь внезапно! затереть какой-нибудь очень нужный файл.

Xenius ★★★★★
()
Ответ на: комментарий от ubuntuawp

не уверен, но это должно помочь!

Помочь непредсказуемо уничтожить данные?

Где гарантия что в конце не было что-нибудь записано?

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

уменьшить раздел и ФС на 5 гигов

Можно уменьшить только ФС

Xenius ★★★★★
()
Ответ на: комментарий от multihead

а конец отдельно потом рубать

Для этого утилита truncate есть, а man cut ты неправильно понял, -M — это вообще не ключ, а спецификация для других ключей

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Siado

5 гигов будет быстро, но меня уже поправили: гарантии, что место именно в конце освободится, нет

registrant ★★★★★
()

А как конец раздела и редкость использования связаны, чот не понял?..

kvap
()

В общем случае никак. Нет таких стандарных средств, чтобы приложение указывало какие блоки файловой системы выделить файлу. В ext2/3/4 файловых системах вроде как с помощью команды modify_inode в программе debuge2fs можно указывать номера блоков файла, но не знаю, насколько это рабочее, подходит ли вам и получится ли у вас написать скрипт (5 Гбайт руками не выделить).

mky ★★★★★
()
Ответ на: комментарий от ilovewindows

Вот этот вариант и выбрал:

$ cat bidloshrinker.sh 
#!/usr/bin/sh

# homedir:
dd if=/dev/zero	of=/home/blankfile bs=1M count=150000
cat /dev/urandom > /home/imagefile
rm /home/blankfile

count подбирается в ручную в зависимости от свободного места.

З.ы. Еще для пущей эффективности надо в /home дефрагментацию через mv сделать.

Siado ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.