การบูต Native Arch Linux บนอุปกรณ์ Android


26

ฉันมี Galaxy Note 10.1 (n8010) และฉันต้องการทำให้มันเป็น Boot Linux โดยกำเนิด ฉันหมายถึง boot Arch Linux แทน android สิ่งที่ฉันต้องการคือการเปลี่ยน initramfs ซึ่งฉันไม่สามารถหาได้จากที่ไหนในโลก คำถามของฉัน:

  • ฉันจำเป็นต้องเปลี่ยนแปลงเฉพาะ initramfs หรือไม่ฉันต้องรับมือกับสิ่งอื่นด้วยหรือไม่ (เช่นเคอร์เนลตัวเอง)
  • [ทำ] ฉันจะหาผู้เริ่มต้นอย่างเป็นทางการของ CyanogenMod 10.1 ได้ที่ไหน (อาจจะเป็น github) หรือฉันต้องรวบรวมเคอร์เนลของ CyanogenMod และดึงมันออกมาจาก zImage
  • [PROBABLY] ฉันจะมีรูทลินุกซ์ Arch ภายในพาร์ติชั่นข้อมูล android ได้ไหม (เช่น / data / linux) หรือฉันต้องซื้อการ์ด SD?
  • ฉันต้องทำอะไรอีกต้องรู้ / ทำ?

แก้ไข: ฉันพบวิธีเปลี่ยน initramfs :)

  1. unzip rom (CM10.1 สำหรับ n8013 ใช้แล้ว)
  2. wget http://whiteboard.ping.se/uploads/Android/unmkbootimg.gz
  3. gunzip unmkbootimg.gz
  4. ./unmkbootimg boot.img (บันทึกคำสั่งที่กำหนดด้วย mkbootimg!)
  5. mkdir initramfs && cd initramfs
  6. gzip -cd initramfs.cpio.gz | cpio -i
  7. เปลี่ยนสคริปต์เริ่มต้น <- ทดสอบที่ตอนนี้ฉันจะโพสต์ให้ถูกต้องเมื่อทำเสร็จแล้ว
  8. หา | cpio -o -H newc | gzip> ../initramfs.cpio.gz (ไม่แน่ใจว่าคำสั่งนั้นถูกต้องหรือไม่ ... )
  9. cd ..&& ล้างไดเรกทอรีเพื่อให้มีเพียง initramfs.cpio.gz และ zImage เท่านั้น ...
  10. รันคำสั่ง mkbootimg ที่คุณบันทึกไว้ก่อน ...
  11. แฟลช boot.img ใหม่ :)

แก้ไข 2: initramfs นั้นค่อนข้างง่ายต่อการสร้างคุณเพียงแค่ติดตั้งระบบไฟล์รูท (ทั้งพาร์ติชั่นหรืออิมเมจลินุกซ์) แล้วชี้ไปที่ init ผ่านทาง symlink ภายใน initramfs

ปัญหาคือคุณต้องใช้เคอร์เนล 4.x เพื่อบู๊ตระบบใหม่ของ Arch

เพื่อให้เคอร์เนลทำงานคุณต้องใช้คอนโซลอนุกรมเพื่อดูข้อผิดพลาดและเนื้อหา เมื่อฉันสร้างเคอร์เนลฉันจะโพสต์การตั้งค่าที่ต้องการ

สำหรับผู้ที่ไม่มี mkbootimg (คุณจะได้รับโดยการรวบรวมเคอร์เนล) ฉันพบ precompiled

ลิงค์:


คุณเคยจัดการบ้างไหม? คุณสามารถใช้ ssh ผ่าน USB ตอนบูตได้หรือไม่?
Michaël

ฉันจัดการเพื่อบูตมัน มันไม่ใช่เรื่องยาก แต่สำหรับ systemd แน่นอนจะไม่เล่น (ฉันจำไม่ได้ว่าทำไม) ตัวเปลี่ยนเกมคือ UART ผ่านช่องเสียบหูฟังทำให้ทุกอย่างง่ายขึ้น (ฉันเห็นกระบวนการบูตทั้งหมด) สิ่งที่ฉันไม่ได้จัดการคือวิดีโอเอาต์พุต ... มันเป็นแค่ความเจ็บปวดและฉันก็จากไป หากคุณจัดการเพื่อให้มันใช้งานได้โปรดรายงานกลับ
dzervas

คุณมีตัวชี้ว่าคุณใช้ UART ผ่านแจ็คไหม? - ฉันต้องการใช้โทรศัพท์เก่าที่มีหน้าจอแตกเหมือนเซิร์ฟเวอร์เพลงบางประเภทดังนั้นทันทีที่ฉันมีไฟล์เสียงและฉันจะมีความสุข
Michaël

คุณเพียงแค่ต้องแตกช่องเสียบหูฟังเพิ่มตัวต้านทานและเชื่อมต่อกับตัวแปลง UART เป็น USB เข้ากับพีซีของคุณ สิ่งนั้นคือ Nexus 5 ใช้เฉพาะสิ่งนี้เท่านั้นดังนั้นฉันไม่รู้ว่า / ซึ่งโทรศัพท์เครื่องอื่นรองรับหรือไม่ ... คุณต้องค้นหา (เช่น "UART บน Nexus 4")
dzervas

คำตอบ:


4

ไม่แน่ใจว่าสิ่งนี้ช่วยได้หรือไม่ แต่เป็นวิธีการสำหรับ Arch Linux http://forum.xda-developers.com/showthread.php?t=2195778


3
ยินดีต้อนรับสู่ Unix & Linux! โดยทั่วไปเราชอบคำตอบในเว็บไซต์เพื่อให้สามารถยืนได้ด้วยตัวเอง - ลิงค์นั้นดี แต่ถ้าลิงค์นั้นเคยทำลายคำตอบควรมีข้อมูลเพียงพอที่จะยังคงเป็นประโยชน์ โปรดพิจารณาแก้ไขคำตอบของคุณเพื่อรวมรายละเอียดเพิ่มเติม ดูคำถามที่พบบ่อยสำหรับข้อมูลเพิ่มเติม
slm

ใช่! คุณถูก!! ตอนนี้ผมต้องการที่จะหาวิธีการที่จะปรับเปลี่ยนการกู้คืนเพื่อให้สามารถบูตจากพาร์ทิชัน sdcard ย ...
dzervas

-1

ฉันพบบทช่วยสอนสำหรับงานที่คล้ายกัน, วิธีติดตั้ง Ubuntu Linux บนแท็บเล็ต Android Google Nexus 7 ของคุณ , บางทีมันอาจจะปรับให้เหมาะกับโครงการของคุณ? มันใช้fastbootเพื่อปลดล็อก bootloader และรีบูตด้วย bootloader ที่แตกต่างกัน HTH ฉันไม่เคยเล่นกับ Android เลย


2
ดีอูบุนตูสำหรับโทรศัพท์ไม่ใช่ ... อูบุนตูจริง: P มันขึ้นอยู่กับ cm10 (Android "distro") ดังนั้นมันจึงเป็น Android ที่มีเลย์เอาต์ที่แตกต่างกัน ...
dzervas

เป็นการดีที่จะทราบว่าเมื่อฉันได้รับแท็บเล็ต / สมาร์ทโฟนเครื่องแรกฉันจะต้องการ Linux distro ที่คุ้นเคยติดตั้งเรียบร้อย ฉันรู้ว่านี่ไม่ใช่สิ่งที่คุณต้องการ แต่เนื่องจากไม่มีการตอบคำถามฉันหวังว่าตัวอย่าง Ubuntu นี้สามารถปรับใช้กับ Arch ได้ บางทีไฟล์ / bootloader ที่ติดตั้งโดย fastboot อาจถูกแทนที่ไหม หรือบางทีฉันอาจอยู่ในหัวของฉันที่นี่ ขอให้โชคดีและระวังด้วย!
Dan Ross

1
ไม่มีอูบุนตูใช้ Java VM ซึ่งมีจะทำอย่างไรกับการบูต ฯลฯ
dzervas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.