Просто переустановите Windows 7 и восстановите GRUB. Техника для восстановления загрузчика GRUB К счастью охвачена в Руководстве Fedora:
Во многих случаях загрузчик GRUB может по ошибке быть удален, поврежден или заменен другими операционными системами.
Следующие шаги детализируют процесс о том, как GRUB переустанавливается на главной загрузочной записи:
- Загрузитесь система от установки загружают носитель.
- Ввести
linux rescue
в установке загружают подсказку для вхождения в спасательную среду.- Ввести
chroot /mnt/sysimage
смонтировать корневой раздел.- Ввести
/sbin/grub-install *bootpart*
переустановить загрузчик GRUB, где*bootpart*
раздел начальной загрузки (обычно,/dev/sda
).- Рассмотрите
/boot/grub/grub.conf
файл, поскольку дополнительные записи могут быть необходимы, чтобы GRUB управлял дополнительными операционными системами.- Перезагрузите систему.
Лучшее и безопасное решение для установки CGManager
и запустить его с Systemctl Запуск CGManager
(на Systemd
дистрибутив). Вы можете, чем у вас root
, или если у вас есть sudo
права на хост Создать cgroups
для вашего безвисиловного пользователя во всех контроллерах с:
sudo cgm create all $USER
sudo cgm chown all $USER $(id -u $USER) $(id -g $USER)
один раз Они были созданы для вашего безвискивающегося пользователя, она / он может перемещать процессы, которые у него есть доступ к его CGRUP
для каждого контроллера, используя:
cgm movepid all $USER $PPID
безопаснее, быстрее, более надежно, чем сценарий оболочки, который я опубликовал.
, чтобы ответить 1.
for d in /sys/fs/cgroup/*; do
f=$(basename $d)
echo "looking at $f"
if [ "$f" = "cpuset" ]; then
echo 1 | sudo tee -a $d/cgroup.clone_children;
elif [ "$f" = "memory" ]; then
echo 1 | sudo tee -a $d/memory.use_hierarchy;
fi
sudo mkdir -p $d/$USER
sudo chown -R $USER $d/$USER
echo $$ > $d/$USER/tasks
done
Я был невеженен о том, что происходит именно, когда я написал этот скрипт, но чтение это и экспериментируя немного помогла мне понять, что происходит на. То, что я в основном занимаюсь в этом скрипте, состоит в том, чтобы создать новую сеанс CGUOUP
для текущего пользователя
, который является то, что я уже говорил выше. Когда я запускаю эти команды в текущем оболочке
или запустите их в скрипте и сделайте его так, чтобы он был оценен в нынешнем Shell
, а не в подразделении
(через . Сценарий
. .
. важно для этого работать!) Состоят ли я не просто открыть новый сеанс для пользователя
, но добавьте текущую оболочку как Процесс, который запускается в этой новой CGroup. Я могу добиться того же эффекта, запустив скрипт в подпульвете, а затем спускаться в иерархию
в подпгруппе
и использовать ECHO $$> задачи
Чтобы добавить текущую оболочку каждому члену иерархии CGUP
.
Следовательно, когда я бегу LXC
в этом текущем оболочке мой контейнер также станет членом всех CHB
подгруппы
, что текущий Shell
является членом. То есть мой контейнер
наследует CGGRUP
состояние моего оболочки
. Это также объясняет, почему он не работает ни в одной другой оболочке, который не является частью текущего CHB
подгруппы
S.
Я все еще прохожу на 2.
. Мы, вероятно, понадобится подождать либо для обновления Systemd
или дополнительно ядра
для создания Systemd
Systemd
, принять согласованное поведение, но я предпочитаю, как это заставляет вас понимать, что вы делаете.
На самом деле в Archlinux, это не будет работать с E.g. Непродусный пользователь (рекомендуется при использовании disev. LXC контейнеры). I.e. Этот пользователь не имеет sudo :)
вместо этого определяет группу в /etc/cgconfig.conf, активировать CGConfig, Cграйте (libcgroup в AUR), Добавляют собрание, выполненные. Пользователь также будет иметь те же права.
в SystemD 218 (я не знаю, когда, но кажется, нужно добавить еще два условия, поскольку они не устанавливаются при создании из способа CGConfig):
cat /etc/cgconfig.conf
group lxcadmin {
perm {
task {
uid = lxcadmin;
gid = lxcadmin;
}
admin {
uid = lxcadmin;
gid = lxcadmin;
}
}
cpu { }
memory { memory.use_hierarchy = 1; }
blkio { }
cpuacct { }
cpuset {
cgroup.clone_children = 1;
cpuset.mems = 0;
cpuset.cpus = 0-3;
}
devices { }
freezer { }
hugetlb { }
net_cls { }
}
cat /etc/cgrules.conf
lxcadmin * lxcadmin/
Предполагая, что пространство имен скомпилировано в ядре.
Это шаблон, CPU может быть в соответствии с тем, сколько у вас есть ядер, MEM может быть установлена на некоторое фактическое значение и т. Д.
Редактировать 2: Наконец, в SystemD, если вы хотите использовать автоматическое начало С таким безвискивым пользователем вы можете сделать:
CP /USR/LIB/Systemd/system/lxc (acadmin} @ .service, Затем добавьте пользователя = LXCADMIN
и включите его для контейнера LxCAdmin под названием LLZCADMIN @ LOLZ.
Итак, я столкнулся с той же проблемой, когда пытался заставить работать непривилегированные контейнеры LXC на CentOS 7. Я не хотел использовать cgmanager
, потому что мне не нравится внедрять дополнительные службы, если они не требуются. В итоге я поставил исправления для systemd, используя некоторые исправления из пакета ubuntu и одно собственное исправление для расширения списка контроллеров cgroup. У меня есть исходники, необходимые для сборки RPM, на моем аккаунте GitHub по адресу https://github.com/CtrlC-Root/rpmdist. У меня также есть исправленные версии shadow-utils (для subuids и subgids) и pam (для loginuid). После установки этих RPM и настройки пользователя для запуска непривилегированных контейнеров (назначение subuids и subgids, распределение veth пар в lxc-usernet, создание .config/lxc/default.conf и т.д.) я могу запускать непривилегированные контейнеры LXC просто отлично.
EDIT: Еще одна причина, по которой я не хотел использовать cgmanager, заключается в том, что я не хотел, чтобы мои обычные пользователи вообще использовали sudo. Обычные пользователи должны иметь возможность войти в систему, и все должно "просто работать" из коробки.