Jak zachować kontent RAMU po reboocie w linuxie w pewnym folderze w file systemie

0

Hej
Tak jak w tytule, mam np. folder w linuxie /var/log i jak zrobić by po reboocie kontent tego folderu był zachowany? Linux nie jest na komputerze PC więc nie mam tutaj dysku twardego tylko na pewnym boardzie jest uruchomiony i mam tylko RAM.
Co mi się udało do tej pory dowiedzieć, zaimplementować i obczaić:

  • na pewno nie można robić resetu prądowego, tylko jakiś cold reset, L2 reset czy warm reset. Np. w linuxie w kernel spejsie możesz tu się pod to podczepić w virt/kvm/arm/psci.c ze swoim resetem zastępując obecny:
case PSCI_0_2_FN_SYSTEM_RESET:
		//kvm_psci_system_reset(vcpu); //to wywalasz

		printk(KERN_INFO "before l2_reset_cpu\n");
		l2_reset_cpu(); //dajesz swoje własne wstawki asemblerowe m.in. ustawienie bitu od refreshu-ramu, wywołanie coldresetu itp.
		printk(KERN_INFO "after l2_reset_cpu\n");
		/*
		 * Same reason as SYSTEM_OFF for preloading r0 (or x0)
		 * with PSCI return value INTERNAL_FAILURE.
		 */
		val = PSCI_RET_INTERNAL_FAILURE;
		ret = 0;
		break;
  • ponadto przed resetem musisz poszukać w procesor subsystemie gdzieśtam w rejestrach pamięci RAM czy kontrolera pamięci RAM by wykonywał się auto-refresh RAMU. Ja znalazłem taki rejestr. Dodałem odpowiednią wstawkę asemblerową.
    (iohmc_ctrl_mmr_top_inst.mmr_self_rfsh_req[3:0] Name:User Self Refresh Request Description:When asserted, indicates self refresh request to the specific rank. Each bit corresponds to each rank.These bits are write clear.)

  • dowiedziałem się że w uboocie albo SPL boocie RAM jest zerowany i że niby jakoś w device tree uboota trzeba ustawić by katalog /var/log nie był zerowany, ale tego to już nie ogarniam, bo to jeszcze wchodzą pojęcia jak punkty montowania.

Ktoś mógłby pomóc czego mam szukać dalej, bo jestem w tym temacie zielony (nigdy nie miałem z tym do czynienia).

0

Jeśli masz ethernet to może NFS? Jak nie ethernet to może da się zrobić coś w guście NFSa po serialu. Generalnie jak jakieś urządzenie ci tego nie zapamięta to ciężko. No chyba że będziesz mieć gwarancję, że ani firmware ani OS ci nie nadpisze jakiegoś kawałka RAMu :)

0

Po pierwsze najważniejsze primo - jaka architektura.
A po drugie - na pewno nie ma jakiegoś innego nośnika pamięci wbudowanego do którego możliwy jest zapis? Chociażby partycja/obszar na tym skąd ładujesz?
Ogólnie to polecałbym wziąć do ręki dokumentację procesora tam jest wyłożone jak krok po kroku wszystko bootuje. Jeśli to ARM to nie są to jakieś straszne arkana magii. Jeśli na początku ładowany jest z pamięci adres lub instrukcja skoku do jakiegoś miejsca w pamięci (pardon, ale wyleciały mi z pamięci detale procesu bootowania na ARMie) jest pierwszą którą się ładuje to można coś upchnąć teoretycznie na tym samym nośniku - jeśli da się do niego pisać w obszarze między tą instrukcją a kodem bootloadera. ewentualnie za. zależy jaka jest organizacja pamięci. Jeśli jest na nim tyle miejsca.
Ogólnie to coś ostro kombinujesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1