У меня были серьезные проблемы с действительно работающими с живым USB, а также живой DVD на новом ноутбуке без каких-либо проблем, его HD работает нормально, но я хотел пробуть системы Linux, не изменяя систему загрузки на мой HD.
Проблемы потерпели неудачу и замораживаются после часа использования или около того, например, в течение длительного загрузки. Но это означало, что я не мог просто оставить компьютер, чтобы сохранить изменения.
У меня есть теория о том, почему это произошло и неизбежно, но на самом деле не знает. Поэтому я не буду уточнить мою теорию.
Друг сказал мне, что живой CD может, по крайней мере, с Ubuntu, использоваться в «постоянном» режиме, так что после выключения и включения некоторых ваших предпочтений и т. Д. Действительно сохраняется. Но мой ноутбук на Live Fedora разбился, пытаясь скачать изображение Ubuntu .... А по второй попытке он был поврежден, поэтому я просто отказался от попытки прожить живой компакт-диск или живой USB.
Так что мой совет не делает это, кроме как временная аварийная мера.
Вот быстрый и грязный тест памяти, написанный на 'C'. Если повреждение диска связано с отказом памяти, то это можно легко проверить.
Будьте осторожны, это заблокирует ваш компьютер (с обрывом виртуальной памяти), если вы попытаетесь проверить значительно больше памяти, чем легкодоступно.
time { make -s CFLAGS="-Wall -Werror -std=c99" mymemtest && free -m && ./mymemtest && free -m && echo "PASS" || echo "FAIL" ; }
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <assert.h>
int main()
{
fprintf(stderr,"\n");
fprintf(stderr,"sizeof(int)=%ld, sizeof(void*)=%ld\n", sizeof(int), sizeof(void*) );
double TESTSIZE = 2.2; // amount of memory to test in GB
uint64_t K=1024; // used to define a GB
typedef uint64_t T;
uint64_t sizebytes=TESTSIZE*K*K*K;
uint64_t size = sizebytes/sizeof(T);
T * a = malloc(sizebytes);
assert( a != NULL );
fprintf(stderr,"sizebytes=%ld, size=%ld, chunk size=%ld, test size=%g GB\n", sizebytes, size, sizeof(T), sizebytes/(double)(K*K*K) );
fprintf(stderr,"writing...\n"); for ( uint64_t i=0; i<size; i++ ) a[i] = i;
fprintf(stderr,"checking...\n"); for ( uint64_t i=0; i<size; i++ ) assert( a[i] == (T)i );
fprintf(stderr,"writing...\n"); for ( uint64_t i=0; i<size; i++ ) a[i] = 0;
fprintf(stderr,"checking...\n"); for ( uint64_t i=0; i<size; i++ ) assert( a[i] == (T)0 );
fprintf(stderr,"writing...\n"); for ( uint64_t i=0; i<size; i++ ) a[i] = -1;
fprintf(stderr,"checking...\n"); for ( uint64_t i=0; i<size; i++ ) assert( a[i] == (T)-1 );
fprintf(stderr,"writing...\n"); for ( uint64_t i=0; i<size; i++ ) a[i] = 0x5A5A5A5A5A5A5A5AUL;
fprintf(stderr,"checking...\n"); for ( uint64_t i=0; i<size; i++ ) assert( a[i] == (T)0x5A5A5A5A5A5A5A5AUL );
fprintf(stderr,"writing...\n"); for ( uint64_t i=0; i<size; i++ ) a[i] = 0xA5A5A5A5A5A5A5A5UL;
fprintf(stderr,"checking...\n"); for ( uint64_t i=0; i<size; i++ ) assert( a[i] == (T)0xA5A5A5A5A5A5A5A5UL );
free(a);
fprintf(stderr,"\n");
return 0;
}
Я изолировал повторяющиеся проблемы с файловой системой, чтобы соотнести их с приостановкой работы ноутбука во время установки USB-диска с шифрованием LUKS. Обычно считается, что любой каталог, который я открыл в терминале, теперь пуст после возобновления работы с приостановлением. Вполне вероятно, что сохранение файла в такой каталог может привести к повреждению (но это произошло только один раз). Мое типичное решение - размонтировать диск перед тем, как приостановить работу, но иногда я забываю это сделать.
Я обнаружил, что очистка кэша исправляет файловую систему после возобновления:
sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
Все же, возможно, было бы разумно запустить синхронизацию
перед тем, как приостановить....