Может dd перезаписать смежные разделы

Проблема может заключаться в пакете hostadd последней версии, который устанавливается с ap-hotspot.

Сначала удалите ap-hotspot. Загрузите старый пакет hostapd (без ошибок), вы можете получить его из

wget http://archive.ubuntu.com/ubuntu/pool/universe/w/wpa/hostapd_1.0-3ubuntu2.1_amd64.deb

. Для установки hostpad.deb вы можете использовать диспетчер пакетов gdebi или просто

sudo dpkg -i hostapd_1.0-3ubuntu2.1_amd64.deb

. После установки пакет, поэтому последние версии не обновляются

   sudo apt-mark hold hostapd

Теперь установите ap-hotspot как обычно.

Не обновляйте пакет hostapd.
14
задан 26 October 2017 в 10:46

15 ответов

Перезаписать раздел с помощью dd

dd - очень мощный, но также и опасный инструмент. Он делает то, что вы говорите, чтобы обойтись без вопросов. Итак, если вы попросите стереть семейные фотографии ... и это небольшая ошибка ввода.

Но если вы проверите и дважды проверите, вы можете использовать его.

dd if=/dev/zero of=somepartition bs=512

, или я бы предложил

dd if=/dev/zero of=/dev/sdxn bs=4096

, где x - буква диска, а n - номер раздела, а размер блока - 4096 байт, что делает процесс записи более быстрым.

x в этом случае. Если вы напишете весь диск (конец головки привода) /dev/sdx, весь диск будет перезаписан. Но запись в раздел будет прервана в конце раздела, а разделы за ним будут сохранены. (Я тестировал сейчас на USB-накопителе в Lubuntu 16.04 LTS, поэтому я знаю, что он работает именно так.)

Исключение для расширенного раздела

Существует исключение для расширенного раздела (который является контейнером для логических разделов, чтобы иметь более четырех разделов в таблице разделов MSDOS). Это описано в следующей ссылке:

Могу ли я сделать образ расширенного раздела с помощью dd?

Но есть и другая проблема. Я протестировал вашу команду в тестовой среде, и dd прочитал только один кибибайт (1024 байта), когда я хотел, чтобы он сделал изображение расширенного раздела.

Я также тестировал это сейчас на USB-накопителе в Lubuntu 16.04 LTS, и это относится к записи (а также к чтению).

Итак, чтобы суммировать, переписывание первичных разделов и логических разделов работает в соответствии с основным описанием в этом ответе. Но не используйте этот метод для перезаписывания расширенного раздела, потому что будет перезаписан только первый кибибит. Логические разделы расширенного раздела больше не будут найдены через таблицу разделов, но данные, хранящиеся в них, все еще существуют.

17
ответ дан 22 May 2018 в 17:08
  • 1
    Я уже принял, но если это так, это должен быть правильный ответ. – LogicBreaker 25 October 2017 в 21:38
  • 2
    @LogicBreaker, Может быть, вы можете перенести принятие. Но это не важно. Более важно, чтобы вы понимали, как использовать dd, и что это рискованно, так что вы очень осторожны при его использовании. Удачи :-) В общем, вы всегда должны иметь backup всех файлов, которые вы не можете потерять. – sudodus 25 October 2017 в 21:42
  • 3
    При написании на оголенные разделы у вас не так много альтернатив. Я переехал, иначе это будет вводить в заблуждение для других. – LogicBreaker 25 October 2017 в 21:49
  • 4
    Вот почему пользователи обычно не могут получить доступ к файлам / dev / * & quot ;. – Thorbjørn Ravn Andersen 26 October 2017 в 01:14
  • 5
    Если это только копия ваших семейных фотографий без резервного копирования, то вы можете потерять их в любое время путем кражи, пожара, аварии или простого сбоя оборудования :-) – user334639 26 October 2017 в 01:50

Перезаписать раздел с помощью dd

dd - очень мощный, но также и опасный инструмент. Он делает то, что вы говорите, чтобы обойтись без вопросов. Итак, если вы попросите стереть семейные фотографии ... и это небольшая ошибка ввода.

Но если вы проверите и дважды проверите, вы можете использовать его.

dd if=/dev/zero of=somepartition bs=512

, или я бы предложил

dd if=/dev/zero of=/dev/sdxn bs=4096

, где x - буква диска, а n - номер раздела, а размер блока - 4096 байт, что делает процесс записи более быстрым.

x в этом случае. Если вы напишете весь диск (конец головки привода) /dev/sdx, весь диск будет перезаписан. Но запись в раздел будет прервана в конце раздела, а разделы за ним будут сохранены. (Я тестировал сейчас на USB-накопителе в Lubuntu 16.04 LTS, поэтому я знаю, что он работает именно так.)

Исключение для расширенного раздела

Существует исключение для расширенного раздела (который является контейнером для логических разделов, чтобы иметь более четырех разделов в таблице разделов MSDOS). Это описано в следующей ссылке:

Могу ли я сделать образ расширенного раздела с помощью dd?

Но есть и другая проблема. Я протестировал вашу команду в тестовой среде, и dd прочитал только один кибибайт (1024 байта), когда я хотел, чтобы он сделал изображение расширенного раздела.

Я также тестировал это сейчас на USB-накопителе в Lubuntu 16.04 LTS, и это относится к записи (а также к чтению).

Итак, чтобы суммировать, переписывание первичных разделов и логических разделов работает в соответствии с основным описанием в этом ответе. Но не используйте этот метод для перезаписывания расширенного раздела, потому что будет перезаписан только первый кибибит. Логические разделы расширенного раздела больше не будут найдены через таблицу разделов, но данные, хранящиеся в них, все еще существуют.

17
ответ дан 18 July 2018 в 04:33

Перезаписать раздел с помощью dd

dd - очень мощный, но также и опасный инструмент. Он делает то, что вы говорите, чтобы обойтись без вопросов. Итак, если вы попросите стереть семейные фотографии ... и это небольшая ошибка ввода.

Но если вы проверите и дважды проверите, вы можете использовать его.

dd if=/dev/zero of=somepartition bs=512

, или я бы предложил

dd if=/dev/zero of=/dev/sdxn bs=4096

, где x - буква диска, а n - номер раздела, а размер блока - 4096 байт, что делает процесс записи более быстрым.

x в этом случае. Если вы напишете весь диск (конец головки привода) /dev/sdx, весь диск будет перезаписан. Но запись в раздел будет прервана в конце раздела, а разделы за ним будут сохранены. (Я тестировал сейчас на USB-накопителе в Lubuntu 16.04 LTS, поэтому я знаю, что он работает именно так.)

Исключение для расширенного раздела

Существует исключение для расширенного раздела (который является контейнером для логических разделов, чтобы иметь более четырех разделов в таблице разделов MSDOS). Это описано в следующей ссылке:

Могу ли я сделать образ расширенного раздела с помощью dd?

Но есть и другая проблема. Я протестировал вашу команду в тестовой среде, и dd прочитал только один кибибайт (1024 байта), когда я хотел, чтобы он сделал изображение расширенного раздела.

Я также тестировал это сейчас на USB-накопителе в Lubuntu 16.04 LTS, и это относится к записи (а также к чтению).

Итак, чтобы суммировать, переписывание первичных разделов и логических разделов работает в соответствии с основным описанием в этом ответе. Но не используйте этот метод для перезаписывания расширенного раздела, потому что будет перезаписан только первый кибибит. Логические разделы расширенного раздела больше не будут найдены через таблицу разделов, но данные, хранящиеся в них, все еще существуют.

17
ответ дан 24 July 2018 в 18:06

Запись на устройство разделов не будет записываться за пределами этого раздела, с dd или чем-то еще.

(Предостережение: если на вашем диске нет таблицы разделов с перекрывающимися разделами, что никогда не должно происходить.)

4
ответ дан 22 May 2018 в 17:08
  • 1
    Еще одно предостережение: если вы используете что-то вроде LVM, запись на физический том может, конечно, повлиять на многие логические тома. – Maxpm 26 October 2017 в 05:09

Я думаю, что ваш вопрос основан на фундаментальном непонимании о том, как работают dd (и на самом деле Unix-подобные операционные системы в целом):

dd не может перезаписывать смежные разделы просто потому, что [ f3] не может перезаписывать разделы, период.

dd просто пишет в период . Вот и все.

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

Но если вы передадите dd файл, который представляет только один раздел, тогда dd будет не пишите за конец этого раздела. Опять же, это не имеет ничего общего с dd. dd просто записывает в файл, на который вы ему написали. Тот факт, что этот файл представляет собой один раздел (в этом случае), обеспечивается драйвером блочного устройства в ядре. dd не имеет к этому никакого отношения.

Итак, словом: dd записывает файлы. То, что представляют эти файлы, не относится к проблеме dd. dd ничего не знает о разделах.

4
ответ дан 22 May 2018 в 17:08
  • 1
    Mmh ... с dd только для записи в файлы, вы не можете использовать его для записи в сырые разделы. – LogicBreaker 26 October 2017 в 14:41
  • 2
    Верный. Вы не можете использовать dd для записи в сырые разделы. Вы можете писать только в файлы. Вы можете , конечно, записать в файл блочного устройства, который представляет раздел (например, /dev/sda1), но вы не можете писать в необработанный раздел. И поскольку вы можете записывать только в файл, который представляет раздел, вы не можете писать за конец раздела, потому что файл представляет только раздел, а не раздел и немного мимо конца. – Jörg W Mittag 27 October 2017 в 02:33
  • 3
    Jorg ссылается на одну из основных идей философии Unix - «все это файл». Таким образом, в ядре представлены файлы, файлы, порты и т. Д. В результате каждая программа, которая может писать в файл, может использоваться для записи в раздел или устройство. Это ядро ​​для обеспечения соблюдения границы раздела. Вы можете открыть /dev/sda в текстовом редакторе и изменить данные, dd не отличается от любой другой программы с точки зрения возможности доступа к разделам. Очень хороший ответ! – Sergey 31 October 2017 в 23:12

Существует опасный, но редкий особый сценарий, в котором это может произойти даже с драйверами небезопасных блоков:

Таблица разделов на диске изменяется таким образом, что размер раздела x изменяется, чтобы закончить нижняя граница, чем раньше. Либо перегородка y позади нее изменяет верхний старт на нижней границе, либо добавляется новый раздел y. Раздел y заполняется соответствующими данными средствами, которые не зависят от таблицы разделов, например, используя dd с опциями пропуска / подсчета на блочном устройстве всего диска (например, / dev / sda). Ioctl, который сообщает ядру перечитать таблицу разделов не выдается или не выполняется из-за занятых устройств. Раздел X записывается любым процессом, который пытается записать его до тех пор, пока он не достигнет условия ошибки.
1
ответ дан 22 May 2018 в 17:08

Вы должны быть осторожны с dd, как если бы вы допустили ошибку, вы можете перезаписать больше, чем вы рассчитывали, и это зависит от того, для чего вы используете dd (OP был расплывчатым в его использовании dd и точном синтаксисе команды dd).

Если вы укажете раздел, он будет записывать этот раздел до тех пор, пока раздел не будет заполнен.

Если вы допустили ошибку и поместили весь диск, например of = / dev / sda, dd будет записывать на весь запуск диска, чтобы завершить игнорирование (и переписку) таблицы разделов.

Вы также можете записать dd на раздел, чтобы перезаписать удаленные файлы (удаленные файлы могут оставаться на этом разделе и обнаруживаться различными инструментами восстановления с разной степенью успеха, пока они не будут написаны. В этом случае вы можете использовать dd, чтобы заполнить свободное пространство, записав файл.

dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096
rm -f /path/to/mount_point/zero_file

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

0
ответ дан 22 May 2018 в 17:08
  • 1
    Если вы можете написать в / dev / sdcX и управлять записью по границе раздела, это не будет dd, игнорируя таблицу разделов - это будет ошибкой драйвера блока в ядре и игнорированием таблицы разделов. – rackandboneman 25 October 2017 в 23:36
  • 2
    @sudodus dd - это не тот низкий уровень. Фактически большинство вещей, которые люди используют dd, могли быть сделаны одинаково с cat. Фактически cat работает немного быстрее, поскольку по умолчанию использует более крупные блоки, чем dd. Весь код низкого уровня находится в ядре. И драйверу все равно, если вы используете dd или cat. – kasperd 26 October 2017 в 00:08
  • 3
    @sudodus - извините за путаницу, я был не столь ясен, как я предполагал. dd, конечно, может продолжать писать, зависит от того, что вы говорите, действительно делайте. Примеры dd if=/dev/zero of=/dev/sda bs=512 count=1 или dd if=/dev/zero of=/dev/sda bs=512. Со второй командой он будет продолжать записывать и заполнять весь диск и игнорировать " таблицу разделов. Если вы укажете раздел dd if=/dev/zero of=/dev/sda1, он не выйдет за пределы раздела. Вид зависит от того, что вы хотите делать с dd. – Panther 26 October 2017 в 00:26
  • 4
    @Panther Вопрос конкретно говорит of=somepartition, поэтому случай, когда вы пишете на все дисковое устройство, не применяется. dd не может обойти ограничения драйвера устройства. – Barmar 26 October 2017 в 07:19
  • 5
    @Bamar прочитал, я уже прокомментировал это. Я видел, как многие пользователи путают $ somepartition для / dev / sda – Panther 26 October 2017 в 18:20

Запись на устройство разделов не будет записываться за пределами этого раздела, с dd или чем-то еще.

(Предостережение: если на вашем диске нет таблицы разделов с перекрывающимися разделами, что никогда не должно происходить.)

4
ответ дан 18 July 2018 в 04:33

Я думаю, что ваш вопрос основан на фундаментальном непонимании о том, как работают dd (и на самом деле Unix-подобные операционные системы в целом):

dd не может перезаписывать смежные разделы просто потому, что dd не может перезаписывать разделы, период.

dd просто пишет в период . Вот и все.

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

Но если вы передадите dd файл, который представляет только один раздел, тогда dd будет не пишите за конец этого раздела. Опять же, это не имеет ничего общего с dd. dd просто записывает в файл, на который вы ему написали. Тот факт, что этот файл представляет собой один раздел (в этом случае), обеспечивается драйвером блочного устройства в ядре. dd не имеет к этому никакого отношения.

Итак, словом: dd записывает файлы. То, что представляют эти файлы, не относится к проблеме dd. dd ничего не знает о разделах.

4
ответ дан 18 July 2018 в 04:33

Существует опасный, но редкий особый сценарий, в котором это может произойти даже с драйверами небезопасных блоков:

Таблица разделов на диске изменяется таким образом, что размер раздела x изменяется, чтобы закончить нижняя граница, чем раньше. Либо перегородка y позади нее изменяет верхний старт на нижней границе, либо добавляется новый раздел y. Раздел y заполняется соответствующими данными средствами, которые не зависят от таблицы разделов, например, используя dd с опциями пропуска / подсчета на блочном устройстве всего диска (например, / dev / sda). Ioctl, который сообщает ядру перечитать таблицу разделов не выдается или не выполняется из-за занятых устройств. Раздел X записывается любым процессом, который пытается записать его до тех пор, пока он не достигнет условия ошибки.
1
ответ дан 18 July 2018 в 04:33

Вы должны быть осторожны с dd, как если бы вы допустили ошибку, вы можете перезаписать больше, чем вы рассчитывали, и это зависит от того, для чего вы используете dd (OP был расплывчатым в его использовании dd и точном синтаксисе команды dd).

Если вы укажете раздел, он будет записывать этот раздел до тех пор, пока раздел не будет заполнен.

Если вы допустили ошибку и поместили весь диск, например of = / dev / sda, dd будет записывать на весь запуск диска, чтобы завершить игнорирование (и переписку) таблицы разделов.

Вы также можете записать dd на раздел, чтобы перезаписать удаленные файлы (удаленные файлы могут оставаться на этом разделе и обнаруживаться различными инструментами восстановления с разной степенью успеха, пока они не будут написаны. В этом случае вы можете использовать dd, чтобы заполнить свободное пространство, записав файл.

dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096 rm -f /path/to/mount_point/zero_file

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

0
ответ дан 18 July 2018 в 04:33

Запись на устройство разделов не будет записываться за пределами этого раздела, с dd или чем-то еще.

(Предостережение: если на вашем диске нет таблицы разделов с перекрывающимися разделами, что никогда не должно происходить.)

4
ответ дан 24 July 2018 в 18:06
  • 1
    Еще одно предостережение: если вы используете что-то вроде LVM, запись на физический том может, конечно, повлиять на многие логические тома. – Maxpm 26 October 2017 в 05:09

Я думаю, что ваш вопрос основан на фундаментальном непонимании о том, как работают dd (и на самом деле Unix-подобные операционные системы в целом):

dd не может перезаписывать смежные разделы просто потому, что dd не может перезаписывать разделы, период.

dd просто пишет в период . Вот и все.

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

Но если вы передадите dd файл, который представляет только один раздел, тогда dd будет не пишите за конец этого раздела. Опять же, это не имеет ничего общего с dd. dd просто записывает в файл, на который вы ему написали. Тот факт, что этот файл представляет собой один раздел (в этом случае), обеспечивается драйвером блочного устройства в ядре. dd не имеет к этому никакого отношения.

Итак, словом: dd записывает файлы. То, что представляют эти файлы, не относится к проблеме dd. dd ничего не знает о разделах.

4
ответ дан 24 July 2018 в 18:06
  • 1
    Mmh ... с dd только для записи в файлы, вы не можете использовать его для записи в сырые разделы. – LogicBreaker 26 October 2017 в 14:41
  • 2
    Верный. Вы не можете использовать dd для записи в сырые разделы. Вы можете писать только в файлы. Вы можете , конечно, записать в файл блочного устройства, который представляет раздел (например, /dev/sda1), но вы не можете писать в необработанный раздел. И поскольку вы можете записывать только в файл, который представляет раздел, вы не можете писать за конец раздела, потому что файл представляет только раздел, а не раздел и немного мимо конца. – Jörg W Mittag 27 October 2017 в 02:33
  • 3
    Jorg ссылается на одну из основных идей философии Unix - «все это файл». Таким образом, в ядре представлены файлы, файлы, порты и т. Д. В результате каждая программа, которая может писать в файл, может использоваться для записи в раздел или устройство. Это ядро ​​для обеспечения соблюдения границы раздела. Вы можете открыть /dev/sda в текстовом редакторе и изменить данные, dd не отличается от любой другой программы с точки зрения возможности доступа к разделам. Очень хороший ответ! – Sergey 31 October 2017 в 23:12

Существует опасный, но редкий особый сценарий, в котором это может произойти даже с драйверами небезопасных блоков:

Таблица разделов на диске изменяется таким образом, что размер раздела x изменяется, чтобы закончить нижняя граница, чем раньше. Либо перегородка y позади нее изменяет верхний старт на нижней границе, либо добавляется новый раздел y. Раздел y заполняется соответствующими данными средствами, которые не зависят от таблицы разделов, например, используя dd с опциями пропуска / подсчета на блочном устройстве всего диска (например, / dev / sda). Ioctl, который сообщает ядру перечитать таблицу разделов не выдается или не выполняется из-за занятых устройств. Раздел X записывается любым процессом, который пытается записать его до тех пор, пока он не достигнет условия ошибки.
1
ответ дан 24 July 2018 в 18:06

Вы должны быть осторожны с dd, как если бы вы допустили ошибку, вы можете перезаписать больше, чем вы рассчитывали, и это зависит от того, для чего вы используете dd (OP был расплывчатым в его использовании dd и точном синтаксисе команды dd).

Если вы укажете раздел, он будет записывать этот раздел до тех пор, пока раздел не будет заполнен.

Если вы допустили ошибку и поместили весь диск, например of = / dev / sda, dd будет записывать на весь запуск диска, чтобы завершить игнорирование (и переписку) таблицы разделов.

Вы также можете записать dd на раздел, чтобы перезаписать удаленные файлы (удаленные файлы могут оставаться на этом разделе и обнаруживаться различными инструментами восстановления с разной степенью успеха, пока они не будут написаны. В этом случае вы можете использовать dd, чтобы заполнить свободное пространство, записав файл.

dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096 rm -f /path/to/mount_point/zero_file

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

0
ответ дан 24 July 2018 в 18:06
  • 1
    Если вы можете написать в / dev / sdcX и управлять записью по границе раздела, это не будет dd, игнорируя таблицу разделов - это будет ошибкой драйвера блока в ядре и игнорированием таблицы разделов. – rackandboneman 25 October 2017 в 23:36
  • 2
    @sudodus dd - это не тот низкий уровень. Фактически большинство вещей, которые люди используют dd, могли быть сделаны одинаково с cat. Фактически cat работает немного быстрее, поскольку по умолчанию использует более крупные блоки, чем dd. Весь код низкого уровня находится в ядре. И драйверу все равно, если вы используете dd или cat. – kasperd 26 October 2017 в 00:08
  • 3
    @sudodus - извините за путаницу, я был не столь ясен, как я предполагал. dd, конечно, может продолжать писать, зависит от того, что вы говорите, действительно делайте. Примеры dd if=/dev/zero of=/dev/sda bs=512 count=1 или dd if=/dev/zero of=/dev/sda bs=512. Со второй командой он будет продолжать записывать и заполнять весь диск и игнорировать & quot; таблицу разделов. Если вы укажете раздел dd if=/dev/zero of=/dev/sda1, он не выйдет за пределы раздела. Вид зависит от того, что вы хотите делать с dd. – Panther 26 October 2017 в 00:26
  • 4
    @Panther Вопрос конкретно говорит of=somepartition, поэтому случай, когда вы пишете на все дисковое устройство, не применяется. dd не может обойти ограничения драйвера устройства. – Barmar 26 October 2017 в 07:19
  • 5
    @Bamar прочитал, я уже прокомментировал это. Я видел, как многие пользователи путают $ somepartition для / dev / sda – Panther 26 October 2017 в 18:20

Другие вопросы по тегам:

Похожие вопросы: