Как объединить мои разделы?

Введение

В приведенном ниже сценарии используется опрос, управляемый прерываниями для определенных сообщений от dbus, и всякий раз, когда он видит запрос на выключение / перезагрузку, он будет проверять, имеет ли диспетчер пакетов, например dpkg или apt работают.

Настроить

Поскольку вы упомянули, что ваш друг не хочет прикасаться к командной строке, вам нужно либо ssh в его машину, или приступить и установить это вручную.

Ручная настройка

mkdir $HOME/bin Скопируйте источник сценария, сохраните его в файл с именем preventShutdown.sh. Сценарий должен быть исполняемым. Используйте chmod +x $HOME/bin/preventShutdown.sh для этого. Добавьте сценарий в список подпрограмм, которые будут запускаться при входе в Unity / Gnome, используя приложение «Запуск приложений» или вручную помещая файл .desktop в $HOME/.config/autostart

Альтернативная настройка [ ! d10]
sudo apt-get install git
cd /opt
sudo git clone https://github.com/SergKolo/sergrep.git
sudo chmod +x /opt/sergrep/*

Добавить скрипт в качестве загрузочного приложения.

Источник скрипта

#! /bin/bash

##########################
# AUTHOR: Serg Kolo 
# Date: Saturday, December 26th, 2015
# Description: Script to notify user and prevent 
#   shutdown or reboot
#   if any update or package manager
#   are running. 
# TESTED ON: 14.04.3 LTS, Trusty Tahr
# WRITTEN FOR: http://askubuntu.com/q/702156/295286
# VERSION: 2, removed xdotool, using dbus method
#          changed to C-style of organizing code
#########################

# Copyright (c) 2015 Serg Kolo
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal in 
# the Software without restriction, including without limitation the rights to use,
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 
# the Software, and to permit persons to whom the Software is furnished to do so, 
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all 
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

# Uncomment the line bellow if needed for debugging
# set -x
###########################
# VARIABLES
###########################

DISPLAY=:0 # has to be set since we are using notify-send


###########################
# MAIN
###########################
#
#    Basic idea : This runs dbus-monitor which waits for
# "RebootRequested" memberf from com.canonical.Unity.Session ,
# which apprears only when the user clicks the shutdown option 
# from the Unity's top right drop down box. Why RebootRequested ?
# Because this message is guaranteed to pop up once user presses
# the shutdown button.
#   The while loop with read command does the big job.
# dbus-monitor sends initial message , so we want to filter only
# The output that contains the string we need, hence the case...esac
# structure employed here. Once we get the proper message.
# we check whether update-manager or package managers are running
# If there is one instance, then call CancelAction method
# and send notification to the user.
#   Both dbus-monitor and while loop run continuously. This
# can be launcher as script in `/etc/rc.local` or `/etc/rc2.d`
# or preferably (!) in `/etc/xdg/autostart/` . 
#   Here is sample /etc/xdg/autostart/preventShutdown.desktop file
# 
# [Desktop Entry]
# Type=Application
# Name=Prevent-Update
# Exec=/home/$USER/bin/preventShutdown.sh
# OnlyShowIn=GNOME;Unity;
# Terminal=false
# 
# Remember to make this file  as well as script be root-owned with 
# chmod +x /path/to/Script.
# It is preferred to store the script in user's personal $HOME/bin
# folder.
# Make sure to edit $HOME/.profile file to include that into $PATH
# variable

interupt()
{
 qdbus com.canonical.Unity /com/canonical/Unity/Session com.canonical.Unity.Session.CancelAction
 notify-send "<<< UPDATE IN PROGRESS; DO NOT SHUT DOWN>>>"
 wall <<< "<<< UPDATE IN PROGRESS; DO NOT SHUT DOWN>>>"
}

main()
{
 dbus-monitor --profile "interface='com.canonical.Unity.Session',type=signal" |
 while read -r line;
 do
  case "$line" in
   *RebootRequested*)
       pgrep update-manager || pgrep apt-get || pgrep dpkg
    if [ $? -eq 0 ]; then
           interupt
        fi
     ;;
   esac
 done
}

main
1
задан 24 April 2017 в 23:55

2 ответа

В вашем вопросе есть как минимум три проблемы:

Вы не можете напрямую объединить два раздела с помощью обычных инструментов Linux. Вы можете развернуть раздел в соседнем нераспределенном пространстве, но слияние разделов (что подразумевает сохранение содержимого обоих разделов) не поддерживается никакими инструментами Linux, о которых я знаю. Ваши /dev/sda1 и /dev/sda6 не смежны друг с другом - между ними существуют два других раздела. Кроме того, /dev/sda1 является основным разделом, а /dev/sda6 является логическим разделом. Таким образом, даже если вы нашли какой-то неясный инструмент для слияния двух разделов, в этом контексте это было бы бесполезно, потому что раздел должен быть непрерывным набором секторов, например секторов от A до D, а не от A до B и C до D, с другими разделов, занимающих сектора B до C. Ваш /dev/sda1 - это NTFS, а /dev/sda6 - ext4fs. Таким образом, даже если вы нашли инструмент для объединения двух разделов, и если они были смежными друг с другом, вы не могли бы этого сделать, потому что это разные типы файловой системы.

Все, что сказал, я подозреваю, что ваш /dev/sda1 пуст, и вы просто хотите увеличить размер /dev/sda6, используя пространство /dev/sda1. Эта задача может быть выполнена, но для этого требуются некоторые промежуточные задачи:

Удалить /dev/sda1. Переместите /dev/sda2 влево. Это приведет к перемещению свободного пространства, занятого /dev/sda1 справа от /dev/sda2. Переместите /dev/sda3 влево. Опять же, это приводит к перемещению свободного пространства вправо от /dev/sda3. Измените размер расширенного раздела, /dev/sda4, чтобы его начальная точка была как можно дальше слева. Теперь он должен охватывать свободное пространство. (Обратите внимание, что расширенный раздел является своего рода заполнителем, который сам содержит логические разделы. Таким образом, хотя свободное пространство находится в расширенном разделе, оно по-прежнему доступно для логических разделов и поэтому остается в некотором смысле свободным.) Измените размер /dev/sda6 на слева, так что теперь он потребляет свободное пространство.

Эта процедура содержит некоторые существенные оговорки:

Вы не можете напрямую объединить два раздела с помощью обычных инструментов Linux. Вы можете развернуть раздел в соседнем нераспределенном пространстве, но слияние разделов (что подразумевает сохранение содержимого обоих разделов) не поддерживается никакими инструментами Linux, о которых я знаю. Операции перераспределения разделов и изменение размера раздела Ubuntu влево, вероятно, потребует много времени. Точно, сколько времени зависит от скорости вашего диска - может быть, всего несколько минут, но, возможно, более часа для каждого из них. Ваши /dev/sda1 и /dev/sda6 не смежны друг с другом - между ними существуют два других раздела. Кроме того, /dev/sda1 является основным разделом, а /dev/sda6 является логическим разделом. Таким образом, даже если вы нашли какой-то неясный инструмент для слияния двух разделов, в этом контексте это было бы бесполезно, потому что раздел должен быть непрерывным набором секторов, например секторов от A до D, а не от A до B и C до D, с другими разделов, занимающих сектора B-C. Эта операция может отображать ОС (es) в разделе (-ях) unbootable. Таким образом, вы должны быть готовы запустить Boot Repair, чтобы исправить Ubuntu. Для восстановления Windows, вероятно, потребуется запустить специализированные инструменты Windows, и это выходит за рамки моих знаний. Восстановление Windows выходит за рамки этого форума. Вы можете изучить эту тему до начала и попросить о помощи на форуме Windows, если вам это нужно. Ваш /dev/sda1 - NTFS, а /dev/sda6 - ext4fs. Таким образом, даже если вы нашли инструмент для объединения двух разделов, и если они были смежными друг с другом, вы не могли бы этого сделать, потому что они разные типы файловой системы.

В качестве альтернативы к этой процедуре, вы можете рассмотреть возможность использования существующего /dev/sda1 более-менее-как-есть. Этот вопрос и ответ, например, описывают, как добавить раздел в отдельный раздел /home. Вам нужно будет создать новую секцию ext4fs (или другую родную Linux) в разделе, но этот подход обойдены всеми предыдущими оговорками. OTOH, ваш текущий раздел Ubuntu root (/) является крошечным (16,28 гигабайта), поэтому, если вы не хотите увеличить его размер для большего объема пространства пользователя, вы можете не освобождать достаточное пространство, используя /dev/sda1 как /home. Возможно, переезд /var или что-то еще в новый раздел будет работать лучше, но это создает свою собственную негибкость. Перемещение всей установки на /dev/sda1, которая составляет 53,61 ГБ, может быть лучшим подходом. См. Здесь некоторые обсуждения этого подхода.

4
ответ дан 18 July 2018 в 14:23

В вашем вопросе есть как минимум три проблемы:

Вы не можете напрямую объединить два раздела с помощью обычных инструментов Linux. Вы можете развернуть раздел в соседнем нераспределенном пространстве, но слияние разделов (что подразумевает сохранение содержимого обоих разделов) не поддерживается никакими инструментами Linux, о которых я знаю. Ваши /dev/sda1 и /dev/sda6 не смежны друг с другом - между ними существуют два других раздела. Кроме того, /dev/sda1 является основным разделом, а /dev/sda6 является логическим разделом. Таким образом, даже если вы нашли какой-то неясный инструмент для слияния двух разделов, в этом контексте это было бы бесполезно, потому что раздел должен быть непрерывным набором секторов, например секторов от A до D, а не от A до B и C до D, с другими разделов, занимающих сектора B до C. Ваш /dev/sda1 - это NTFS, а /dev/sda6 - ext4fs. Таким образом, даже если вы нашли инструмент для объединения двух разделов, и если они были смежными друг с другом, вы не могли бы этого сделать, потому что это разные типы файловой системы.

Все, что сказал, я подозреваю, что ваш /dev/sda1 пуст, и вы просто хотите увеличить размер /dev/sda6, используя пространство /dev/sda1. Эта задача может быть выполнена, но для этого требуются некоторые промежуточные задачи:

Удалить /dev/sda1. Переместите /dev/sda2 влево. Это приведет к перемещению свободного пространства, занятого /dev/sda1 справа от /dev/sda2. Переместите /dev/sda3 влево. Опять же, это приводит к перемещению свободного пространства вправо от /dev/sda3. Измените размер расширенного раздела, /dev/sda4, чтобы его начальная точка была как можно дальше слева. Теперь он должен охватывать свободное пространство. (Обратите внимание, что расширенный раздел является своего рода заполнителем, который сам содержит логические разделы. Таким образом, хотя свободное пространство находится в расширенном разделе, оно по-прежнему доступно для логических разделов и поэтому остается в некотором смысле свободным.) Измените размер /dev/sda6 на слева, так что теперь он потребляет свободное пространство.

Эта процедура содержит некоторые существенные оговорки:

Вы не можете напрямую объединить два раздела с помощью обычных инструментов Linux. Вы можете развернуть раздел в соседнем нераспределенном пространстве, но слияние разделов (что подразумевает сохранение содержимого обоих разделов) не поддерживается никакими инструментами Linux, о которых я знаю. Операции перераспределения разделов и изменение размера раздела Ubuntu влево, вероятно, потребует много времени. Точно, сколько времени зависит от скорости вашего диска - может быть, всего несколько минут, но, возможно, более часа для каждого из них. Ваши /dev/sda1 и /dev/sda6 не смежны друг с другом - между ними существуют два других раздела. Кроме того, /dev/sda1 является основным разделом, а /dev/sda6 является логическим разделом. Таким образом, даже если вы нашли какой-то неясный инструмент для слияния двух разделов, в этом контексте это было бы бесполезно, потому что раздел должен быть непрерывным набором секторов, например секторов от A до D, а не от A до B и C до D, с другими разделов, занимающих сектора B-C. Эта операция может отображать ОС (es) в разделе (-ях) unbootable. Таким образом, вы должны быть готовы запустить Boot Repair, чтобы исправить Ubuntu. Для восстановления Windows, вероятно, потребуется запустить специализированные инструменты Windows, и это выходит за рамки моих знаний. Восстановление Windows выходит за рамки этого форума. Вы можете изучить эту тему до начала и попросить о помощи на форуме Windows, если вам это нужно. Ваш /dev/sda1 - NTFS, а /dev/sda6 - ext4fs. Таким образом, даже если вы нашли инструмент для объединения двух разделов, и если они были смежными друг с другом, вы не могли бы этого сделать, потому что они разные типы файловой системы.

В качестве альтернативы к этой процедуре, вы можете рассмотреть возможность использования существующего /dev/sda1 более-менее-как-есть. Этот вопрос и ответ, например, описывают, как добавить раздел в отдельный раздел /home. Вам нужно будет создать новую секцию ext4fs (или другую родную Linux) в разделе, но этот подход обойдены всеми предыдущими оговорками. OTOH, ваш текущий раздел Ubuntu root (/) является крошечным (16,28 гигабайта), поэтому, если вы не хотите увеличить его размер для большего объема пространства пользователя, вы можете не освобождать достаточное пространство, используя /dev/sda1 как /home. Возможно, переезд /var или что-то еще в новый раздел будет работать лучше, но это создает свою собственную негибкость. Перемещение всей установки на /dev/sda1, которая составляет 53,61 ГБ, может быть лучшим подходом. См. Здесь некоторые обсуждения этого подхода.

4
ответ дан 24 July 2018 в 20:23
  • 1
    Большое спасибо, сэр, ваш ответ очень информативен. Я понял, для выполнения этой операции необходим значительный опыт, потому что это может привести к ошибке загрузки. Поскольку у меня есть предыдущий опыт ошибки GRUB Rescue, я не могу этого рисковать. Мне просто нужно увеличить размер моей файловой системы ubuntu, который сейчас слишком низок, и все будет продолжаться. – sam 25 April 2017 в 06:15
  • 2
    Если вам не нужны данные на /dev/sda1, или если вы можете легко создать резервную копию, вам может быть проще всего создать новую установку Ubuntu на /dev/sda1. Если вы создадите резервную копию данных из текущей установки Ubuntu, вы также можете повторно использовать /dev/sda6 как что-то - возможно /var или home, в зависимости от ваших потребностей. – Rod Smith 25 April 2017 в 16:24

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

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